このハンズオンでやることDocker の概要を学び、コンテナ操作を体験します
想定時間1h
前提知識・用語仮想化、CUI 操作

# Dockerコンテナの管理

前回は、Dockerコンテナのイメージの取得からコンテナの構築までを行いました。 しかし、先ほどの講義では以下の項目についての確認には言及していません。

  • 取得したイメージがきちんと取得できているのか?
  • 起動したコンテナが間違いなく起動しているのか?
  • 作業完了後に後片付け・余計なリソースやプロセスが残っていないか?

実際のコンテナの活用にはこういったDockerコンテナの管理が必要不可欠になります。 従って本講では、Dockerコンテナを管理する為のコマンドを学習します。

# 演習3 docker images

docker images コマンドは、ローカル環境に存在するDocker イメージの一覧を表示するコマンドです。 これを用いることでコンテナの元となるイメージファイルの有無を確認することができます。

なお、Dockerイメージには、名前の他に「TAG」を付けることができます。 TAGとして使われる文字列にはバージョンを記載することが一般的です。 今回表示されている「latest」は最新版であることを意味しています。

コマンドを実行し、手元にどんなイメージがあるか確認してみてください

$ docker images
1
実行例
REPOSITORY                    TAG                 IMAGE ID            CREATED             SIZE
docker/getting-started                                                    latest       cb90f98fd791   2 months ago    28.8MB
1
2

# 演習4 docker ps

docker ps コマンドは、ローカル環境に存在するDockerコンテナに関する情報を表示してくれます。 現在起動しているコンテナはdocker ps と入力すると表示されます。 こちらもコマンドを実行してみましょう。

docker psコマンドのデフォルトの動作で表示されるのは永続的に稼働しているコンテナのみ表示されるため、 本講義に従って実行した場合は何も表示されないと思います。 既に終了してしまったり、エラーで起動できていないコンテナを確認するためには、 オプションで-a を付けることで表示可能です。

$ docker ps -a
1
実行例
CONTAINER ID   IMAGE                    COMMAND                  CREATED         STATUS    PORTS     NAMES
f908c593f036   docker/getting-started   "/docker-entrypoint.…"   2 seconds ago   Created             getting-started
1
2

# 演習5 docker start、stop

docker start は、コンテナの起動を行うコマンドで、docker stop は、コンテナを停止するコマンドです。 これらのコマンドでは、起動・停止対象のコンテナを選択する必要があるため、引数としてdocker ps の表示結果にあった「CONTAINER ID」を設定します。

先ほどの項ではdocker/getting-startedコンテナの起動にdocker runを使用していましたが、docker rundocker startには大きな違いがあります。

docker runは、docker startだけでなく、docker createを兼ねるコマンドとなっており、実行対象のコンテナが存在しない場合はイメージからコンテナ化を試みるようになっています。

このように大変便利なコマンドですが、既にコンテナ化されており停止しているだけの物を起動したいと思った時にdocker runを使用すると、既にコンテナ化されていものがあるにも関わらず新たにイメージからコンテナを作り出そうとするなど、思わぬ動作を引き起こすことがあります。

従って、docker runは初回起動時に使う物として考え、 docker stopで停止しただけのコンテナを再び起動させたい場合はdocker startを用いましょう。

では、実際にdocker stopdocker startを使う演習をしてみましょう。

# 5-1. コンテナの起動

 $ docker run --name iij-bootcamp_docker01 -d -p 8080:80 docker/getting-started
1
実行例
 $ docker ps
CONTAINER ID   IMAGE                    COMMAND                  CREATED         STATUS         PORTS                                   NAMES
6d868b858fd7   docker/getting-started   "/docker-entrypoint.…"   4 seconds ago   Up 3 seconds   0.0.0.0:8080->80/tcp, :::8080->80/tcp   interesting_darwin
1
2
3

# 5-2. コンテナの停止

先ほど実行したコンテナを停止します。 ****については先ほどの演習で行ったdocker ps等を用いて確認してください

 $ docker stop <CONTAINER ID>
1

# 5-3. コンテナの開始(再開)

 $ docker start <CONTAINER ID>
1

# 演習6 docker rm、rmi

docker rmdocker rmi は、それぞれDocker コンテナ、Docker イメージの削除を行うコマンドです。 軽量であるとは言え、コンテナイメージも一定の容量を持つため作成するだけで削除を行わないといずれディスクを圧迫し、溢れてしまいます。 従って、不要なコンテナやイメージは削除するよう心がけましょう。 ただし、削除したいDocker イメージを元に作成したDocker コンテナが存在する場合削除できません。 その際は、事前にDocker コンテナを削除した後に、Docker イメージを削除してください。

なお、削除にはdocker stop等と同様に引数に「CONTAINER ID」や「IMAGE ID」を設定する必要があります。

$ docker rm  iij-bootcamp_docker01
iij-bootcamp_docker01
1
2
$ docker rmi docker/getting-started
docker/getting-started
1
2

# まとめ

ここまで実施することでDockerコンテナの取得から後片付けまでの一通りの作業ができるようになりました。 しかし、実際に自分好みのDockerイメージを作るにはどうすれば良いでしょうか。 次項ではDockerイメージの作り方について学びたいと思います。


CC BY-SA Licensed | Copyright (c) 2022, Internet Initiative Japan Inc.