dockerにはイメージやコンテナの概念があり、それに合わせ多数のコマンドがあります。「〇〇をしたいときはどのコマンドを使うのか」、「このコマンドのオプションはどういう意味だったか」と悩むことも多いのではないでしょうか。
本記事では、dockerコマンドの一覧をもとに、それぞれのコマンドの使い方を紹介します。dockerコマンドの使い方に悩んだときには、参考頂けると幸いです。
目次
dockerコマンド一覧
コマンド | 説明 |
---|---|
docker attach | コンテナにログインする |
docker build | Dockerfileからイメージを作成する |
docker commit | コンテナからイメージを作成する |
docker create | コンテナを作成する |
docker images | イメージを確認する |
docker ps | コンテナを確認する |
docker pull | Docker Hubからイメージをダウンロードする |
docker rm | コンテナを削除する |
docker rmi | イメージを削除する |
docker run | コンテナを作成し、起動する |
docker start | コンテナを起動する |
docker stop | コンテナを停止する |
dockerコマンドの共通点
タグを指定しない場合、タグは「latest」になる
「docker pull」や「docker rmi」などのコマンドでリポジトリとタグを指定することができますが、リポジトリのみ指定して実行した場合、自動的にタグは「latest」として認識されます。
docker pull ubuntu #=> タグを指定しないため、「ubuntu:latest」として認識されます。
コンテナIDは省略しても判別できる
「docker attach」などのコマンドでコンテナIDを指定する場合、コンテナIDを省略しても自動的に判別してくれます。ただし、省略したコンテナIDが一意である必要があります。
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
af9dee97e872 ubuntu "/bin/bash" 3 days ago Up 3 days dazzling_davinci
a963b5d66658 ubuntu "/bin/bash" 3 days ago Up 3 days cocky_bose
$ docker attach af
root@af9dee97e872:~#
$ docker attach a
Error response from daemon: Multiple IDs found with provided prefix: a963b5d6665862fd672dc0c379f958e594b869863138e73b1c2850ed1158546
docker attach
コンテナにログインする
docker attach [コンテナID または コンテナ名]
docker build
Dockerfileからイメージを作成する
「-t, --tag」オプションで、リポジトリとタグを任意で付けることができます。
docker build -t [リポジトリ]:[タグ] [Dockerfileがあるパス]
docker commit
コンテナからイメージを作成する
docker commit [コンテナID または コンテナ名] [リポジトリ]:[タグ]
docker create
コンテナを作成する
オプションについては、「docker run」と同じであるため、「docker run」を参照ください。
docker create [リポジトリ]:[タグ]
docker images
イメージを確認する
docker images
docker images -q #=> 「-q」をつけることで、イメージIDのみ取得できます。
「none」のイメージのみ確認する
フィルターオプションに「dangling=true」を指定することで、「none」のイメージのみ確認できます。
docker images --filter "dangling=true"
docker ps
コンテナを確認する
オプション無しの場合は、起動中のコンテナのみ確認できます。
docker ps
docker ps -a #=> 「-a」を付けることで、すべてのコンテナを確認できます。
「Exited」のコンテナのみ確認する
フィルターオプションに「status=exited」を指定することで、「Exited」のコンテナのみ確認できます。
docker ps -a --filter status=exited
docker pull
Docker Hubからイメージをダウンロードする
docker pull [リポジトリ]:[タグ]
docker rm
コンテナを削除する
docker rm [コンテナID または コンテナ名]
docker rm -f [コンテナID または コンテナ名] #=> 「-f, --force」を付けると、起動中のコンテナも削除できます。
コンテナを一括で削除する
「docker ps」コマンドですべてのコンテナIDを取得し、コンテナを一括で削除できます。
docker rm $(docker ps -a -q)
「Exited」のコンテナのみ一括で削除する
「docker ps」コマンドのフィルターオプションを使い、「Exited」のコンテナのみを一括で削除できます。
docker rm $(docker ps -a -q --filter status=exited)
docker rmi
イメージを削除する
docker rmi [リポジトリ]:[タグ]
docker rmi -f [リポジトリ]:[タグ] #=> 「-f, --force」を付けると、コンテナが存在するイメージも削除できます。
イメージを一括で削除する
「docker images」コマンドですべてのイメージのIDを取得し、イメージを一括で削除できます。
docker rmi $(docker images -q)
「none」のイメージを一括で削除する
「docker images」コマンドのフィルターオプションを使い、「none」のイメージのみを一括で削除できます。
docker rmi $(docker images -q --filter "dangling=true")
docker run
コンテナを作成し、起動する
「docker run」はイメージの取得・コンテナを作成・コンテナを起動します。そのため、「docker pull」→「docker create」→「docker start」を順番に実行したときと同じ動作です。
オプション無しの場合は、疑似TTYの割り当てや標準入力ができないため、基本的に以下オプションを使います。
- -i, --interactive・・・コンテナのSTDINにアタッチする
- -t, --tty・・・疑似ターミナルを割り当てる
docker run -i -t [リポジトリ]:[タグ] [コマンド]
コンテナ名・ホスト名を決め、コンテナを起動する
コンテナ名を任意で付けたい場合は、「--name」オプションを使い、コンテナのホスト名を付けたい場合は、「-h または --hostname」オプションを使います。
docker run --name [コンテナ名] -h [ホスト名] -i -t [リポジトリ]:[タグ] [コマンド]
バックグラウンドでコンテナを起動する
「-d, --detach」オプションで、コンテナをバックグラウンドで起動することができます。
docker run -i -t -d [リポジトリ]:[タグ] [コマンド]
CPU・メモリのリソースを制限する
CPUは「--cpuset-cpus」オプションで、コンテナで使えるCPUの割り当てを制限できます。CPUを複数割り当てる場合は、「0-1」や「0,1」と書きます。
メモリは「-m, --memory」オプションで、メモリの容量を制限できます。メモリ容量は「1024MB」や「1GB」と書きます。
なお、デフォルトではCPU・メモリともにリソースの制限はありません。
docker run -i -t --cpuset-cpus [CPU数] [リポジトリ]:[タグ] [コマンド]
docker run -i -t -m [メモリ容量] [リポジトリ]:[タグ] [コマンド]
ホストのパスをコンテナにマウントする
「-v, --volume」オプションで、マウントするホストのパスとコンテナのパスを指定し、ホストとコンテナ間の共有フォルダを作れます。
docker run -i -t -v [ホストパス]:[コンテナパス] [リポジトリ]:[タグ] [コマンド]
docker start
コンテナを起動する
docker start [コンテナID または コンテナ名]
コンテナ起動時にログインする
「-a, --attach」オプションで、コンテナ起動時にログインできます。標準入力が必要な場合は「-i, --interactive」も合わせて付けます。なお、コンテナ作成時に疑似ターミナルの割り当てと標準入力をできるようにしておく必要があります。
docker start -a -i [コンテナID または コンテナ名]
docker stop
コンテナを停止する
docker stop [コンテナID または コンテナ名]
コンテナを一括で停止する
「docker ps」コマンドでイメージIDのみを取得し、コンテナを一括で停止できます。
docker stop $(docker ps -q)