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_VERSION
Docker に対応していない Linux カーネルで警告を出さない。DOCKER_RAMDISK
‘pivot_root’ を無効に設定。DOCKER_TLS_VERIFY
Docker で TLS とリモート認証を使う。DOCKER_CONTENT_TRUST
Docker でイメージの署名・確認用のために Notary 使用時に設定。これは、build、create、pull、push、run で--disable-content-trust=false
を実行するのと同等DOCKER_CONTENT_TRUST_SERVER
Notary サーバが使う URL を指定。デフォルトはレジストリと同じ URL 。DOCKER_TMPDIR
一時 Docker ファイルの場所。
Docker は「Go」言語で開発されているので、「Go」ランタイムが利用する環境変数も使えます。特に次のものは便利です。
HTTP_PROXY
HTTPS_PROXY
NO_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つしか指定できません。