Docker コマンドラインを使う¶
利用可能なコマンドを確認するには、 docker にパラメータを付けずに実行するか、docker help を実行します。
$ docker
Usage: docker [OPTIONS] COMMAND [arg...]
docker daemon [ --help | ... ]
docker [ --help | -v | --version ]
-H, --host=[]: The socket(s) to talk to the Docker daemon in the format of tcp://host:port/path, unix:///path/to/socket, fd://* or fd://socketfd.
A self-sufficient runtime for Linux containers.
...
Docker のシステム設定によっては、各 docker コマンドの前に sudo を付ける必要があるかもしれません。 docker コマンドを実行する度に sudo を実行しないようするには、システム管理者に docker という Unix グループの作成を、そこへのユーザの追加を依頼ください。
Docker のインストールや sudo 設定については、各オペレーティング・システム向けの インストール方法 をご覧ください。
環境変数¶
簡単に利用できるように、 docker コマンドラインは以下の環境変数をサポートしています。
DOCKER_CONFIGクライアントの設定ファイルの場所。DOCKER_CERT_PATH認証鍵ファイルの場所。DOCKER_DRIVER使用するグラフドライバ。DOCKER_HOSTデーモンのソケット接続先。DOCKER_NOWARN_KERNEL_VERSIONDocker に対応していない Linux カーネルで警告を出さない。DOCKER_RAMDISK‘pivot_root’ を無効に設定。DOCKER_TLS_VERIFYDocker で TLS とリモート認証を使う。DOCKER_CONTENT_TRUSTDocker でイメージの署名・確認用のために Notary 使用時に設定。これは、build、create、pull、push、run で--disable-content-trust=falseを実行するのと同等DOCKER_CONTENT_TRUST_SERVERNotary サーバが使う URL を指定。デフォルトはレジストリと同じ URL 。DOCKER_TMPDIR一時 Docker ファイルの場所。
Docker は「Go」言語で開発されているので、「Go」ランタイムが利用する環境変数も使えます。特に次のものは便利です。
HTTP_PROXYHTTPS_PROXYNO_PROXY
これら Go 言語の環境変数は大文字と小文字を区別しません。変数の詳細については Go 言語の仕様 をご確認ください。
設定ファイル¶
Docker コマンドラインは、ホームディレクトリ $HOME にある .docker ディレクトリ内に保管されている設定ファイルを、デフォルトで使います。しかし、 DOCKER_CONFIG 環境変数や --config コマンドライン・オプションを使い、異なった場所を指定できます。両方が指定された場合は --config オプションが DOCKER_CONFIG 環境変数を上書きします。例:
docker --config ~/testconfigs/ ps
ps コマンドの実行時、 ~/testconfigs/ ディレクトリにある設定ファイルで Docker に命令します。
Docker は設定ディレクトリにある大部分のファイルを管理していますので、これらを自分で変更すべきではありません。しかし、 docker コマンドの居津を制御するため、 config.json を 編集できます 。
現在、 docker コマンドの挙動を環境変数かコマンドラインのオプションで変更可能です。あるいは、オプションとして config.json を使い、同じように挙動を設定できます。これらの仕組みを使う場合は、優先順位に気を付ける必要があります。コマンドラインのオプションは環境変数で上書きされ、環境変数は config.json ファイルで指定した項目に上書きされます。
config.json ファイルは複数の属性 JSON エンコーディングで記述します。
HttpHeader 属性は、Docker クライアントがデーモンに対して送信するとき、全てのメッセージに含めるヘッダを指定します。Docker は、これらのヘッダを解釈したり理解しようとしません。つまり、単純にメッセージの中に追加するだけです。Docker は設定したヘッダ自身に対する変更を許可しません。
psFormat 属性は docker ps 出力のデフォルトの出力フォーマットを指定します。 docker ps コマンドで --format フラグが指定されなければ、Docker クライアントはこの属性を使います。この属性が設定されなければ、クライアントはデフォルトの表フォーマットに戻ります。サポートされている形式を確認するには、 docker ps ドキュメントにあるフォーマットのセクション をご覧ください。
コンテナにアタッチ後は、 CTRL-p CTRL-q キー・シーケンスで使ってデタッチできます。このデタッチ用キー・シーケンスは detachKeys 属性を使ってカスタマイズできます。カスタマイズでは <シーケンス> 値の属性を指定します。 <シーケンス> の書式は [a-Z] までの文字列をカンマ区切りにしたリストにするか、 ctrl- に以下のいずれかを組み合わせます。
a-z(小文字のアルファベット文字列)@(アット記号)[(左かっこ)\\(2つのバックスラッシュ)_(アンダースコア)^(キャレット)
Docker クライアントで起動するコンテナ全てにカスタマイズが適用されます。ユーザはコンテナごとにデフォルトのキー・シーケンスを変更可能です。ユーザが指定するには、 --detach-keys フラグを docker attach 、 docker exec 、 docker run 、 docker start コマンドで使います。
imageFormat 属性は docker ps 出力のデフォルトの出力フォーマットを指定します。 docker images コマンドで --format フラグが指定されなければ、Docker クライアントはこの属性を使います。この属性が設定されなければ、クライアントはデフォルトの表フォーマットに戻ります。サポートされている形式を確認するには、 docker images ドキュメントにあるフォーマットのセクション をご覧ください。
以下は config.json ファイルの記述例です:
{
"HttpHeaders": {
"MyHeader": "MyValue"
},
"psFormat": "table {{.ID}}\\t{{.Image}}\\t{{.Command}}\\t{{.Labels}}"
}
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
-a, --attach=[] Attach to STDIN, STDOUT or STDERR
--cpu-shares=0 CPU shares (relative weight)
...
オプションの種類¶
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つしか指定できません。