Docker実行と作成


92

コマンドdocker rundocker createコマンドの違いは何ですか?

私は通常使用しますrunが、ときどきドキュメントに表示されcreateます。

Dockerの--help指示

create    Create a new container
run       Run a command in a new container

runコマンドを新しいコンテナーに渡す必要があるときに使用されるということですか?その時の目的は何createですか?

回答:


104

ドッカーのドキュメントから

docker createコマンドは、指定されたイメージ上に書き込み可能なコンテナーレイヤーを作成し、指定されたコマンドを実行する準備をします。次に、コンテナIDがSTDOUTに出力されます。これは、コンテナーが起動されないことを除いて、docker run -dに似ています。その後、docker startコマンドを使用して、任意の時点でコンテナーを開始できます。

これがある場合に便利あなたがしたいコンテナ設定の設定を控え 、時間のあなたがそれを必要なときに開始する準備ができているように。新しいコンテナの初期ステータスが作成されます。


2
類似性を強調し、--run(単に--detach、--detach鍵、および--sigプロキシを添加して)--createすべて同じ引数を受け取り、参照docs.docker.com/v17.09を/ engine / reference / commandline / run /…
Marvin

113

技術的には、docker run= docker create+ docker start


40
実際、私はこれを学ぶのに数時間費やしましたdocker run= docker create+ docker start+ docker attach。なしattachでは、開始されたコンテナはバックグラウンドで実行されます
webbower

19

1
Uは「docker runはコンテナーを作成し(docker createと同じ)、それを実行します。」と書きました。<---循環定義、およびexecとstartの違い、および「実行」と呼ぶものを確立していません。(そして、あなたがdocker runでrunの定義を見ると「それを実行する」と言うと、それは作成と実行を意味するので、無限の数になってしまいます。 「それを実行する」..しかし、「実行する」とexecおよびstartを区別する必要があります。つまり、startとexecまたは単に開始することを意味します。おそらく-dは、execを開始しないことを意味します。-dなしではstartとexecが実行されます
barlop 2018

8

他の答えはこれでカバーされていますが、私は同等のシェルコマンドラインを表示すると思いました。

$ docker run myimage

と同じです

$ docker start -a $(docker create myimage)

ここでdocker createは、名前付きイメージからコンテナーを作成し、作成されたコンテナーIDを出力し、docker startそのIDでコンテナーを開始するために使用されます。この-aオプションにより、ターミナルがアタッチされ、コンテナがフォアグラウンドで実行されるようになりますdocker run。これはのデフォルトの動作です。

作成されたが開始されていないコンテナにはCreatedステータスがあります。これはで確認できますdocker container ls -a


6

私はdockerに慣れていないので、いじってみました。

私の見解は、基本的にdocker runは次のことを行うということです:(次の順序で)docker createdocker startdocker attach、それは'run'コマンドを実行した直後にアクティブシェルにアタッチされるためです。


1
私があなたの答えに気づく前に、これについて上記のコメントを投稿しただけです。私はこれを1時間ほど前に見ていたと思います。
webbower

-3

Docker runは、基本的にはコンテナーでコマンドを実行するためのものです。

docker run -it <Container Name> /bin/bash

上記はbashターミナルを作成するためのものです。そして、コンテナーでbashコマンドを使用します。

Docker createは、Dockerイメージからコンテナを作成することです。

docker create -d /var/lib:/var/lib --name docker-ubuntu ubuntu

上記は、イメージ「ubuntu」から「docker-ubuntu」という名前のコンテナをドッカーに作成するためのものです


1
docker run -it <Container name>/ bin / bashを実行しなくても実行できます。たとえば、rubyはirbと呼ばれる実行可能ファイルを自動実行します。また、-dを実行することもできます。これは、ログオンしないdockersamples / static-siteで行われます。だから私はそれはexecをしないと思いますが、それはそれを開始するだけです。
barlop

'docker run'を使用すると、コンテナーが既に作成されている場合に実行でき、作成されていない場合は実行できます
Sergii Getman
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.