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