create

新しいコンテナを作成します。

使い方: docker create [オプション] イメージ [コマンド] [引数...]

新しいコンテナを作成

  -a, --attach=[]               STDIN、STDOUT、STDERR にアタッチする
  --add-host=[]                 ホストから IP アドレスのマッピングをカスタマイズして追加 (host:ip)
  --blkio-weight=0              ブロック IO ウエイト (相対ウエイト)
  --blkio-weight-device=[]      ブロック IO ウエイト (相対デバイス・ウエイト。書式: `デバイス名:ウエイト`)
  --cpu-shares=0                CPU 共有 (相対ウエイト)
  --cap-add=[]                  Linux ケーパビリティの追加
  --cap-drop=[]                 Linux ケーパビリティの削除
  --cgroup-parent=""            コンテナ用のオプション親 cgroup を指定
  --cidfile=""                  コンテナ ID をファイルに書き出し
  --cpu-period=0                CPU CFS (Completely Fair Scheduler) ペイロードの制限
  --cpu-quota=0                 CPU CFS (Completely Fair Scheduler) クォータの制限
  --cpuset-cpus=""              実行を許可する CPU (0-3, 0,1)
  --cpuset-mems=""              実行を許可するメモリ必要量 (0-3, 0,1)
  --device=[]                   ホスト・デバイスをコンテナに追加
  --device-read-bps=[]          デバイスからの読み込みレート (バイト/秒) を制限
  --device-read-iops=[]         デバイスからの読み込みレート (IO/秒) を制限
  --device-write-bps=[]         デバイスへの書き込みレート (バイト/秒) を制限 (例: --device-write-bps=/dev/sda:1mb)
  --device-write-iops=[]        デバイスへの書き込みレート (IO/秒) を制限 (例: --device-write-iops=/dev/sda:1000)
  --disable-content-trust=true  イメージの認証をスキップ
  --dns=[]                      カスタム DNS サーバの指定
  --dns-opt=[]                  カスタム DNS オプションの指定
  --dns-search=[]               カスタム DNS 検索ドメインの指定
  -e, --env=[]                  環境変数を指定
  --entrypoint=""               イメージのデフォルト ENTRYPOINT を上書き
  --env-file=[]                 ファイルから環境変数を読み込み
  --expose=[]                   ポートまたはポート範囲を露出
  --group-add=[]                参加するグループを追加
  -h, --hostname=""             コンテナのホスト名
  --help                        使い方の表示
  -i, --interactive             アタッチしていなくても STDIN を開き続ける
  --ip=""                       コンテナの IPv4 アドレス (例: 172.30.100.104)
  --ip6=""                      コンテナの IPv6 アドレス (例: 2001:db8::33)
  --ipc=""                      使用する IPC 名前空間
  --isolation=""                コンテナの分離(独立)技術
  --kernel-memory=""            Kernel メモリ上限
  -l, --label=[]                コンテナにメタデータを指定 (例: --label=com.example.key=value)
  --label-file=[]               行ごとにラベルを記述したファイルを読み込み
  --link=[]                     他のコンテナへのリンクを追加
  --log-driver=""               コンテナ用のログ記録ドライバを追加
  --log-opt=[]                  ログドライバのオプションを指定
  -m, --memory=""               メモリ上限
  --mac-address=""              コンテナの MAC アドレス (例: 92:d0:c6:0a:29:33)
  --memory-reservation=""       メモリのソフト上限
  --memory-swap=""              整数値の指定はメモリにスワップ値を追加。-1は無制限スワップを有効化
  --memory-swappiness=""        コンテナ用メモリのスワップ程度を調整。整数値の 0 から 100 で指定
  --name=""                     コンテナに名前を割り当て
  --net="bridge"   : コンテナをネットワークに接続
                                'bridge': docker ブリッジ上でコンテナ用に新しいネットワーク・スタックを作成
                                'none': コンテナにネットワーク機能を付けない
                                'container:<name|id>': 他のコンテナ用ネットワーク・スタックを再利用
                                'host': コンテナ内でホスト側ネットワーク・スタックを使用
                                'NETWORK': 「docker network create」コマンドでユーザ作成したネットワークを使用
  --net-alias=[]                コンテナにネットワーク内部用のエイリアスを追加
  --oom-kill-disable            コンテナの OOM Killer を無効化するかどうか指定
  --oom-score-adj=0             コンテナに対してホスト側の OOM 優先度を設定 ( -1000 ~ 1000 を指定)
  -P, --publish-all             全ての露出ポートをランダムならポートに公開
  -p, --publish=[]              コンテナのポートをホスト側に公開
  --pid=""                      使用する PID 名前空間
  --pids-limit=-1                コンテナの pids 制限を調整 (kernel 4.3 以上は -1 で無制限に設定)
  --privileged                  このコンテナに対して拡張権限を与える
  --read-only                   コンテナのルート・ファイルシステムを読み込み専用としてマウント
  --restart="no"                再起動ポリシー (no, on-failure[:max-retry], always, unless-stopped)
  --security-opt=[]             セキュリティ・オプション
  --stop-signal="SIGTERM"       コンテナの停止シグナル
  --shm-size=[]                 `/dev/shm` のサイズ。書式は `<数値><単位>`. `数値` は必ず `0` より大きい。単位はオプションで `b` (bytes)`k` (kilobytes)`m` (megabytes)`g` (gigabytes) を指定可能。単位を指定しなければ、システムは bytes を使う。数値を指定しなければ、システムは `64m` を使う
  -t, --tty                     疑似ターミナル (pseudo-TTY) を割り当て
  -u, --user=""                 ユーザ名または UID
  --userns=""                   コンテナのユーザ名前空間
                                'host': Docker ホストで使うユーザ名前空間
                                '': Docker デーモンのユーザ名前空間を指定するには `--userns-remap` オプションを使う
  --ulimit=[]                   Ulimit オプション
  --uts=""                      使用する UTS 名前空間
  -v, --volume=[ホスト側ソース:]コンテナ側送信先[:<オプション>]
                                ボリュームを拘束マウント。カンマ区切りで指定
                                `オプション`[rw|ro], [z|Z], [[r]shared|[r]slave|[r]private], [nocopy]
                                'ホスト側ソース' は絶対パスまたは名前の値
  --volume-driver=""            コンテナのボリューム・ドライバ
  --volumes-from=[]             指定したコンテナからボリュームをマウント
  -w, --workdir=""              コンテナ内の作業用ディレクトリを指定

docker create コマンドは、特定のイメージ上に書き込み可能なコンテナ・レイヤ(層)を作成し、特定のコマンドを実行する準備をします。それから、コンテナ ID を STDOUT (標準出力)に表示します。これは開始したことが無いコンテナに対して docker run -d する時も同様です。それから、 docker start <コンテナID> コマンドを使って、いつてもコンテナを実行できます。

コンテナが必要な時に直ちに実行できるよう、事前に設定を済ませて使えるように準備したい場合に役立ちます。新しいコンテナ作成時の初期状態を指定しました。

より詳細に関しては run セクションと Docker run リファレンス をご覧ください。

$ docker create -t -i fedora bash
6d8af538ec541dd581ebc2a24153a28329acb5268abe5ef868c1f1a261221752
$ docker start -a -i 6d8af538ec5
bash-4.2#

バージョン 1.4.0 以降では、 docker create の段階で( docker run も同様 )コンテナのボリュームが初期化されます。例えば、 データ ボリュームコンテナを create したら、他のコンテナからも利用可能になります。

$ docker create -v /data --name data ubuntu
240633dfbb98128fa77473d3d9018f6123b99c454b3251427ae190a7d951ad57
$ docker run --rm --volumes-from data ubuntu ls -la /data
total 8
drwxr-xr-x  2 root root 4096 Dec  5 04:10 .
drwxr-xr-x 48 root root 4096 Dec  5 04:11 ..

同様に、 ホスト側のディレクトリをバインドするボリューム・コンテナを作成したら、次に処理するコンテナからも利用可能になります。

$ docker create -v /home/docker:/docker --name docker ubuntu
9aa88c08f319cd1e4515c3c46b0de7cc9aa75e878357b1e96f91e2c773029f03
$ docker run --rm --volumes-from docker ubuntu ls -la /docker
total 20
drwxr-sr-x  5 1000 staff  180 Dec  5 04:00 .
drwxr-xr-x 48 root root  4096 Dec  5 04:13 ..
-rw-rw-r--  1 1000 staff 3833 Dec  5 04:01 .ash_history
-rw-r--r--  1 1000 staff  446 Nov 28 11:51 .ashrc
-rw-r--r--  1 1000 staff   25 Dec  5 04:00 .gitconfig
drwxr-sr-x  3 1000 staff   60 Dec  1 03:28 .local
-rw-r--r--  1 1000 staff  920 Nov 28 11:51 .profile
drwx--S---  2 1000 staff  460 Dec  5 00:51 .ssh
drwxr-xr-x 32 1000 staff 1140 Dec  5 04:01 docker

コンテナごとにストレージ・ドライバを指定します。

$ docker create -it --storage-opt size=120G fedora /bin/bash

この容量(size)はコンテナのルート・ファイルシステムの容量を作成時に 120GB と指定しています。ユーザはデフォルトのベース・ファイルシステムより小さな容量を指定できません。

コンテナの分離技術を指定(--isolation)

このオプションは Docker コンテナを Window 上で使う状況で役立ちます。 --isolation=<値> オプションはコンテナの分離技術を指定します。 Linux 上では、サポートしているオプションは Linux 名前空間を使う default のみです。Microsoft Windows 上では、以下の値を指定できます。

説明
default Docker デーモンの --exec-opt で指定した値を使います。 daemon に分離技術を指定しなければ、Microsoft Windows は Windows Server が動いていれば process を使います。あるいは Windows クライアントの場合は hyperv を使います。
process 名前空間の分離のみです。
hyperv Hyper-V ハイパーバイザのパーティションをベースとした分離です。

--isolation フラグに値を指定しなければ、 --isolation="default" を指定したのと同じです。