Docker の使い方(その2:コンテナ)
前回、「Docker の使い方(その1:概要)」の続きです。今回はコンテナについてです。
コンテナの一覧を表示する
コンテナの一覧を表示するには、Docker Desktop から行う方法と、コマンドで行う方法の2種類があります。
Docker Desktop でコンテナの一覧を表示する
Docker Desktop でコンテナの一覧を表示するには、Docker Desktop の左メニューの「Containers / Apps」をクリックします。
コマンドでコンテナの一覧を表示する
コマンドでコンテナの一覧を表示するには、docker container ls
コマンドを使用します。
オプション無しで実行した場合は、動作中のコンテナのみ表示され、停止中のコンテナは表示されません。
docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 6b0ea7cc5b0b docker/getting-started "/docker-entrypoint.…" 12 minutes ago Up 2 minutes 0.0.0.0:80->80/tcp test-app
全てのコンテナの一覧を表示する
停止中のコンテナも含めた全てのコンテナの一覧を表示するには、
docker container ls
コマンドに -a
オプションを付けて実行します。
docker container ls -a
新しいコンテナを作成する
コンテナを動かすためには、コンテナイメージから新しいコンテナを作成する必要があります。 コンテナイメージは Docker Hub のようなコンテナリポジトリに公開されているものや、ご自身で作成したものが使用できます。
コンテナイメージから新しいコンテナを作成するには、docker container create
コマンドと docker container run
コマンドの2つがあります。
この2つのコマンドの違いは、新しいコンテナを作成した後に、コンテナの起動を行うかどうかです。
この2つのコマンドには、ほぼ同じオプションを使用することができます。
コマンド | 説明 |
---|---|
docker container create コマンド |
新しいコンテナを作成し、そのコンテナを起動しません。 |
docker container run コマンド |
新しいコンテナを作成し、そのコンテナを起動します。 |
コンテナに名前を付ける
コンテナに名前を付ける場合は --name
オプションを使用します。
名前を指定しない場合、Docker が自動的に名前を付けてくれますが、わかりづらい名前になってしまいます。
--name <コンテナの名前>
--name test-app
ポートマッピング
-p
オプションを使用すると、ホストとコンテナでポートマッピングを行うことができます。
ポートマッピングを行うことで、ホストからコンテナに接続することができるようになります。
例えば、ホストのWebブラウザ(Google Chrome など)からWebサーバーのコンテナ(Apache や nginx など)にアクセスしたい場合や、
MySQL Workbench などのようなソフトから DBサーバー(MySQL など)のコンテナにアクセスしたい場合などは、ポートマッピングが必要になります。
ポートマッピングは複数指定することができます。
-p <ホスト側のポート番号:コンテナ側のポート番号>
コンテナ側のポート番号80(Webサーバー)にアクセスできるようにする
-p 8080:80
コンテナ側のポート番号3306(MySQLサーバー)にアクセスできるようにする
-p 3306:3306
新しいコンテナを作成する
新しいコンテナを作成するには、docker container create
コマンドを使用します。
docker container create
コマンドは、コンテナイメージから新しいコンテナを作成しますが、そのコンテナの起動は行いません。
コンテナの作成のみを行います。
docker container create [オプション] <コンテナイメージの名前>
新しいコンテナ(コンテナ名:test-app、ホスト側ポート8080 → コンテナ側ポート80)を作成する
docker container create --name test-app -p 8080:80 docker/getting-started
新しいコンテナを作成して起動する
新しいコンテナを作成して起動するには、docker container run
コマンドを使用します。
docker container run
コマンドは、コンテナイメージから新しいコンテナを作成し、そのコンテナを起動します。
コンテナを作成した後にいちいちコンテナを起動させるのがメンドウな場合は、こちらのコマンドを使った方が便利です。
docker container create
コマンドの後に docker container start
コマンド(後述)を実行するのと同じです。
docker container create
コマンドと同じオプションが使用でき、さらに追加でコンテナの起動に関係するいくつかのオプションが使用できます。
-d
オプションを付けると、コンテナがデタッチモード(バックグラウンド)で起動します。
忘れずに付けておきましょう。
docker container run [オプション] <コンテナイメージの名前>
新しいコンテナ(コンテナ名:test-app、ホスト側ポート8080 → コンテナ側ポート80)を作成し、
その作成されたコンテナをデタッチモード(バックグラウンド)で起動する
docker container run -d --name test-app -p 8080:80 docker/getting-started
コンテナを起動する
既に作成されているコンテナを起動します。 コンテナを起動するには、Docker Desktop から行う方法と、コマンドで行う方法の2種類があります。
Docker Desktop でコンテナを起動する
Docker Desktop でコンテナを起動するには、Docker Desktop の「Containers / Apps」から起動したいコンテナの「START」ボタンをクリックします。
コマンドでコンテナを起動する
コマンドでコンテナを起動するには、docker container start
コマンドを使用します。
docker container start <コンテナのIDもしくは名前>
docker container start test-app
コンテナの名前を変更する
コンテナの名前を変更するには、docker container rename
コマンドを使用します。
docker container rename <変更するコンテナのIDもしくは名前> <新しいコンテナの名前>
docker container rename old-app new-app
コンテナのログを表示する
コンテナの中で何が起こっているのかを確認したい場合は、コンテナのログを表示して確認しましょう。 コンテナのログを表示するには、Docker Desktop から行う方法と、コマンドで行う方法の2種類があります。
Docker Desktop でコンテナのログを表示する
Docker Desktop でコンテナのログを表示するには、Docker Desktop の「Containers / Apps」からログを表示したいコンテナをクリックします。
コマンドでコンテナのログを表示する
コマンドでコンテナのログを表示するには、docker container logs
コマンドを使用します。
docker container logs <コンテナのIDもしくは名前>
docker container logs test-app
ログをリアルタイムで表示する
ログをリアルタイムで表示するには
docker container logs
コマンドに -f
オプションを付けて実行します。
docker container logs -f <コンテナのIDもしくは名前>
コンテナをWebブラウザで開く
Docker Desktop には、ポートマッピングされているコンテナをWebブラウザで開く機能があります。 この機能で開かれるURLは「http://localhost:ポート番号/」の形式になります。 Webブラウザで開くには、Docker Desktop の「Containers / Apps」からWebブラウザで開きたいコンテナの「OPEN IN BROWSER」ボタンをクリックします。
コンテナ内でコマンドを実行する
コンテナ内でコマンドを実行するには、Docker Desktop から行う方法と、コマンドで行う方法の2種類があります。 コンテナ内でコマンドを実行するには、そのコンテナが起動している必要があります。
Docker Desktop でコンテナ内でコマンドを実行する
Docker Desktop でコンテナ内でコマンドを実行するには、Docker Desktop の「Containers / Apps」からコマンドを実行したいコンテナの「CLI」ボタンをクリックします。
コマンドでコンテナ内でコマンドを実行する
コマンドでコンテナ内でコマンドを実行するには、docker container exec
コマンドを使用します。
docker container exec <コンテナのIDもしくは名前> <実行したいコマンド>
docker container exec test-app ls -ltr
total 192 -rwxr-xr-x 1 root root 646 Dec 2 17:25 package.json -rwxr-xr-x 1 root root 170 Jan 22 21:39 Dockerfile drwxr-xr-x 5 root root 4096 Jan 22 21:40 src drwxr-xr-x 4 root root 4096 Jan 22 21:40 spec -rwxr-xr-x 1 root root 174600 Jan 22 21:41 yarn.lock drwxr-xr-x 163 root root 4096 Jan 22 21:41 node_modules
コンテナを停止する
コンテナを停止するには、Docker Desktop から行う方法と、コマンドで行う方法の2種類があります。
Docker Desktop でコンテナを停止する
Docker Desktop でコンテナを停止するには、Docker Desktop の「Containers / Apps」から停止したいコンテナの「STOP」ボタンをクリックします。
コマンドでコンテナを停止する
コマンドでコンテナを停止するには、docker container stop
コマンドを使用します。
docker container stop <コンテナのIDもしくは名前>
docker container stop test-app
コンテナを再起動する
コンテナを再起動するには、Docker Desktop から行う方法と、コマンドで行う方法の2種類があります。
Docker Desktop でコンテナを再起動する
Docker Desktop でコンテナを再起動するには、Docker Desktop の「Containers / Apps」から再起動したいコンテナの「RESTART」ボタンをクリックします。
コマンドでコンテナを再起動する
コマンドでコンテナを再起動するには、docker container restart
コマンドを使用します。
docker container restart <コンテナのIDもしくは名前>
docker container restart test-app
コンテナを削除する
コンテナを削除するには、Docker Desktop から行う方法と、コマンドで行う方法の2種類があります。
Docker Desktop でコンテナを削除する
Docker Desktop でコンテナを削除するには、Docker Desktop の「Containers / Apps」から削除したいコンテナの「DELETE」ボタンをクリックします。 コンテナが動作中の場合でも削除できるので注意してください。
コマンドでコンテナを削除する
コマンドでコンテナを削除するには、docker container rm
コマンドを使用します。
コンテナを削除するには、そのコンテナを先に停止しておく必要があります。
docker container rm <コンテナのIDもしくは名前>
docker container rm test-app
コンテナの停止と削除を同時に行う
コンテナを削除するには、そのコンテナを先に停止しておく必要がありますが、
docker container rm
コマンドに -f
オプションを付けて実行すると、
コンテナの停止と削除を1つのコマンドで同時に行うことができます。
docker container rm -f <コンテナのIDもしくは名前>
コマンドで停止中のコンテナを全て削除する
未使用のコンテナがたくさんあって、1つ1つ削除するのがメンドウな場合には、 docker container prune
コマンドが便利です。
このコマンドを使用すると、停止中のコンテナが全て削除されます。
docker container prune
参考サイト
- Sample application | Docker Documentation
- Update the application | Docker Documentation
- docker container ls | Docker Documentation
- docker container create | Docker Documentation
- docker container run | Docker Documentation
- docker container start | Docker Documentation
- docker container rename | Docker Documentation
- docker container logs | Docker Documentation
- docker container exec | Docker Documentation
- docker container stop | Docker Documentation
- docker container restart | Docker Documentation
- docker container rm | Docker Documentation
- docker container prune | Docker Documentation