docker container create

内容説明コンテナーを新規に生成します。
利用方法docker container create [OPTIONS] IMAGE [COMMAND] [ARG...]
エイリアス
docker create

内容説明

docker container create (短縮形 docker create) コマンドは、指定されたイメージからコンテナーを新規生成します。 ただしコンテナーの起動は行いません。

コンテナーが生成されると Docker デーモンは指定されたイメージの上に書き込み可能なコンテナーレイヤーを生成します。 これは指示されるコマンドの実行を処理するためです。 生成後にはコンテナー ID が STDOUT に出力されます。 この動作は docker run -d のようなものですが、ただしコンテナーが起動するわけではありません。 したがってこの後に docker container start (あるいは短縮形 docker start) コマンドを実行してコンテナーを起動することになります。

このコマンドは、事前にコンテナーの設定を行っておいて、いつでも起動できるように準備しておくような使い方ができます。 新たに生成されたコンテナーの初期ステータスは created (生成済み) です。

docker create コマンドのオプションは docker run コマンド (docker create を行ってからコンテナーを起動します) のものとかなりの部分で共通しています。 利用可能なフラグやオプションについては docker run CLI リファレンス を参照してください。

オプション

オプションデフォルト内容説明
--add-hostホスト-IP マッピングのカスタム設定を追加します。(ホスト名:ip)
--annotationAPI 1.43 以上 (OCI ランタイムに受け渡された) コンテナーに注釈 (annotation) を追加します。
-a, --attachSTDIN、STDOUT、STDERR にアタッチします。
--blkio-weightブロック I/O(相対的な重みづけ)、10 から 1000、0 は無効化。(デフォルトは 0)
--blkio-weight-deviceブロック I/O 重みづけ。(相対的なデバイス重みづけ)
--cap-addLinux ケーパビリティーを追加します。
--cap-dropLinux ケーパビリティーを削除します。
--cgroup-parent任意に指定するコンテナーの親 cgroup。
--cgroupnsAPI 1.41 以上 利用する cgroup 名前空間(host|private)。
'host': Dockerホストのcgroup名前空間内でコンテナーを起動。
'private': プライベートなcgroup名前空間内でコンテナーを起動。
'': デーモンのdefault-cgroupns-modeオプションによって
設定されるcgroup名前空間を利用(デフォルト)。
--cidfileコンテナー ID をファイルに書き出します。
--cpu-countCPU カウント。(Windows のみ)
--cpu-percentCPU パーセント。(Windows のみ)
--cpu-periodCPU の CFS(Completely Fair Scheduler)間隔を制限します。
--cpu-quotaCPU の CFS(Completely Fair Scheduler)クォータを制限します。
--cpu-rt-periodAPI 1.25 以上 CPU へのリアルタイムアクセス時間をマイクロ秒で制限します。
--cpu-rt-runtimeAPI 1.25 以上 CPU へのリアルタイムアクセスランタイムをマイクロ秒で制限します。
-c, --cpu-sharesCPU 配分。(相対的な重みづけ)
--cpusAPI 1.25 以上 CPU 数。
--cpuset-cpus利用を許容する CPU 数。(0-3、0,1)
--cpuset-mems利用を許容するメモリ数。(0-3、0,1)
--deviceホストのデバイスをコンテナーに追加します。
--device-cgroup-rulecgroup がアクセス可能なデバイスリストにルールを追加します。
--device-read-bpsデバイスからの読み込み割合(秒あたりのバイト数)を制限します。
--device-read-iopsデバイスからの読み込み割合(秒あたりの I/O)を制限します。
--device-write-bpsデバイスへの書き込み割合(秒あたりのバイト数)を制限します。
--device-write-iopsデバイスへの書き込み割合(秒あたりの I/O)を制限します。
--disable-content-trusttrueイメージの検証を省略します。
--dnsカスタム DNS サーバーを設定します。
--dns-optionDNS オプションを設定します。
--dns-searchカスタム DNS 検索ドメインを設定します。
--domainnameコンテナーの NIS ドメイン名。
--entrypointイメージのデフォルト ENTRYPOINT をオーバーライドします。
-e, --env環境変数を設定します。
--env-file環境変数ファイルを読み込みます。
--exposeポートまたはポート範囲を公開します。
--gpusAPI 1.40 以上 コンテナーに追加する GPU デバイスを指定します。('all' により全 GPU)
--group-add新たに参加するグループを追加します。
--health-cmdヘルスチェックを実行するコマンド。
--health-intervalヘルスチェックの実行間隔。(ms|s|m|h) (デフォルトは 0s)
--health-retries不健康(unhealthy)であると報告するのに必要な連続失敗回数。
--health-start-intervalAPI 1.44 以上 起動時間内のヘルスチェックの実行間隔。(ms|s|m|h) (デフォルトは 0s)
--health-start-periodAPI 1.29 以上 ヘルスチェックのリトライを数え始める前の、コンテナー初期化を行う開始時間。(ms|s|m|h) (デフォルトは 0s)
--health-timeout1 つのチェック処理実行に許容する最大時間。(ms|s|m|h) (デフォルトは 0s)
--help利用方法を表示します。
-h, --hostnameコンテナーホスト名。
--initAPI 1.25 以上 コンテナー内部にて、シグナル送信と子プロセス管理を行う初期化処理を実行します。
-i, --interactiveアタッチされていなくても STDIN は開放し続けます。
--io-maxbandwidthシステムデバイスの I/O 帯域幅の上限。(Windows のみ)
--io-maxiopsシステムデバイスの IOps の上限。(Windows のみ)
--ipIPv4 アドレス。(たとえば 172.30.100.104)
--ip6IPv6 アドレス。(たとえば 2001:db8::33)
--ipc利用する IPC mode モード。
--isolationコンテナーの分離技術(isolation technology)方式。
--kernel-memoryカーネルメモリ上限。
-l, --labelコンテナーに対してメタデータを設定します。
--label-file行ごとにラベルが記述されたファイルを読み込みます。
--link別コンテナーへのリンクを追加します。
--link-local-ipコンテナーの IPv4/IPv6 によるリンクローカルアドレス。
--log-driverコンテナーにおけるログドライバー。
--log-optログドライバーオプション。
--mac-addressコンテナーの MAC アドレス。(たとえば 92:d0:c6:0a:29:33)
-m, --memoryメモリ上限。
--memory-reservationメモリのソフト上限。
--memory-swapメモリとスワップの総量を制限します。'-1' 設定時はスワップ無制限。
--memory-swappiness-1コンテナーのスワップ割合を調整します。(0 から 100)
--mountファイルシステムマウントをコンテナーにアタッチします。
--nameコンテナーに名前を割り当てます。
--networkコンテナーをネットワークに接続します。
--network-aliasネットワーク範囲内のエイリアスをコンテナーに追加します。
--no-healthcheckコンテナー固有の HEALTHCHECK を無効にします。
--oom-kill-disableOOM キラーを無効にします。
--oom-score-adjホストの OOM に対する優先順位を設定します。(-1000 から 1000)
--pid利用する PID 名前空間。
--pids-limitコンテナーの PID 制限を調整します。(-1 により無制限)
--platformAPI 1.32 以上 サーバーがマルチプラットフォームに対応している場合にプラットフォームを指定します。
--privilegedコンテナーに拡張権限を付与します。
-p, --publishホストに対してコンテナーのポートを公開します。
-P, --publish-all公開されたポートをランダムポートとして公開します。
--pullmissingイメージ生成前にプルを行います(always, missing, never)。
-q, --quietプル処理時の出力を省略します。
--read-onlyコンテナーのルートファイルシステムを読み込み専用としてマウントします。
--restartnoコンテナー終了時に適用する再起動ポリシー。
--rm終了時にコンテナーと関連する匿名ボリュームがあればそれを自動的に削除します。
--runtimeこのコンテナー向けに利用するランタイム。
--security-optセキュリティオプション。
--shm-size/dev/shm のサイズ。
--stop-signalコンテナーを停止するシグナル。
--stop-timeoutAPI 1.25 以上 コンテナー停止時の中断時間(秒単位)。
--storage-optコンテナーにおけるストレージドライバーのオプション。
--sysctlsysctl オプション。
--tmpfstmpfs ディレクトリのマウント。
-t, --tty擬似 TTY を割り当てます。
--ulimitulimit オプション。
--use-api-socket試験的 (CLI) Docker API ソケットと必要な auth をバインドマウントします。
-u, --userユーザー名または UID。(記述書式: <name|uid>[:<group|gid>])
--userns利用するユーザー名前空間。
--uts利用する UTS 名前空間。
-v, --volumeボリュームをバインドマウントします。
--volume-driver任意に指定するボリュームドライバー。
--volumes-from指定されたコンテナーからボリュームをマウントします。
-w, --workdirコンテナー内部のワーキングディレクトリ。

利用例

コンテナーの生成と起動

以下の例は、疑似 TTY をアタッチして対話操作を可能にしたコンテナーを生成します。 そしてコンテナーを起動し疑似 TTY をアタッチします。

$ docker container create -i -t --name mycontainer alpine
6d8af538ec541dd581ebc2a24153a28329acb5268abe5ef868c1f1a261221752

$ docker container start --attach -i mycontainer
/ # echo hello world
hello world

上の例は以下の docker run を実行した場合と同じです。

$ docker run -it --name mycontainer2 alpine
/ # echo hello world
hello world

ボリュームの初期化

コンテナーボリュームは docker create 処理内において初期化されます (docker run でも同じです)。 たとえば以下はボリュームコンテナー datacreate し、それを別コンテナーから利用します。

$ 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 ..

同じようにして、ホストディレクトリをバインドマウントしたボリュームコンテナーを create します。 そして次のコンテナーからそれを利用します。

$ 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