呪文集¶
プログラム 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>]¶
条件に基づいて指定を絞り込む。キー単体、またはキーと値の対で指定する。コマンド一つでこのオプションを複数指定することが可能で、その場合にはすべての条件が真である対象が採用される。
よく出てくる絞り込み名:
idlabelname
このオプションを使いこなせると手練れに見える。
- --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 postgresPostgres コンテナーがバックグラウンドで起動し、ホストポート 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 redisRedis コンテナーを起動し、先に作成したネットワーク
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 nginxTODO: おそらく read-write モードの例
呪文表 exec¶
コマンド container exec の別名。呪文表 container exec を参照しろ。
呪文表 ps¶
コマンド container ls の別名。呪文表 container ls を参照しろ。
呪文表 build¶
docker image build [OPTIONS] PATHDockerfile と 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 PythonPython に関係するであろう、公式イメージを検索する。
docker search --filter=stars=3 sqlSQL に関係するであろうイメージで、ランク 3 かそれ以上のものを検索する。
呪文表 version¶
docker versionDocker バージョン情報を出力する。
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¶
コンテナーを運営するためのコマンド。
docker 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 shMySQL コンテナーである
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 -pMariaDB コンテナーで 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 --filter 用例¶$ 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 はサブコマンドで構成されている:
docker 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¶$ 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¶$ 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_nameDocker 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 bridgebridgeと呼ばれるネットワークの詳細を表示する。
このコマンドでもオプション --format が使える。
呪文表 network ls¶
docker network ls現在の Docker ホスト上の既存のコンテナーネットワークを表示する。既存というのは、デーモンが知っているネットワークすべてということだ。クラスター内のホスト複数にまたがるネットワークも含む。
docker network ls --no-truncID を切り捨てずに出力する。
docker network ls --filter driver=bridgeネットワークドライバーが
bridgeと合致するものを一覧する。docker network ls --filter id=95e74588f40dID を指定して一覧する。存在さえすれば、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¶$ 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¶
docker 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-datalog-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>ログパスを出力する。