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 attachdocker execdocker rundocker 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つしか指定できません。