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 の基本コマンド |