docker create

読む時間の目安: 8 分

説明

コンテナーを新規生成します。

利用方法

$ docker create [OPTIONS] IMAGE [COMMAND] [ARG...]

追加説明

The docker container create (or shorthand: docker create) command creates a new container from the specified image, without starting it.

When creating a container, the docker daemon creates a writeable container layer over the specified image and prepares it for running the specified command. The container ID is then printed to STDOUT. This is similar to docker run -d except the container is never started. You can then use the docker container start (or shorthand: docker start) command to start the container at any point.

This is useful when you want to set up a container configuration ahead of time so that it is ready to start when you need it. The initial status of the new container is created.

The docker create command shares most of its options with the docker run command (which performs a docker create before starting it). Refer to the docker run command section and the Docker run reference for details on the available flags and options.

本コマンドの利用例については、以下に示す 利用例の節 を参照してください。

オプション

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

利用例

コンテナーの生成と起動

The following example creates an interactive container with a pseudo-TTY attached, then starts the container and attaches to it:

$ 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も同じです。) つまりcreateによってdataボリュームコンテナーが生成されるので、これを別のコンテナーが利用できることを意味します。

$ 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

上位コマンド

コマンド 説明
docker Docker CLI の基本コマンド