Docker コマンドラインを使う¶
docker¶
利用可能なコマンドを一覧表示するには、パラメータを付けずに docker を実行するか、docker help を実行します。
$ docker
Usage: docker [OPTIONS] COMMAND [ARG...]
docker [ --help | -v | --version ]
A self-sufficient runtime for containers.
Options:
--config string Location of client config files (default "/root/.docker")
-c, --context string Name of the context to use to connect to the daemon (overrides DOCKER_HOST env var and default context set with "docker context use")
-D, --debug Enable debug mode
--help Print usage
-H, --host value Daemon socket(s) to connect to (default [])
-l, --log-level string Set the logging level ("debug"|"info"|"warn"|"error"|"fatal") (default "info")
--tls Use TLS; implied by --tlsverify
--tlscacert string Trust certs signed only by this CA (default "/root/.docker/ca.pem")
--tlscert string Path to TLS certificate file (default "/root/.docker/cert.pem")
--tlskey string Path to TLS key file (default "/root/.docker/key.pem")
--tlsverify Use TLS and verify the remote
-v, --version Print version information and quit
Commands:
attach Attach to a running container
# […]
説明¶
Docker のシステム構成によっては、それぞれの docker コマンドの前に sudo を付ける必要があるかもしれません。 docker コマンドを実行する度に sudo を実行しないようするには、システム管理者は docker という Unix グループを作成し、そこへのユーザを追加できます。
Docker のインストールや sudo 設定については、各オペレーティング・システム向けの インストール方法 をご覧ください。
環境変数¶
以下は、 docker コマンドラインでサポートされている環境変数の一覧です。
変数 |
説明 |
|---|---|
|
デバッグ用に通信時の API バージョンを上書き(例: |
|
|
|
クライアント設定ファイルの場所 |
|
使用する Notary サーバの URL。デフォルトはレジストリと同じ URL |
|
Docker が Notary を使ってイメージの署名と確認をする場合に指定。 build、 careate、 pull、 push 、 run 用の |
|
使用する |
|
コマンドを扱うデフォルトのプラットフォームで、 |
|
これを指定すると、Docker は「レガシーな」(過去の)トップレベルコマンド( |
|
接続しようとするデーモンのソケット |
|
|
|
Docker で TLS を使い、リモート認証をする時に指定。この変数は、 |
|
構築 に |
Docker は Go 言語で開発されているので、 Go ランタイムが利用する環境変数も使えます。特に次のものは便利です。
HTTP_PROXYHTTPS_PROXYNO_PROXY
これら Go 言語の環境変数は大文字と小文字を区別しません。変数の詳細については Go 言語の仕様 をご確認ください。
設定ファイル¶
Docker コマンドラインは、ホームディレクトリ $HOME にある .docker ディレクトリ内に保管されている設定ファイルを、デフォルトで使います。
Docker は設定用ディレクトリ内にある大部分のファイルを管理しますので、自分ではこれらを変更すべきではありません。しかしながら、 docker コマンドの挙動については config.json ファイルによって詳細に調整できます。
環境変数やコマンドラインのオプションによって、 docker コマンドの挙動を変更可能です。また、オプションとして config.json でも同様にいくつかの挙動を変更できます。環境変数と --config フラグが指定された場合、環境変数よりもフラグが優先されます。コマンドラインのオプションは環境変数による属性を上書きするだけでなく、 config.json ファイルで指定した
.docker ディレクトリの変更¶
異なるディレクトリを指定するには、 DOCKER_CONFIG 環境変数か --config コマンドライン・オプションを使います。両方の指定がある場合、 --config オプションが DOCKER_CONFIG 環境変数を上書きします。以下の例は、 ~/testconfigs/ ディレクトリに置かれている config.json ファイルを使って、 docker ps コマンドを上書きします。
$ docker --config ~/testconfigs/ ps
このフラグが適用できるのは、対象コマンドの実行時のみです。設定を維持し続けたい場合は、シェル上(例 ~/.profile や ~/.bashrc )で環境変数 DOCKER_CONFIG を指定してください。以下の例は HOME/newdir/.dokcer を新しいディレクトリとして指定します。
$ echo export DOCKER_CONFIG=$HOME/newdir/.docker > ~/.profile
Docker CLI 設定ファイル( config.json )の属性¶
デフォルトでは、設定ファイルは ~/.docker/config.json に保管されます。異なる場所を使うには、
警告
~/.docker 設定ディレクトリ内の設定ファイルと他のファイルには、プロキシの認証情報や、証明書ストア関連、イメージレジストリの証明書といった、機微情報を含む可能性があります。他人と設定ファイル内容を共有する前にレビューを行い、バージョン管理システムにファイルをコミットするのを防いでください。
--format フラグの指定が無い場合、いくつかのコマンドは、以下のフィールドによってデフォルトの出力をカスタマイズできます。
説明 |
|
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
HTTP ヘッダの調整¶
HttpHeader 属性は、Docker クライアントがデーモンに対して送信するとき、全てのメッセージに含めるヘッダを指定します。Docker は、これらのヘッダを解釈したり理解しようとしません。つまり、単純にメッセージの中に追加するだけです。Docker は設定したヘッダ自身に対する変更を許可しません。
認証情報ストアのオプション¶
属性 credsStore は、デフォルトの証明書ストアを提供する、外部のバイナリを指定します。この属性を指定すると、 docker login は、 $PATH 上に見える docker-credentail-<value> で指定したバイナリに、認証情報の保管を試みます。この属性を指定しなければ、認証情報は設定上の auths 属性に保管されます。詳しい情報は docker login ドキュメントの
属性 credsHelpers は、指定のレジストリに対する認証情報の保管・収集時、 credSotre や auths よりも優先して使う docker-credential-<value> バイナリの利用を試みます。詳しい情報は docker login ドキュメントの
docker stack 用のオーケストレータ・オプション¶
属性 stackOrchestrator は、 docker stack 管理コマンドの実行時に使われる、デフォルトのオーケストレータを指定します。有効な値は "swarm" 、 "kubernetes" 、 "all" です。kの属性は DOCKER_STACK_ORCHESTRATOR 環境変数や、 --orchestrator フラグで上書きできます。
コンテナ用のプロキシ設定を自動化¶
属性 proxies は、コンテナ上へ自動的にプロキシ環境変数を設定します。また、コンテナを docker build する時の、 --build-arg にも設定できます。プロキシの "default" を設定すると、クライアントが接続する、あらゆる docker デーモンに対して適用するか、ホスト(docker デーモン)ごとの設定で適用します。設定は “https://docker-daemon1.example.com” のようにします。以下の属性が、各環境で設定できます。
説明 |
|
|---|---|
|
コンテナに対する |
|
コンテナに対する |
|
コンテナに対する |
|
コンテナに対する |
警告
プロキシ設定には機微情報を含む場合があります(たとえば、プロキシで認証が必要な場合)。環境変数はコンテナの設定に平文として保管されるため、リモート API を通した調査や、 docker commit を使ったイメージのコミット時に調査される可能性があります。
コンテナからデタッチするデフォルトのキー手順¶
コンテナにアタッチ後は、 CTRL-p CTRL-q キー・シーケンスで使ってデタッチできます。このデタッチ用キー・シーケンスは detachKeys 属性を使ってカスタマイズできます。カスタマイズでは <シーケンス> 値の属性を指定します。 <シーケンス> の書式は [a-Z] までの文字列をカンマ区切りにしたリストにするか、 ctrl- に以下のいずれかを組み合わせます。
a-z(小文字のアルファベット文字列)@(アット記号)[(左かっこ)\\(2つのバックスラッシュ)_(アンダースコア)^(キャレット)
Docker クライアントで起動するコンテナ全てにカスタマイズが適用されます。ユーザはコンテナごとにデフォルトのキー・シーケンスを変更可能です。ユーザが指定するには、 --detach-keys フラグを docker attach 、 docker exec 、 docker run 、 docker start コマンドで使います。
CLI プラグインのオプション¶
属性 plugin には CLI プラグインに対する設定を含みます。キーはプラグイン名で、値にはオプションを割り当てます。いずれもプラグインによって指定されているものです。
設定ファイル例¶
以下は、様々な形式のフィールドを利用する config.json ファイルの例です。
{
"HttpHeaders": {
"MyHeader": "MyValue"
},
"psFormat": "table {{.ID}}\\t{{.Image}}\\t{{.Command}}\\t{{.Labels}}",
"imagesFormat": "table {{.ID}}\\t{{.Repository}}\\t{{.Tag}}\\t{{.CreatedAt}}",
"pluginsFormat": "table {{.ID}}\t{{.Name}}\t{{.Enabled}}",
"statsFormat": "table {{.Container}}\t{{.CPUPerc}}\t{{.MemUsage}}",
"servicesFormat": "table {{.ID}}\t{{.Name}}\t{{.Mode}}",
"secretFormat": "table {{.ID}}\t{{.Name}}\t{{.CreatedAt}}\t{{.UpdatedAt}}",
"configFormat": "table {{.ID}}\t{{.Name}}\t{{.CreatedAt}}\t{{.UpdatedAt}}",
"serviceInspectFormat": "pretty",
"nodesFormat": "table {{.ID}}\t{{.Hostname}}\t{{.Availability}}",
"detachKeys": "ctrl-e,e",
"credsStore": "secretservice",
"credHelpers": {
"awesomereg.example.org": "hip-star",
"unicorn.example.com": "vcbait"
},
"plugins": {
"plugin1": {
"option": "value"
},
"plugin2": {
"anotheroption": "anothervalue",
"athirdoption": "athirdvalue"
}
},
"proxies": {
"default": {
"httpProxy": "http://user:pass@example.com:3128",
"httpsProxy": "https://my-proxy.example.com:3129",
"noProxy": "intra.mycorp.example.com",
"ftpProxy": "http://user:pass@example.com:3128",
"allProxy": "socks://example.com:1234"
},
"https://manager1.mycorp.example.com:2377": {
"httpProxy": "http://user:pass@example.com:3128",
"httpsProxy": "https://my-proxy.example.com:3129"
}
}
}
実験的機能 ¶
実験的機能により、今後追加されるプロダクト機能に
Docker 20.10 からは、デフォルトでは実験的 CLI 機能は有効であり、有効化する設定は不要です。
Notary¶
自身で Notary サーバを使っている場合で、もしも自己証明の証明書や、内部の証明機関を使っているのであれば、docker 設定ディレクトリにある tls/<レジストリのURL>/ca.crt 証明書を置き換える必要があります。
あるいは、自分の証明書を信頼できるようにするためには、自分のシステム上のルート証明機関一覧に証明書を追加する方法もあります。
使用例¶
あらゆるコマンドでヘルプ一覧を表示するには、実行するコマンドの後に --help オプションを付けます。
$ docker run --help
Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
Run a command in a new container
Options:
--add-host value Add a custom host-to-IP mapping (host:ip) (default [])
-a, --attach value Attach to STDIN, STDOUT or STDERR (default [])
<...>
1文字のコマンドラインのオプションは、連結できます。 docker run -i -t --name test busybox sh は、 docker run -it -name test busybox sh に書き換えられます。
ブール値¶
ブール値のオプションとは -d=false のような形式です。何らかのフラグを設定 しない 場合のデフォルト値は、ヘルプテキストで確認できます。ブール値にフラグ値を指定しなければ、デフォルト値に関係なくフラグは true になります。
例えば、 docker run -d を実行すると、値は true になります。そのため、コンテナは「デタッチド」モードとしてバックグラウンドで動作します。
オプションのデフォルトは true (例: docker build --rm=true )ですが、デフォルトではない値を指定するには false を明示します。
$ docker build --rm=false .
複数回の指定¶
-a=[] のようなオプションは、コマンドライン上で複数回使えます。例えば、次のようなコマンドです。
$ docker run -a stdin -a stdout -i -t ubuntu /bin/bash
$ docker run -a stdin -a stdout -a stderr ubuntu /bin/ls
オプションによっては、 -v のように複雑になる場合もあります。
$ docker run -v /host:/container example/mysql
注釈
pty 実装に限界があるため、 -t と -a stderr オプションを同時に使わないでください。 pty モードの stderr (標準エラー出力)は、単純に stdout (標準出力)になります。
文字列と整数¶
--name="" のように文字が含まれるオプションは、1つしか指定できません。 -c=0 のように整数の場合も、1つしか指定できません。