Docker基本コマンドまとめ


やること

  • Dockerの基本コマンドを使ってDockerに触れてみる。
  • 主要なコマンド(イメージの操作、コンテナの操作)を利用してみる。

基本

Dockerの基本であるイメージ取得、コンテナ作成をしてみます。

Dockerイメージ取得

docker image pull gihyodocker/echo:latest

DockerイメージからDockerコンテナを作成する

docker container run -t -p 9000:8080 gihyodocker/echo:latest
  • 9000ポートがホスト側。8080ポートがコンテナ側です。

Dockerコンテナ停止

docker container stop $(docker container ls -q)

docker container ls -qで、コンテナのCONTAINER IDを取得します。

主要なコマンド(イメージの操作、コンテナの操作)

docker image build コマンド

DockerfileをもとにDockerイメージを作成します。

docker image build -t 名前空間/イメージ名[:タグ名] Dockerfileのディレクトリパス
  • 名前空間: 他のイメージとの衝突回避の為に付けることを推奨。
オプション 説明
-t 名前をつける。ほぼ必須のオプション。
-f デフォルトのDockerfile以外を利用する場合に使用する。
Dockerfile-test を指定する場合: -f Dockerfile-test
--pull --pull=trueを指定するとdocker image build時にFROMで指定したベースイメージを強制的に再取得する。latestなどで利用。
しかし、実際の運用ではビルド時間的に不利になる為、latestのベースイメージは避けられる傾向にある。

docker search コマンド

Docker Hubに登録されているDockerレジストリを検索します。
※Docker Hubとは、Dockerレジストリと呼ばれるたくさんのイメージを集権的に管理する為のDocker社が提供しているホスティングサービスです。

docker search [options] 検索キーワード
オプション 説明
--limit 表示件数の制限。--limit 5で人気の上位5件が表示される

docker image pull コマンド

DockerレジストリからDockerイメージをダウンロードします。

docker image pull [options] リポジトリ名[:タグ名]

※タグ名は、Docker Hubに登録されているものを指定します。省略した場合は、デフォルトタグ(latestなど)が利用されます。

docker image ls コマンド

docker image pulldocker image buildでDockerホストに保持されたイメージを表示します。

docker image ls [options] [リポジトリ名[:タグ名]]

docker image tag コマンド

Dockerタグを付けて、ある特定のイメージIDをもつDockerイメージを識別しやすくするために利用します。

docker image tag 元イメージ名:[:タグ名] 新イメージ名:[:タグ名]

docker image push コマンド

DockerイメージをDocker Hubへ登録します。

docker image push [options] 名前空間/イメージ名:タグ名

docker image pushは、自分の所有または、所属しているorganizationのリポジトリにしかできない為、名前空間を必要に合わせて変更する必要があります。

pushは、docker login コマンドでログインしてから実行します。
公式サイトでアカウントを作成できます。

名前空間の変更例

docker image tagコマンドで「example」を「zamax1016」に変更する場合

$ docker image tag example/echo:latest zamax1016/echo:latest

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
example/echo        latest              1111aaaabbbb        8 months ago        733MB
zamax1016/echo      latest              1111aaaabbbb        8 months ago        733MB

docker container run コマンド

Dockerイメージからコンテナ作成、実行をします。

docker container run [options] イメージ名[:タグ名] [コマンド] [コマンド引数...]

ちょっと色々なパターン(オプション)で起動してみる

-d バックグラウンドで実行。

$ docker container run -d -p 9000:8080 example/echo:latest zamax1016/echo:latest
936d7131a0e11242788c7c8dc4a5affa4652feadc251a59f553427480daaa365

--name 名前を指定。
-p コンテナ側のポートのみ指定。ホスト側のポートは、自動的に割り振られる。

$ docker container run -d -p 8080 --name echo1 zamax1016/echo:latest
1f49a6e7912378ca1e8e6316ad2555e40e04e3dc8f048ff74e03313defee2741

$ docker container run -d -p 8080 --name echo2 zamax1016/echo:latest
e898ad44e2a6bae31f34aa2ebf8f8c03cd68aeef6e2fb64625104f8ce0b5e70e

$docker container ls
CONTAINER ID        IMAGE                   COMMAND                  CREATED             STATUS              PORTS                     NAMES
e898ad44e2a6        zamax1016/echo:latest   "go run /echo/main.go"   20 seconds ago      Up 19 seconds       0.0.0.0:32769->8080/tcp   echo2
1f49a6e79123        zamax1016/echo:latest   "go run /echo/main.go"   43 seconds ago      Up 42 seconds       0.0.0.0:32768->8080/tcp   echo1

$ curl http://localhost:32769
Hello Docker!!%

$ curl http://localhost:32768
Hello Docker!!%

-i コンテナ側の標準出力を表示し続ける。コマンド入力が可能。

$ docker image pull alpine:latest # コマンド入力の為、alpineを入れる
# -iで起動。
$ docker container run -i alpine:latest
# コマンド入力で標準出力が表示される。
echo test
test

-t ターミナル表示。

# -tで起動
$ docker container run -t alpine:latest
# ターミナルが表示された。コマンドを入力しても標準出力されない。
/ #

-it で起動してみると仮想環境にログインしたように利用できる。

$ docker container run -it alpine:latest
# ターミナルも表示され、コマンド入力で標準出力も表示される。
/ # echo test
test
/ #

docker container ls コマンド

実行中のコンテナおよび終了したコンテナの一覧を表示する。

docker container ls [options]
オプション 説明
-q コンテナIDだけを表示する
--filter --filter "name=echo"でechoを含む名前のコンテナを表示。
--filter "ancestor=zamax1016/echo"でzamax1016/echoを含むイメージを表示。
-a 終了したコンテナも含めて表示

docker container restart コマンド

一度停止したコンテナは、破棄されない限りdocker container restartで再実行ができます。

docker container restart コンテナIDまたはコンテナ名

docker container rm コマンド

停止したコンテナをディスクから完全に破棄します。

docker container rm コンテナIDまたはコンテナ名

docker container exec コマンド

実行中のコンテナでコマンドを実行します。

docker container exec [options] コンテナIDまたはコンテナ名 コンテナで実行するコマンド

docker container cp

コンテナとホスト間でのファイルのコピーができます。

# コンテナ→ホスト
docker container cp [options] コンテナIDまたはコンテナ名:コンテナ内のコピー元 ホストのコピー先

# ホスト→コンテナ
docker container cp [options] ホストのコピー先 コンテナIDまたはコンテナ名:コンテナ内のコピー元

docker container prune コマンド

停止したコンテナを一括削除できます。

docker container prune [options]

docker image prune コマンド

コンテナで実行していないイメージを一括削除できます。

docker image prune [options]

docker system prune コマンド

利用されていないコンテナ、イメージ、ボリューム、ネットワークといった全てのDockerリソースを一括削除します。

docker system prune [options]

docker container stats コマンド

利用状況の取得ができます。

docker container stats [options] [表示するコンテナID...]

参考文献