docker startコマンドの使い方(実例付)CE対応


 docker startコマンドの使い方を解説します。Docker CE ver17.12.1に対応してます。

 このコマンドは、停止状態、もしくはdocker createコマンドで作成したコンテナを起動することが出来ます。

 また、オプションを指定することによって、コンテナの標準入力や標準出力、標準エラー出力に接続することも可能です。

 それでは以下で詳細に解説いたします。

 

docker startコマンドのフォーマットとオプション

フォーマット

docker start [オプション] [コンテナ] [コンテナ...]

 

主なオプション一覧

-a
コンテナの標準出力及び標準エラー出力とDockerホストの標準出力及び標準エラー出力を接続する

-i
コンテナの標準入力とDockerホストの標準入力を接続する

■ 本記事の目次に戻る ■

docker startコマンドの主な使い方

 以下の実例は、CentOSの公式イメージにより作成したコンテナ(testvm)を使用します。コンテナは「docker create --name testvm centos init」で作成してます。

 

停止状態のコンテナや作成したコンテナを起動する

 以下のコマンドで、作成したコンテナtestvmを起動します。ここには記載しておりませんが、停止状態のコンテナも同じコマンドで起動可能です。

$ docker start testvm

 docker psコマンドでtestvmコンテナが起動していることを確認します。

$ docker ps
CONTAINER ID   IMAGE   COMMAND  CREATED        STATUS        PORTS  NAMES
75bb42d95be1   centos  "init"   19 seconds ago Up 3 seconds         testvm

 「STATUS」が「UP」と表示されてますので、起動状態であることが確認できます。

■ 本記事の目次に戻る ■

標準出力と標準エラー出力に接続してコンテナを起動する

 以下のコマンドで、「ping localhost」を実行するCentOSがベースイメージのコンテナtestvm2を作成します。

$ docker create --name testvm2 centos ping localhost

 作成したコンテナを、以下のdocker startコマンドで起動します。

$ docker start testvm2

 念のため起動確認をしておきます。

$ docker ps | grep testvm2
472c2ea7a687    centos   "ping localhost"    2 minutes ago  Up About a minute   testvm2

 名前がtestvmのコンテナが起動(Up状態)されていることが確認できました。

 コンテナ内ではpingコマンドが実行されており、コンテナ内の標準出力に、その結果が出力されている状態です。

 ここで、docker stopコマンドで、このコンテナを停止させます。

$ docker stop testvm2

 以下のコマンドで、停止したコンテナを起動してみてください。-aオプションを付けてコンテナを起動しますと、コンテナ内の標準出力をDockerホストに出力することができます。

$ docker start -a testvm2

 以下のように、pingコマンドの出力内容が表示されたと思います。

PING localhost (127.0.0.1) 56(84) bytes of data.
64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.037 ms
64 bytes from localhost (127.0.0.1): icmp_seq=2 ttl=64 time=0.028 ms
64 bytes from localhost (127.0.0.1): icmp_seq=3 ttl=64 time=0.030 ms
64 bytes from localhost (127.0.0.1): icmp_seq=4 ttl=64 time=0.057 ms
64 bytes from localhost (127.0.0.1): icmp_seq=5 ttl=64 time=0.061 ms

 「Ctrl+c」を打つと出力は止まります。するとpingコマンドが停止しますので、それと同時にコンテナtestvm2も停止します。

 再度、先ほどのdocker startコマンドを「-a」オプション付きで実行しますと、コンテナtestvm2が起動して、pingが実行されます。

 「-a」オプションを付けることによって、コンテナとDockerホストの標準出力及び標準エラー出力が接続されます。

 それによって、コンテナ内の標準出力に出力されているpingコマンドの結果が、Dockerホストの標準出力に出力され、結果として、pingコマンドの出力がDockerホスト上に表示されることになります。

■ 本記事の目次に戻る ■

標準入力に接続してコンテナを起動する

 以下のコマンドで、シェルプログラムの「bash」を実行するCentOSがベースイメージのコンテナtestvm3を作成します。

$ docker create -it --name testvm3 centos bash

 次に、docker startコマンドの「-a -i」の2つのオプションを付けてコンテナtestvm3を起動します。

$ docker start -i -a testvm3

 すると、以下のようなプロンプトに変わりました。

[root@8dd46bef316c /]#

 これは、「-a」と「-i」のオプションを付けて起動することによって、コンテナ内のbashプロセスの標準入出力とDockerホストの標準入出力が接続されて、結果として、コンテナ内で動いているbashプロセスのプロンプトがDockerホスト上に表示されたことになります。

 「exit」コマンドでシェルを終了させますと、コンテナも停止してしまいますが、再度「-a」と「-i」のオプションを付けてdocker startで起動すると、またプロンプトが表示されます。

 少し余談になりますが、通常、仮想環境とのコミュニケーションは、ネットワークポート越しにftpやsshなどのネットワークサービスを利用して行っていると思います。しかし通常では、Dockerのコンテナ内にftpやsshなどのサービスを起動しません。コンテナ内のメンテナンスなどは、コンテナ内でシェルを起動して、標準入出力を利用して行います。

 

 以上でdocker startコマンドの紹介を終わります。

 ご指摘、ご要望などが御座いましたらコメントいただけるとうれしいです。

 他のDockerコマンドの実例付紹介記事は、本サイト内の別記事「Dockerのコマンドの一覧(ver1.12対応版)(オリジナルな実例付き)」をご参照ください。

 ご訪問ありがとうございました!


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください