このドキュメントで説明されているソフトウェアはサポートされていないか、拡張サポートが提供されています。
現在サポートされているリリースにアップグレードすることをお薦めします。
コンテナ内でアプリケーションを実行するには、次のようにdocker runコマンドを使用します。
[root@host ~]#docker run -i -t --name guest oraclelinux:6.8 /bin/bash
[root@guest ~]#cat /etc/oracle-release
Oracle Linux Server release 6.8 [root@guest ~]#
この例では、oraclelinux:6.8
という名前のOracle Linux 6イメージを使用して対話型のbashシェルを実行し、コンテナを提供します。 -tオプションと-iオプションを指定すると、擬似端末を使用してコンテナを対話的に実行できます。[root@host ~]
と[root@guest ~]#
はそれぞれ、ホストおよびコンテナによって表示されるプロンプトを表します。 コンテナによって表示される実際のプロンプトは異なる場合があります。
--nameオプションでは、コンテナ・インスタンスの名前guest
を指定します。 コンテナは終了時にDockerによって削除されないので、後で再起動できます。
システムにイメージがまだ存在しない場合、Dockerエンジンはdocker pull操作を実行して、次の例に示すようにDocker Hub(または指定した別のリポジトリ)からイメージをダウンロードします:
[root@host ~]#docker run -i -t --rm oraclelinux:7.0
Unable to find image 'oraclelinux:7.0' locally Pulling repository oraclelinux 073ded22ac0f: Download complete 511136ea3c5a: Download complete ad98bd7101f2: Download complete cbb192d7f4cf: Download complete Status: Downloaded newer image for oraclelinux:7.0 [root@guest /]#cat /etc/oracle-release
Oracle Linux Server release 7.0 [root@guest /]#exit
exit [root@host ~]#
コンテナの名前を指定するかわりに、--rmオプションを指定したので、コンテナは終了時にDockerによって削除され、再起動できません。
次のように、別のシェル・ウィンドウからdocker psコマンドを使用して、現在実行中のコンテナに関する情報を表示できます。
[root@host ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
768a3d7b605a oraclelinux:6.8 /bin/bash 14 minutes ago Up 14 minutes guest
IDが77bacba845e2
のguest
という名前のコンテナは、現在コマンド/bin/bash
を実行しています。 コンテナの管理には、IDよりも名前を使用する方が便利です。
コンテナで実行中のプロセスを表示するには、docker topコマンドを使用します。
[root@host ~]# docker top guest
UID PID PPID C STIME TTY TIME CMD
root 7474 1958 1 15:40 pts/2 00:00:00 /bin/bash
1.3.0以上のDockerでは、次のようにdocker execコマンドを使用して、すでに実行中のコンテナ内で追加のプロセスを実行できます。
[root@host ~]# docker exec -i -t guest bash
[root@guest ~]#
1.3.0以上のDockerでは、次のようにdocker createコマンドを使用して、コンテナを後で開始できるように設定できます。
[root@host ~]#docker create -i -t --name newguest oraclelinux:6 /bin/bash
af621dc9888019a4e8b58c5ef95e265d18c05c983761d5b8c7c046fcbf1176e0 [root@host ~]#docker start -a -i newguest
[root@newguest ~]#
docker startに-aオプションと-iオプションを指定すると、現在のシェルの標準入力、出力およびエラー・ストリームはコンテナの標準入力、出力およびエラー・ストリームにアタッチされ、また、すべてのシグナルがコンテナに転送されるようになります。
コンテナを終了するには、コンテナ内でbashコマンド・プロンプトにCtrl-D
またはexitと入力するか、docker stopコマンドを使用します。
[root@host ~]# docker stop guest
guest
docker psに-aオプションを指定すると、現在実行中または終了済のすべてのコンテナが表示されます。
[root@host ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
768a3d7b605a oraclelinux:6.8 ... ... Exited (0) 9 seconds ago guest
8a1b9b19bb70 oraclelinux:6.6 ... ... Up 38 seconds ... newguest
docker startを使用して、停止されているコンテナを再起動できます。 再アタッチ後のコンテナのコンテンツは、前回使用時のまま変更されていません。
[root@host ~]#docker start -a -i guest
[root@guest ~]#touch /tmp/foobar
[root@guest ~]#exit
[root@host ~]#docker start -a -i guest
[root@guest ~]#ls -l /tmp/foobar
-rw-r--r--. 1 root root 0 Aug 29 05:23 /tmp/foobar
コンテナでは加えられた変更はすべて保持されるので、変更の消失を懸念することなく、コンテナ内でファイルの再構成やパッケージのインストールを行えます。
同じ名前の新しいコンテナを作成できるように、コンテナを完全に削除する必要がある場合は、docker rmコマンドを使用します。
[root@host ~]# docker rm guest
guest
--rmオプションを指定してコンテナを実行すると、Dockerは該当するコンテナが存在する場合にそのコンテナを削除します。 --rmオプションと-dオプションは併用できません。
1.2.0以上のDockerでは、docker rmに-fオプションを指定すると、実行中のコンテナは削除前に強制終了されます。 以前のバージョンで同じコマンドを実行すると、コンテナは削除前に停止されます。 コンテナを安全に停止するには、docker stopを使用してください。
次のように、docker logsコマンドを使用して、コンテナ内で発生しているイベントをウォッチできます。
[root@host ~]# docker logs -f guest
...
bash-4.x# touch /tmp/foobar
bash-4.x# exit
exit
bash-4.x#
bash-4.x# ls -l /tmp/foobar
-rw-r--r--. 1 root root 0 Aug 29 05:23 /tmp/foobar
-fオプションを指定すると、コンテナ内でイベントが発生した際にコマンドによって出力が更新されます。 Ctrl-C
と入力してコマンドを終了します。
docker inspectコマンドを使用すると、コンテナに関する詳細情報をJSON形式で取得できます。 このコマンドでは、次のように構成の特定の要素を取得することもできます。
[root@host ~]# docker inspect --format='{{ .State.Running }}' guest
true