Docker超入門:Dockerイメージとコンテナ操作コマンドをまとめて解説!

 Dockerを日常的に使っていると、イメージやコンテナを操作するコマンドを何度も入力することになります。たくさんのコマンドがありますが、それぞれの役割をしっかり理解しておくことで効率よく操作できるようになります。ここでは、イメージとコンテナのライフサイクルを押さえながら、よく使うコマンドをまとめて解説していきます。

コンテナのライフサイクルの流れをおさらい

Dockerのコンテナは以下のステップで操作されます。

  1. イメージの取得(プル)
  2. コンテナの作成
  3. コンテナの起動
  4. コンテナの停止
  5. コンテナの削除

 つまり「イメージをもとにコンテナを作って、動かして、止めて、いらなくなったら消す」という流れになります。

主要なコマンド一覧

コマンドの種類コマンド例説明
イメージのプッシュdocker image push {DockerID}/イメージ名[:タグ名]イメージをDocker Hubやレジストリにアップロード
イメージのプルdocker image pull [オプション] イメージ名[:タグ名]レジストリからイメージをダウンロード
イメージの削除docker image rm [オプション] イメージ名ローカルの不要なイメージを削除
コンテナの作成docker create [オプション] イメージ [コマンド]イメージから新しいコンテナを作成(起動はしない)
コンテナの起動docker container start [オプション] コンテナID作成済みのコンテナを起動
コンテナの作成と起動docker container run [オプション] イメージ名[:タグ名]イメージからコンテナを作成して起動まで一気に実行
コンテナの停止docker container stop [オプション] コンテナID実行中のコンテナを停止
コンテナの削除docker container rm [オプション] コンテナIDコンテナを削除
不要リソース一括削除docker system prune未使用のイメージ、コンテナ、ネットワークをまとめて削除
コンテナの再起動docker container restart コンテナID停止中または稼働中のコンテナを再起動
コンテナの中断docker container pause コンテナIDコンテナの動作を一時停止
コンテナの再開docker container unpause コンテナID一時停止したコンテナを再開
イメージ一覧表示docker image lsローカルのDockerイメージ一覧を表示
実行中コンテナ一覧docker container ls実行中のコンテナ一覧を表示
実行中のコンテナでコマンド実行docker container exec -it コンテナ名 コマンド稼働中のコンテナで新しいプロセスを実行
実行中コンテナへ接続docker container attach コンテナ名稼働中のコンテナのターミナルに直接接続

コマンドの書式とポイント

docker image pull

docker image pull [オプション] イメージ名[:タグ名]

レジストリからイメージを取得します。タグを省略すると最新(latest)が取得されます。

docker container run

docker container run [オプション] イメージ名[:タグ名] [コマンド]

主なオプションは以下の通りです。

イメージからコンテナを作成し、すぐに起動します。日常的によく使う便利なコマンドです。

オプション説明
-dデタッチモード(バックグラウンドで起動)
-it対話モード(ターミナル操作可能)
-p ホスト:コンテナポート番号を割り当てる

exec と attach の違い

docker container exec

docker container exec -it コンテナ名 bash

 実行中のコンテナに新しいシェルを立ち上げて接続します。exitしてもコンテナ自体は止まりません。

docker container attach

docker container attach コンテナ名

 実行中のコンテナの標準入出力に接続します。exitするとコンテナ自体が停止するので注意しましょう。

まとめ

 Dockerの操作は、イメージを扱うコマンドコンテナを扱うコマンドを押さえてしまえばスムーズに使えるようになります。

  • イメージは pull → run → rm
  • コンテナは create → start → stop → rm
  • まとめて整理は system prune

この流れを理解しておけば、Dockerを使った開発や学習がグッと楽になります。