呪文集¶
プログラム docker のコマンドラインを素早く組み立てるようになるのが目標だ。
オプション¶
共通オプション¶
ここでいう共通オプションとは、次のコマンド呼び出しの形式における
[common-options]
の部分に来るコマンドラインオプションのこととする。
$ docker [common-options] <command> [command-options] <args>
- -v, --version=true|false¶
docker 自身のバージョン情報を出力して終了する。既定値は
false
.
- --help¶
引数なしで実行すると Docker コマンド一覧と共通オプションを出力して終了する。
docker command --help
の形式で実行すると Docker コマンドの使用方法を出力して終了する。
- --config=<path>¶
Docker クライアント構成ファイル(の格納されているディレクトリー)パスを指定する。既定値は
~/.docker
.
- -D, --debug=true|false¶
デバッグモードを有効にする。既定値は
false
,
- -l, --log-level="debug|info|warn|error|fatal"¶
ログ水準を指定する。既定値は
info
だ。
出力コマンドにおける頻出オプション¶
コマンド docker command ls
や docker command inspect
などに備わっているオプションをまとめておく。
- -a, --all¶
「すべて」を意味する(コマンドによって集合が異なる)。
- --digests¶
イメージにはダイジェストと呼ばれる content addressable な識別子がある。この値を出力するオプションだ。
- -f, --filter=<key>[=<value>]¶
条件に基づいて指定を絞り込む。キー単体、またはキーと値の対で指定する。コマンド一つでこのオプションを複数指定することが可能で、その場合にはすべての条件が真である対象が採用される。
よく出てくる絞り込み名:
id
label
name
このオプションを使いこなせると手練れに見える。
- --format=<template>¶
カスタムテンプレートを使って出力をフォーマットする。
table
: 列ヘッダー付きの表形式で出力する。json
: JSON 形式で出力する。TEMPLATE
: 指定された Go テンプレートを使って出力する。
- --no-trunc¶
ID などの長い文字列を出力するときに切り捨てない。
- -q, --quiet¶
ID しか出力しない。これを使ったコマンド出力を
docker command rm
の入力にする用途がある。
常用コマンド¶
私が利用したいコマンドライン群、「呪文表」を示す。チートシートとして参照に耐え得るものを用意したい。また、ヘルプ出力による用途別分類を利用させてもらう。まずは常用に区分されているコマンド集の名称を示す:
Command |
Description |
---|---|
|
Create and run a new container from an image |
|
Alias for |
|
Alias for |
|
Build an image from a Dockerfile |
|
Alias for |
|
Alias for |
|
Alias for |
|
Log in to a registry |
|
Log out from a registry |
|
Search Docker Hub for images |
|
Show the Docker version information |
|
Alias for |
呪文表 run
¶
コマンド run
実行時の基本動作は次のようなものだ:
Docker クライアントは指定のイメージをどうにかして見つけ、
そのコンテナー内部で指定コマンドを実行する。
その指定コマンドが終了するとコンテナーは終了する。
頻出オプション
- -name <container_name>, --name <container_name>¶
コンテナー識別名を指定する。他のコマンド中にハッシュ値ではなくこの名前で参照することが可能になるという利点がある。
- -d, --detach¶
バックグラウンドプロセスとしてコンテナーを稼働する(端末ウィンドウをブロックしない)。コンテナーは自身の実行に使用したルートプロセスが終了したときに終了する。ただし、
--rm
オプションとともに-d
を使用すると、コンテナーは自身かデーモンのどちらかが早い方の終了時に削除される。
- -i, --interactive¶
コンテナーの標準入力を開いておき、それを通してコンテナーに入力を送ることができるようにする。
コンテナーの入出力ストリームを擬似端末に束縛して、コンテナーの対話型端末セッションを作成するために
--tty
とともに使用されがちだ。次のオプション説明と合わせて理解する。
- -t, --tty¶
コンテナーに擬似 TTY を取り付け、端末をコンテナーの入出力ストリームに接続する。この割り当ては TTY デバイスが搭載する入出力機能とやりとりできることを意味する。
本文ではパスワード入力を要求するコンテナーで
--tty
の意義を示している。
- --rm¶
コンテナー終了時にそのファイルシステムを削除させる。短期間のフォアグランドプロセス実行時に指定しがちなオプションだ。
- -w <directory>, --workdir <directory>¶
指定されたディレクトリー内でコマンドを実行する。パスが存在しない場合はコンテナー内に自動的に作成される。
- -p <port1>:<port2>, --publish <port1>:<port2>,¶
コンテナーのポート
<port2>
をホストのポート<port1>
に束縛する。
- -P, --publish-all¶
すべての公開ポートをホストに公開する。Docker は各公開ポートをホスト上のランダムなポートに束縛する。
Dockerfile
のEXPOSE
指定やdocker run
の--expose
オプションは公開フラグが明示的に付けられたポート番号しか公開しない。
- -v <dir1>:<dir2>, --volume <dir1>:<dir2>¶
ホスト側ディレクトリー
<dir1>
をコンテナーの<dir2>
にマウントする。バインドマウントされたボリュームのホストディレクトリーが存在しない場合、 Docker が実行者に代わって
<dir1>
をホスト上に作成する。引数はコロンで区切られたフィールド三つで構成される。フィールドは正しい順序で並んでいなければならない。
名前付きボリュームの場合、最初のフィールドはボリュームの名前で、指定されたホストマシン上で唯一無二だ。匿名ボリュームの場合、最初のフィールドは省略される。
二番目のフィールドは、ファイルまたはディレクトリーがコンテナにマウントされるパスだ。
三番目のフィールドは省略可能で、
ro
などのオプションからなる CSV だ。
- --mount <mount>¶
ボリュームやホストディレクトリーをコンテナー内にマウントする。「マウントする」の意味はファイルシステム解説書を当たれ。
このオプションは
--volume
が対応しているオプションのほとんどを対応するものの、構文は異なる。本文で言われているように、
--volume
よりも--mount
を優先して使え。引数はカンマ区切りの
key=value
で構成する。それらの順序は任意。有効なキーのうち重要なものを記すと:type
でマウントの型を指定する。このオプションではbind
一択。source
でマウント元を指定する。バインドマウントの場合、Docker デーモンホスト上のパスだ。destination
はコンテナー内でファイルやディレクトリーがマウントされているパスを指定する。readonly
オプションを指定すると、バインドマウントは読み取り専用としてコンテナーにマウントされる。これは値を書かずに済む。このオプションが使用可能である場合は指定するのが望ましい。
利用者ノート
UNIX の mount のヘルプを読んでおくといいかもしれない。
- --network <network_name>¶
コンテナーをネットワークに接続する。ネットワークは後述する関連コマンドでなんとかする。
- -e <varname[=value]>, --env <varname[=value]>¶
稼働するコンテナー内部に対して環境変数を設定したり、コンテナーのイメージの
Dockerfile
で定義された変数を上書きしたりする。
- --env-file <file>¶
環境変数をファイルからロードする。ファイルの書式は変数名と値の代入文が並ぶというものだ。
呪文例
docker run alpine ls -l
コマンド
ls -l
を指定したので、Docker はディレクトリー一覧出力をコンテナー内で実行する。出力が終了するとコンテナーはシャットダウンする。docker run --name <container_name> <image_name>
イメージからコンテナーを生成、稼働する。コンテナーに独自の名前を与える。
docker run -d <image_name>
コンテナーをバックグランドで稼働する。
docker run -it --rm ubuntu bash
コンテナー
ubuntu
を端末ウィンドウから入出力を行えるように稼働して、終了時にそのファイルシステムを削除する。docker run -dt ubuntu sleep infinity
イメージ
ubuntu
に基づいて新しいコンテナーを作成し、バックグラウンドで実行し続けるために sleep を実行する。docker run -p <host_port>:<container_port> <image_name>
実行元マシンに公開するポートを指定してコンテナーを稼働する。
docker run -v $PWD:/test -w /test golangci/golangci-lint golangci-lint run
コマンドはコンテナー内の
/test
ディレクトリーで実行するものとする。docker run -d -e POSTGRES_PASSWORD=secret -p 5434:5432 --network mynetwork postgres
Postgres コンテナーがバックグラウンドで起動し、ホストポート 5434 に写され、ネットワーク
mynetwork
に接続する。docker run -d -p 8080:80 nginx
ホストポート 8080 からコンテナーポート 80 へ写す。この状態でホスト端末から localhost:8080 へアクセスすると、コンテナーの 80 にアクセスしたことになる。
docker run -p 80 nginx
ホストのいずれかのポートからコンテナーのポート 80 へ写す。
docker run -P nginx
イメージによって設定されたすべてのポートを公開する。
docker run --name=db -e POSTGRES_PASSWORD=secret -d -v postgres_data:/var/lib/postgresql/data postgres
ホスト側ディレクトリー
postgres_data
とコンテナー側ディレクトリー/var/lib/postgresql/data
にマウントして postgres をバックグランウンドで稼働する。docker run -d -p 80:80 -v log-data:/logs docker/welcome-to-docker
コンテナが実行されると、
/logs
ディレクトリーに書き込まれるすべてのファイルが、コンテナー外のこのボリュームlog-data
に保存される。コンテナーを削除し、同じボリュームを使用して新しいコンテナーを稼働してもファイルはそのまま残る。docker run --detach --publish 80:80 --name linux_tweet_app --mount type=bind,source="$(pwd)",target=/usr/share/nginx/html $DOCKERID/linux_tweet_app:1.0
マウント指定の例。
type=bind
: バインドマウントを適用し、source="$(pwd)"
: ホスト側のコマンド実行時のディレクトリーから、target=/usr/share/nginx/html
: コンテナー側の/usr/share/nginx/html
を利用可能にする。
docker run --mount type=bind,source=HOST_PATH,target=CONTAINER_PATH,readonly nginx`
マウント指定の例をもう一つ。バインドマウントを適用し、ホスト側の HOST_PATH からコンテナー側の
/usr/share/nginx/html
を利用可能にする。かつ、パスにあるファイルを読み取りと専用する。docker run -d --name redis --network sample-app --network-alias redis redis
Redis コンテナーを起動し、先に作成したネットワーク
sample-app
に取り付けてネットワーク別名を作成する。DNS lookup に便利だ。docker run -e foo=bar postgres env
コンテナー内側での環境変数
foo
を指定する。値は文字列bar
とする。docker run --env-file .env postgres env
環境変数の集合をファイル
.env
で指定する。
少し高度なオプション例
docker run --memory="512m" --cpus="0.5" postgres
コンテナーのメモリー使用量と CPU 枠を制限する。
docker run -v HOST-DIRECTORY:CONTAINER-DIRECTORY:rw nginx
TODO: おそらく read-write モードの例
呪文表 exec
¶
コマンド container exec
の別名。呪文表 container exec を参照しろ。
呪文表 ps
¶
コマンド container ls
の別名。呪文表 container ls を参照しろ。
呪文表 build
¶
docker image build [OPTIONS] PATH
Dockerfile
と context からイメージをビルドするコマンドが docker build
だ。ビルドの context とは指定されたパスや URL にあるファイルの集合だ。ビルド過程はコ
context 内のどのファイルでも参照可能だ。例えば COPY
指令を使って参照する。
既定では docker build
は context ルートにある Dockerfile
を探す。
ほとんどの場合、Dockerfile
を空ディレクトリーに置くのが最善だ。そのディレクトリーにはビルドに必要なファイルしか追加しない。ビルドの性能を上げるには、そのディレクトリーに .dockerignore
を追加して、ファイルやディレクトリーを除外することも可能だ。
頻出オプション
- -t <name>, --tag <name>¶
ビルドするイメージに対して名前とオプションでタグを指定する。両者はコロンで区切る。このコマンドラインオプションを複数することも可能。
- -f <path>, --file <path>¶
Dockerfile
を指定する。レファレンスを見るとビルドターゲットに応じてDockerfile
を分けて用意する場合に有用であるようだ。
- --build-arg [<varname>=<value>]¶
ビルド実行時変数を設定する。イメージをビルドするホストにより、変数を分けて定義したい。
Dockerfile
内のARG
指令にある変数に対して、このオプションを使ってビルド実行時に値を設定可能だ。ビルド引数それぞれに対して
--build-arg
を指定する必要がある。値を指定せずに使用する場合、デーモンはローカル環境からビルド中の Docker コンテナーに値を渡す。
- --target <stage>¶
ビルドする対象ステージを指定する。
複数のビルドステージを持つ
Dockerfile
でビルドする場合、このオプションを使用して、結果イメージの最終ステージとして中間ビルドステージを名前で指定可能だ。デーモンは対象ステージ以降のコマンドを実行しない。例えば
Dockerfile
にFROM base_image AS stage
指令がある場合、コマンドdocker build --target stage ...
が考えられる。
- -o <target>, --output <target>¶
通常、ビルド結果からローカルコンテナーイメージを生成するのだが、このオプションを指定すると、この動作を上書きしてカスタムエクスポーターを指定可能だ。カスこれにより、ビルド結果を Docker イメージではなく、ローカルファイルシステム上のファイルとしてエクスポート可能だ。
このオプションの引数の書式は CSV だ。
このオプションは対象ステージからファイルすべてをエクスポートする。
- --platform <value[,value]>¶
ビルドの対象プラットフォームを設定する。
Dockerfile
の中で--platform
フラグを持たないFROM
指令はすべてこのプラットフォーム用のベースイメージを引いてくる。既定値はビルドを実行する BuildKit デーモンのプラットフォームだ。
- --progress <auto|plain|tty|rawjson>¶
進捗出力の型を設定する。コンテナー出力を表示するには
plain
を指定する。
呪文例
docker build .
イメージを構築する。Docker に
Dockerfile
を.
から参照させる。docker build -t <image_name>
Dockerfile
からイメージを構築する。イメージ名は例えばhello:v0.1
のような文字列で指定可。docker build -t <image_name> . --no-cache
キャッシュなしで
Dockerfile
からイメージを構築する。docker build --build-arg="GO_VERSION=1.19" .
Dockerfile
にARG
指令で宣言されている変数GO_VERSION
の値を1.19
に定義してビルドする。docker build --build-arg HTTP_PROXY=url .
HTTP_PROXY
など、Dockerfile
に記されずともあらかじめ存在するビルド変数がある。docker build --tag=buildme-client --target=client .
タグ
buildme-client
を付与してイメージclient
をビルドする。docker build --target=client --progress=plain . 2> log1.txt
進捗をログファイル
log1.txt
に出力する。docker build --output=. --target=server .
対象
server
のファイルをホストファイルシステム上の現在の作業ディレクトリーにエクスポートする。docker build --target=server --platform=linux/arm/v7 .
Linux/ARM/v7 プラットフォーム用の
server
イメージを構築する。docker build -o out .
ビルドコンテキストを現在のディレクトリーとしてイメージをビルドする。そしてサブディレクトリー
out
に成果物をエクスポートする。このサブディレクトリーは必要に応じて自動的に作成される。型オプションを省略した構文を-o
オプションで使用しているため、既定のエクスポーター local が用いられる。docker build --output type=local,dest=out .
上のコマンドと等価。
docker build --output type=tar,dest=out.tar .
上のコマンドと同じ対象をビルドし、成果物ファイルを
.tar
アーカイブとしてエクスポートする。docker build -t node-docker-image-test --progress=plain --no-cache --target test .
test
ステージを対象として新しいイメージをビルドし、テスト結果を表示する。ビルド出力を表示するのは
--progress=plain
による。テストがつねに実行されるのは
--no-cache
による。test
ステージが対象であるのは--target test
による。
docker build --provenance=true --sbom=true --tag ORG/scout-demo-service:v1 --push .
認証オプション各種盛りの例。
--provenance=true
で来歴証をすべて有効にする。--sbom=true
で ソフトウェア部品証をすべて有効にする。--push
でビルド結果を自動的にレジストリーに押す。
呪文表 pull
¶
コマンド image pull
の別名。呪文表 image pull を参照しろ。
呪文表 push
¶
コマンド image push
の別名。呪文表 image push を参照しろ。
呪文表 images
¶
コマンド image ls
の別名。呪文表 image ls を参照しろ。
呪文表 login
¶
レジストリー、普通は Docker Hub にログインする。
docker login -u <username>
使用者を指定して Docker にログインする。Password のプロンプトが表示される。これに適切な入力を与えればレジストリーとやり取り可能になる。
docker login -u <username> -p PASSWORD
使用者とパスワードを両方指定してログインする。
Todo
二因子認証の場合、ログアウトしてまたログインするときの対処法を記す。
呪文表 logout
¶
レジストリーからログアウトする。
docker logout
<https://registry-1.docker.io/> にある Docker の公開レジストリーからログアウトする。
docker logout localhost:8080
ローカルホストのレジストリーからログアウトする。
呪文表 search
¶
docker search <image_name>
イメージを Docker Hub から検索する。
docker search --filter=is-official=true Python
Python に関係するであろう、公式イメージを検索する。
docker search --filter=stars=3 sql
SQL に関係するであろうイメージで、ランク 3 かそれ以上のものを検索する。
呪文表 version
¶
docker version
Docker バージョン情報を出力する。
docker version --format '{{.Server.Version}}'
サーバーバージョンを出力する。
呪文表 info
¶
コマンド system info
の別名。呪文表 system info を参照しろ。
運営コマンド¶
builder Manage builds
buildx* Docker Buildx
checkpoint Manage checkpoints
compose* Docker Compose
container Manage containers
context Manage contexts
image Manage images
manifest Manage Docker image manifests and manifest lists
network Manage networks
plugin Manage plugins
scout* Docker Scout
system Manage Docker
trust Manage trust on Docker images
volume Manage volumes
呪文表 builder
¶
docker builder prune -af
ビルドキャッシュを消去する。リビルドの直前に実行する。
呪文表 compose
¶
マルチコンテナーアプリケーションの定義および実行に対するコマンドを構成する。
docker compose down
コンテナーを完全に終了する。
docker compose down --volumes
コンテナーを完全に終了する。ボリュームをも削除する。
docker compose up
プロジェクトディレクトリーから実行することでアプリケーションを起動する。
docker compose up -d
サービスをバックグラウンドで実行したい場合はオプション
-d
を加える。docker compose up -d --build
コンテナーを開始する前にイメージをビルドし、バックグラウンドでコンテナープロセスを稼働する。
docker compose watch
,docker compose up --watch
アプリケーションをビルドして稼働し、ファイル監視モードを開始する。
docker compose ps
現在稼働中のコンテナー一覧を出力する。
docker compose rm
停止サービスコンテナーを削除する。
docker compose run server npm run test
コンテナー内のファイル
package.json
からテストスクリプトを実行する。docker compose exec redis redis-cli monitor
サービス
redis
内でコマンドredis-cli monitor
を実行する。コマンドは既定で端末を割り当てるので、対話型のプロンプトが表示される。
呪文表 container
¶
コンテナーを運営するためのコマンド。
attach Attach local standard input, output, and error streams to a running container
commit Create a new image from a container's changes
cp Copy files/folders between a container and the local filesystem
create Create a new container
diff Inspect changes to files or directories on a container's filesystem
exec Execute a command in a running container
export Export a container's filesystem as a tar archive
inspect Display detailed information on one or more containers
kill Kill one or more running containers
logs Fetch the logs of a container
ls List containers
pause Pause all processes within one or more containers
port List port mappings or a specific mapping for the container
prune Remove all stopped containers
rename Rename a container
restart Restart one or more containers
rm Remove one or more containers
run Create and run a new container from an image
start Start one or more stopped containers
stats Display a live stream of container(s) resource usage statistics
stop Stop one or more running containers
top Display the running processes of a container
unpause Unpause all processes within one or more containers
update Update configuration of one or more containers
wait Block until one or more containers stop, then print their exit codes
呪文表 container commit
¶
docker container commit [OPTIONS] <CONTAINER> [REPOSITORY[:TAG]]
コンテナーの変化からイメージを新規作成するコマンド。コンテナーのファイル変更や設定を新しいイメージにコミットすると便利で、対話型シェルを実行してコンテナーをデバッグしたり、作業中のデータセットを別のサーバーにエクスポートしたりと、いろいろなことが可能になる。
別名 commit
を使用可。
docker commit CONTAINER_ID
差分をコミットする。
docker commit -m "Add node" base-container node-base
コミットメッセージ “Add node” を与える。
docker commit -c "CMD node app.js" -m "Add app" app-container sample-app
このコマンドは
sample-app
という新しいイメージを作成するだけでなく、Dockerfile
に記述を追加することでコンテナー起動時の既定コマンドをnode app.js
に(追加的に?)設定する。
呪文表 container cp
¶
ホスト側ファイルシステムとコンテナー側のそれとでファイルをコピーする。
別名 cp
を使用可。
docker cp dvdrental.tar some-postgres:/tmp/dvdrental.tar
ホスト側作業ディレクトリーにある
dvdrental.tar
をコンテナーsome-postgres
のディレクトリー/tmp
直下に転送する。
呪文表 container diff
¶
コンテナのファイルシステム上のファイルやディレクトリーの変更を検査する。
別名 diff
を使用可。
docker diff <container ID>
これは説明を読むよりも実際に実行して出力を見るほうが理解が早い。適当なコンテナーを与えて試せ。稼働中である必要はない。
呪文表 container exec
¶
docker container exec [OPTIONS] <CONTAINER> <COMMAND> [ARG...]
稼働中のコンテナーの中でコマンドを実行する。オプションは run
と共通するものもある。
別名 exec
を使用可。
docker exec -it <container_name> command
稼働中のコンテナー container_name の内側で対話的に command を実行する。
docker exec <container_id> ls
稼働中のコンテナー container_name の内側で ls を実行する。
docker exec -it mydb sh
MySQL コンテナーである
mydb
内に対話型シェル sh が表示される。docker exec -it mydb mysql --user=root --password=$MYSQL_ROOT_PASSWORD --version
より実践的なコマンド。
docker exec my-mysql mysql -u root -pmy-secret-pw -e "SELECT * FROM mydb.myothertable;"
実践的なコマンドその二。
docker exec -it mariadbtest mariadb -p
MariaDB コンテナーで mariadb シェルを実行する。
呪文表 container kill
¶
稼働中のコンテナーにシグナルを送る。複数指定可。
docker kill container1 container2
コンテナー container1, container2 を殺す。
docker kill --signal=SIGHUP container
既定値は SIGKILL だが、シグナルをオプション
--signal
で指定することも可能。値によってはコンテナーが終了しないことに注意。
呪文表 container logs
¶
別名 logs
を使用可。
docker logs -f <container_name>
コンテナーのログを取得、追跡する。
docker logs -f --until=2s test
コンテナー
test
のログを二秒まで取得、追跡する。この例では時刻を相対的に指示している。絶対時刻指定も可能。
呪文表 container ls
¶
コンテナー一覧を示す。
別名 ps
を使用可。
docker ps
現在稼働中のコンテナーすべてを一覧する。稼働でないコンテナーは返されない。
docker ps --all
稼働中でも停止中でも、コンテナーすべてを一覧する。
docker ps --size
コンテナーそれぞれに対して、実消費量と仮想消費量の二つの容量を示す。仮想とあるのは、コンテナーで使用される読み取り専用のイメージデータと、書き込み可能なレイヤーに使用されるディスク容量の和を表す。
docker ps --filter "label=color=blue"
ラベル
color
が付いていて、かつその値がblue
であるコンテナー一覧を出力する。値を問わない場合には=blue
を指定しない。docker ps --filter "name=nostalgic"
名前に
nostalgic
を含むコンテナー一覧を出力する。docker ps -a --filter 'exited=0'
終了したコンテナー一覧を出力する。
docker ps --filter ancestor=ubuntu
最新の
ubuntu
イメージを使用しているか、その子、孫、……、コンテナーの一覧を出力する。
$ docker ps -f before=<container>
$ docker ps -f since=<container>
$ docker ps -f volume=/data --format "table {{.ID}}\t{{.Mounts}}"
$ docker ps -f publish=80
$ docker ps -f expose=8000-8080/tcp
docker ps --format "{{.ID}}: {{.Command}}"
ヘッダーのないテンプレートを使用し、稼働中のコンテナーすべてについて、コロンで区切りの ID とコマンドの登録項目を出力する。
docker ps --format "table {{.ID}}\t{{.Labels}}"
稼働中のコンテナーすべてをラベルとともに表形式で一覧表示する。
docker ps --format json
稼働中のコンテナーすべてを JSON 形式で一覧表示する。
また、オプション -q
, --quiet
で ID のみを出力することを注意する。これはコマンドパイプラインの先頭で使って docker rm
に流すというような使い方がある。次節参照。
呪文表 container rm
¶
別名 rm
を使用可。
docker rm $(docker ps --filter status=exited -q)
停止中のコンテナーすべてを削除する。
docker rm -f <container>`
コンテナーを稼働中であっても削除する。
docker rm --volumes <container>
コンテナーを関連ボリュームすべてと共に削除する。ただし、名前が指定されていたボリュームは削除しない。
呪文表 container run
¶
コマンド run
の別名。呪文表 run を参照しろ。
呪文表 container start
¶
停止しているコンテナーを稼働する。
別名 start
を使用可。
docker start <container>
既存のコンテナーを開始する。
呪文表 container stats
¶
別名 stats
を使用可。
docker stats
稼働中のコンテナーそれぞれに対する資源使用統計を標準出力に出力する。Ctrl + C で終了。
docker stats <container>
特定のコンテナーに対する統計を出力する。
docker stats nginx --no-stream --format "{{ json . }}"
コンテナー
nginx
の統計を JSON 形式で出力する。docker stats --all --format "table {{.Container}}\t{{.CPUPerc}}\t{{.MemUsage}}" container
稼働中でも停止中でも、コンテナーすべてのそれぞれに対して、カスタマイズされたフォーマットで統計を表形式で出力する。
呪文表 container stop
¶
別名 stop
を使用可。
docker stop <container>
既存のコンテナーを停止する。
呪文表 container top
¶
docker container top <container>
コンテナー <container> の実行中プロセスを表示する。
呪文表 image
¶
コマンド image
はサブコマンドで構成されている:
build Alias for ``build``
history Show the history of an image
import Import the contents from a tarball to create a filesystem image
inspect Display detailed information on one or more images
load Load an image from a tar archive or STDIN
ls List images
prune Remove unused images
pull Download an image from a registry
push Upload an image to a registry
rm Remove one or more images
save Save one or more images to a tar archive (streamed to STDOUT by default)
tag Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE
呪文表 image build
¶
コマンド build
の別名。呪文表 build を参照しろ。
呪文表 image history
¶
イメージがどのようにビルドされてきたのかという履歴を示すコマンドだ。
docker image history <image_name>
イメージのレイヤー一覧を出力する。
docker image history --no-trunc getting-started
オプション
--no-trunc
で完全な出力を得る。docker history --format "{{.ID}}: {{.CreatedSince}}" busybox
ヘッダーなしテンプレートを使い、
busybox
イメージの ID と CreatedSince 登録項目をコロンで区切って出力する。
呪文表 image inspect
¶
イメージの詳細情報を得る。
docker image inspect <image_name>
書式指定なしの場合、JSON 形式で情報を出力する。
docker image inspect --format "{{ json .RootFS.Layers }}" container
イメージ層の一覧を得る。SHA 値が羅列される。
呪文表 image ls
¶
docker image ls [OPTIONS] [REPOSITORY[:TAG]]
別名 images
を使用可。打鍵数が少ない方を選べ。
docker images
システムにあるイメージすべての一覧を出力する。トップレベルのイメージすべて、そのリポジトリーとタグ、サイズを表示する。
docker images java
リポジトリー
java
にあるイメージすべてを一覧表示する。docker images --no-trunc
完全 ID を一覧表示。
docker images --filter "dangling=true"
タグなしイメージを一覧表示する。
これに
--quiet
を加えた結果をdocker rmi
に渡す場合がある。
このコマンドもオプション --filter
が使える。
$ docker images --filter "label=com.example.version=1.0"
$ docker images --filter "before=image1"
$ docker images --filter "since=image3"
$ docker images --filter=reference='busy*:*libc'
そしてオプション --format
も使える。
$ docker images --format "{{.ID}}: {{.Repository}}"
$ docker images --format "table {{.ID}}\t{{.Repository}}\t{{.Tag}}"
$ docker images --format json
呪文表 image prune
¶
docker image prune
タグを持たず、子を持たないイメージすべてを削除する。
docker image prune -a
さらに未参照イメージすべても削除する。
docker image prune -a --force --filter "until=2017-01-04T00:00:00"
2017-01-04T00:00:00 以前に作成されたイメージを削除する。
docker image prune -a --force --filter "until=240h"
十日以上前に作成されたイメージを削除する。
呪文表 image pull
¶
別名 pull
を利用可。
端末ウィンドウで実行中に Ctrl + C を押すなどして docker pull
操作を取り消せる。
docker pull image_name
Docker Hub から指定イメージを取得し、システムに保存する。イメージにタグが指定されていない場合、
latest
タグを既定とする。
呪文表 image push
¶
別名 push
を利用可。
これもコマンド実行中に Ctrl + C を押すと操作が取り消される。
docker push <username>/<image_name>
イメージを Docker Hub に押す。
docker image push --all-tags registry-host:5000/myname/myimage
オプション
--all-tags
を付けて押すと、イメージregistry-host:5000/myname/myimage
のタグすべてが押される。
呪文表 image rm
¶
ホストノードからイメージを削除したりタグを取ったりする。イメージにタグが複数ある場合、タグを引数にしてこのコマンドを実行することでタグだけを削除する。タグが一つの場合はイメージとタグのどちらも削除することになる。
画像を参照しているタグが一つ以上ある場合は、イメージを削除する前にタグをすべて削除する必要がある。
別名 rmi
が打鍵量が最も少ない。
docker rmi <image_name>
イメージを削除する。
docker rmi -f <image_id>
指定された ID に一致するイメージのタグをすべて解除し、削除する。
呪文表 image tag
¶
docker image tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
Docker Hub などにイメージを押すために、名前とタグを用いてイメージをグループ化するためのコマンドだ。タグを指定しないと既定名 latest
が採用される。
別名 tag
を使用可。
docker tag <image_id> <image_name>
イメージにラベルを付けてバージョン管理することができる。
docker tag my-username/my-image another-username/another-image:v1
イメージに別のタグを追加できる。
docker tag 0e5574283393 fedora/httpd:version1.0
ローカルイメージ 0e5574283393 に
fedora/httpd
としてタグversion1.0
を付ける。docker tag httpd fedora/httpd:version1.0
ローカルイメージ
httpd
にタグversion1.0
付き名前fedora/httpd
を付ける。docker tag httpd:test fedora/httpd:version1.0.test
ローカルイメージ
httpd:test
に以下同文。上のコマンドの対象イメージは実際にはhttpd:latest
であることに注意しろ。docker tag 0e5574283393 myregistryhost:5000/fedora/httpd:version1.0
公衆レジストリーではなく、私設レジストリーにイメージを押すには、レジストリーのホスト名と、必要ならばポートをも指定する。
呪文表 network
¶
Command |
Description |
---|---|
|
Connect a container to a network |
|
Create a network |
|
Disconnect a container from a network |
|
Display detailed information on one or more networks |
|
List networks |
|
Remove all unused networks |
|
Remove one or more networks |
呪文表 network create
¶
利用者ノート
このコマンドは難しいので習得を諦める。
docker network create mynetwork
カスタムネットワークを新規作成する。
呪文表 network inspect
¶
ネットワークに関する情報を出力する。既定ではこのコマンドは結果を JSON 形式で表示する。
docker network inspect
コンテナーがネットワークに接続されているかどうかを確認できる。
docker network inspect bridge
bridge
と呼ばれるネットワークの詳細を表示する。
このコマンドでもオプション --format
が使える。
呪文表 network ls
¶
docker network ls
現在の Docker ホスト上の既存のコンテナーネットワークを表示する。既存というのは、デーモンが知っているネットワークすべてということだ。クラスター内のホスト複数にまたがるネットワークも含む。
docker network ls --no-trunc
ID を切り捨てずに出力する。
docker network ls --filter driver=bridge
ネットワークドライバーが
bridge
と合致するものを一覧する。docker network ls --filter id=95e74588f40d
ID を指定して一覧する。存在さえすれば、ID の部分だけを指定して通じる。
docker network ls -f "label=usage"
ラベルフィルターはラベルと値の存在に基づいてネットワークを一覧する。ラベル
usage
を持つネットワークを一覧する。その値は何でもかまわない。docker network ls -f "label=usage=prod"
これは値の合致まで求める。
docker network ls --filter name=foo
名前に
foo
を含むネットワークを一覧する。docker network ls --filter type=custom -q
使用者定義のネットワークすべての ID を出力する。これを
docker network rm
の入力としてネットワークを一掃する場合がある。
オプション --format
がある。
$ docker network ls --format "{{.ID}}: {{.Driver}}"``
$ docker network ls --format json``
呪文表 network rm
¶
ネットワークを削除するコマンドだが、ネットワークを削除するには、まずそのネットワークに接続しているコンテナーをすべて切断する必要がある。
docker network rm <network>
ネットワークを削除する。
docker network rm 3695c422697f my-network
一度の実行で複数削除する。どれか削除に失敗しても残りのネットワークの削除を試みる。
呪文表 scout
¶
これは高級なコマンドなので後回しとする。
docker scout repo enable ORG/scout-demo-service
リポジトリー上で Docker Scout を有効にする。
docker scout cves --only-cve-id CVE-2022-24999
イメージの脆弱性を表示する。CVE-2022-24999 という CVE を確認する。
docker scout cves --only-cve-id CVE-2022-24999 --vex-location .
--vex-location
フラグを使うと VEX 文書を含むディレクトリーを指定できる。
呪文表 system
¶
df Show docker disk usage
events Get real time events from the server
info Display system-wide information
prune Remove unused data
呪文表 system info
¶
システム全体の情報を得るコマンド。
別名 info
を使用可。
docker info
システム全体の情報を表示する。
docker info --format '{{json .}}'
それを JSON 書式で出力する。
呪文表 volume
¶
|
Create a volume |
---|---|
|
Display detailed information on one or more volumes |
|
List volumes |
|
Remove unused local volumes |
|
Remove one or more volumes |
|
Update a volume (cluster volumes only) |
呪文表 volume create
¶
docker volume create log-data
log-data
という名前のボリュームを作成する。後続するdocker run
コマンドに-v log-data:path
の形の引数を与えて実行する。
呪文表 volume inspect
¶
docker volume inspect <volume>`
データをどこに保存しているのかなど、ボリュームの構成を出力する。
呪文表 volume ls
¶
docker volume ls
ボリュームすべてを一覧する。
docker volume ls -f dangling=true
どのコンテナーからも参照されていないボリュームを一覧する。
docker volume ls -f driver=local
ドライバー
local
で作成されたボリュームを一覧する。docker volume ls --filter label=is-timelord
ラベル
is-timelord
を有するボリュームを一覧する。値は何でもかまわない。docker volume ls --filter label=is-timelord=yes
ラベル
is-timelord
を有し、かつ値がyes
に合致するボリュームを一覧する。docker volume ls -f name=rose
名前に指定文字列を含むボリュームを一覧する例。
例によってオプション --format
が備わっている。
呪文表 volume prune
¶
docker volume prune
未使用の(どのコンテナーにも付属していない)ボリュームすべてを削除する。匿名ボリュームのみ。
docker volume prune -a
匿名ボリュームも込めてすべて削除する。
オプション --filter
が備わっている。
呪文表 volume rm
¶
docker volume rm <volume-name-or-id>
ボリュームを削除する。ボリュームがどのコンテナーにも付属していない場合にのみ機能する。ボリュームを削除する前にそれをコンテナーから取り外す必要がある。
Swarm コマンド¶
config Manage Swarm configs
node Manage Swarm nodes
secret Manage Swarm secrets
service Manage Swarm services
stack Manage Swarm stacks
swarm Manage Swarm
利用者ノート
高度なコマンドゆえ、基本ができてからの後回しにする。
無印コマンド¶
ほとんどは別のコマンドの別名であり、おそらく打鍵効率の便宜上設けられているものと考えられる。実際、環境変数 DOCKER_HIDE_LEGACY_COMMANDS
を設定しておくとコマンド docker --help
などの出力から下記の一覧出力が省かれる。
Command |
Description |
---|---|
|
Alias for |
|
Alias for |
|
Alias for |
|
Alias for |
|
Alias for |
|
Alias for |
|
Alias for |
|
Alias for |
|
Alias for |
|
Alias for |
|
Return low-level information on Docker objects |
|
Alias for |
|
Alias for |
|
Alias for |
|
Alias for |
|
Alias for |
|
Alias for |
|
Alias for |
|
Alias for |
|
Alias for |
|
Alias for |
|
Alias for |
|
Alias for |
|
Alias for |
|
Alias for |
|
Alias for |
|
Alias for |
|
Alias for |
|
Alias for |
呪文表 inspect
¶
Docker オブジェクトの低水準情報を出力するコマンド。通常は JSON 形式で出力する。
docker inspect <container>
稼働中のコンテナーを検査する。
docker inspect --type=volume myvolume
名前が
myvolume
であるボリュームの情報を出力する。docker inspect --size mycontainer
コンテナー専用オプション。
このコマンドはオプション --format
が備わっている。かなり簡単な方法で任意のフィールドを JSON から引き出すことができる。
docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' <INSTANCE>
IP アドレスを出力する。
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' mariadbtest
その例。MariaDB コンテナーの IP アドレスを得る。
docker inspect --format='{{range .NetworkSettings.Networks}}{{.MacAddress}}{{end}}' <INSTANCE>
MAC アドレスを出力する。
docker inspect --format='{{.LogPath}}' <INSTANCE>
ログパスを出力する。