aws

【A-21】Dockerコマンド

Dockerは、コンテナ型の仮想化技術を提供するツールであり、アプリケーションの開発・テスト・運用を効率化します。

この章では、Dockerの基本的なコマンドを学び、コンテナの起動・確認・停止・削除の操作を習得します。

[ 学習フェーズ ]

学ぶべきポイント:

以下のDockerコマンドを学びます。

  • docker run(コンテナの起動)
  • docker ps(実行中のコンテナの確認)
  • docker stop(コンテナの停止)
  • docker rm(コンテナの削除)

確認ポイント

  • docker ps -aを使うと何が確認できるか?
  • 停止したコンテナは、すぐに削除しなくても問題ないか?
  • docker rundocker startの違いは?

[ 実践フェーズ ]

ここでは、Docker公式のリポジトリから単体のimageをダウンロードして実行してみましょう。

コンテナの取得、起動、終了を学びます。

次のステップでは、このイメージをDockerfileを使ってカスタマイズし、自分用の環境を作成していきます。

1. hello-worldコンテナを実行する。

まずは、hello-worldを表示してみましょう。公式リポジトリにhelloworldが出力されるimageが存在しますので、それを利用します。

docker run hello-world

※ Docker Hub(Dockerの公式リポジトリ)から hello-world イメージを取得し、コンテナが実行されます。

動作確認方法:
実行後、ターミナルに以下のようなメッセージが表示されれば成功です。

Hello from Docker!
This message shows that your installation appears to be working correctly.

もしエラーが出る場合は、Dockerが正しくインストールされているか確認してください。


2. nginxコンテナをバックグラウンドで起動し、動作を確認する。

別のコンテナも作成してみましょう。今回はnginxを起動してみます。

docker run -d -p 8080:80 nginx

-d オプションはバックグラウンド実行を意味します。

動作確認方法:
コンテナの一覧を表示し、起動していることを確認します。

docker ps

出力例:

CONTAINER ID   IMAGE   COMMAND                  CREATED          STATUS          PORTS                   NAMES
e3a1b2c3d4f5 nginx "nginx -g 'daemon of…" 10 seconds ago Up 10 seconds 0.0.0.0:8080->80/tcp quirky_morse

STATUSUp になっていることを確認してください。

さらに、nginxが動作していることをブラウザで確認します。
ブラウザのURL欄に以下を入力して開きます。

http://localhost:8080

Nginxのデフォルトページが表示されれば成功です。


3. コンテナを停止する。

docker stop <コンテナID>

<コンテナID> には docker ps の出力結果に表示された CONTAINER ID を指定します。

動作確認方法:
docker ps を実行し、STATUS が消えていれば停止完了です。

docker ps

もし表示されなければ、すべてのコンテナを含めたリストで確認します。

docker ps -a

STATUSExited になっていれば停止成功です。


4. コンテナを削除する。

docker rm <コンテナID>

<コンテナID> には docker ps -a で表示されたコンテナIDを指定します。

動作確認方法:
再度 docker ps -a を実行し、削除されたことを確認します。

docker ps -a

削除後、コンテナIDがリストに表示されなければ成功です。

+α MySQLサーバーのコンテナを立ち上げる

1. MySQLコンテナの起動

以下のコマンドを実行し、MySQLサーバーを起動します。

docker run -d --name my-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -p 3306:3306 mysql:latest

オプションの説明:

  • -d : バックグラウンドで実行
  • --name my-mysql : コンテナに my-mysql という名前を付ける
  • -e MYSQL_ROOT_PASSWORD=my-secret-pw : root ユーザーのパスワードを設定
  • -p 3306:3306 : ホストの3306ポートをコンテナの3306ポートにマッピング
  • mysql:latest : 最新のMySQLイメージを使用

※ nginxと違い、-eなどが必須オプションとなる点を理解しておきましょう。

2. MySQLにログイン

起動したMySQLコンテナに接続し、データベースを確認します。

docker exec -it my-mysql mysql -u root -p

パスワードの入力を求められるので、my-secret-pw を入力します。

※PCにMySQLクライアントを入れておく必要があります。

3. データベース一覧の確認

ログイン後、以下のSQLコマンドを実行し、デフォルトのデータベースを確認しましょう。

SHOW DATABASES;

出力例:

+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4. MySQLコンテナの停止と削除

不要になったら、以下のコマンドで停止・削除できます。

docker stop my-mysql
docker rm my-mysql