Dockerとは
Dockerは、アプリケーションをコンテナという軽量な単位でパッケージ化し、どのような環境でも一貫して実行できるようにするオープンソースのコンテナ化プラットフォームです。Dockerイメージは、コンテナのテンプレートとして機能し、このイメージから一つまたは複数のコンテナを起動できます。
Dockerサービスの管理
Dockerデーモン(サービス)の起動、停止、再起動は以下のコマンドで行います。
systemctl start docker: Dockerサービスを起動します。systemctl stop docker: Dockerサービスを停止します。systemctl restart docker: Dockerサービスを再起動します。
コンテナの基本操作
コンテナの起動
docker runコマンドは、イメージから新しいコンテナを作成して起動するための主要なコマンドです。よく使われるオプションは以下の通りです。
-i: インタラクティブモードでコンテナを実行します。通常、-tと組み合わせて使用します。-t: コンテナに擬似端末(tty)を割り当てます。通常、-iと組み合わせて使用します。--name: コンテナに任意の名前を付与します。-d: コンテナをバックグラウンド(デタッチドモード)で実行し、コンテナIDを返します。Dockerコンテナをバックグラウンドで実行する場合、コンテナ内に常駐するプロセスが必要です。-p: ホストマシンのポートをコンテナのポートにマッピングします。-v: ボリュームマウント。ホストマシンのディレクトリをコンテナ内のディレクトリにマウントし、データを永続化します。-e: コンテナ内の環境変数を設定します。例えば、MySQLのルートパスワードを指定する際に使用します。
データベースコンテナを起動する例を示します。
docker run --name my-db -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=secure-pw -v /home/user/db-data:/var/lib/mysql mysql:8.0
--name my-db: my-dbという名前のコンテナを起動します。
-d: コンテナをバックグラウンドで実行します。
-p 3306:3306: ホストの3306ポートをコンテナの3306ポートにマッピングします。
-e MYSQL_ROOT_PASSWORD=secure-pw: コンテナ内の環境変数を設定し、ここではデータベースのパスワードを指定します。
-v /home/user/db-data:/var/lib/mysql: ホストマシンの/home/user/db-dataディレクトリをコンテナ内の/var/lib/mysqlディレクトリにマウントします。これにより、コンテナが削除されてもデータが保存されます。
コンテナの状態確認
docker ps: 現在実行中のコンテナを一覧表示します。docker ps -a: 作成済みのすべてのコンテナ(停止中のものを含む)を一覧表示します。
コンテナの操作
docker stop <コンテナID>: 指定したコンテナを停止します。複数のコンテナIDをスペースで区切って並べることで、一度に複数のコンテナを停止できます。docker rm <コンテナID>: 指定したコンテナを削除します(コンテナは停止している必要があります)。
イメージの管理
docker images: ローカルに保存されているすべてのイメージを一覧表示します。docker rmi <イメージID>: 指定したイメージを削除します。
コンテナ内への接続
コンテナ内でコマンドラインを操作するには、以下のコマンドを使用します。
docker exec -it <コンテナ名> /bin/bash
便利なワンライナー
すべてのコンテナを一括で起動
docker start $(docker ps -a -q)
docker ps -a -qは、すべてのコンテナのIDのみを表示するため、より簡潔なコマンドです。
すべてのコンテナを一括で停止
docker stop $(docker ps -a -q)