Docker設定
1. Dockerのインストール
以下の手順でDockerをインストールします:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
2. インストールの確認
Dockerが正しくインストールされたか確認します:
# バージョン確認
sudo docker --version
# 起動状態の確認
sudo systemctl status docker
3. ユーザー設定
dockerコマンドをsudoなしで実行できるようにユーザーを設定します:
sudo usermod -aG docker $USER
newgrp docker
4. Docker の基礎知識
Dockerには操作可能な対象は大きく分けて 「Container (コンテナ)」、「Image (イメージ)」、 「Volume (ボリューム)」、「Network (ネットワーク)」の 4 つが存在します。ここでは 「Container」に焦点を当てて紹介します。
コンテナの基本概念
- コンテナは、アプリケーションとその実行に必要な環境をパッケージ化した軽量な実行単位
- イメージから作成され、独立した環境として動作する
- ホストOSのカーネルを共有しながら、他のコンテナやホストシステムから分離された状態で実行される
コンテナの特徴
- 分離性:各コンテナは独自のファイルシステム、プロセス空間、ネットワーク空間を持つ
- 可搬性:どの環境でも同じように動作することが保証される
- 使い捨て可能:必要に応じて簡単に作成・削除できる
基本的なコマンド操作
コンテナの作成と起動
# コンテナの作成と起動(基本形)
docker run [オプション] イメージ名[:タグ]
# 主要なrunオプション
-d # バックグラウンドで実行
-it # 対話型ターミナルで起動
--name # コンテナ名を指定
-p # ポートフォワーディング(例:-p 8080:80)
-v # ボリュームのマウント
-e # 環境変数の設定
--network # ネットワークの指定
--restart # 再起動ポリシーの設定
コンテナの確認
# 実行中のコンテナ一覧
docker ps
# 全てのコンテナ一覧(停止中含む)
docker ps -a
# コンテナの詳細情報表示
docker inspect コンテナID/名前
# コンテナのログ確認
docker logs コンテナID/名前
docker logs -f コンテナID/名前 # リアルタイムでログを表示
# コンテナのリソース使用状況
docker stats [コンテナID/名前]
コンテナの停止・再起動
# コンテナの停止
docker stop コンテナID/名前
# コンテナの起動(停止済みのコンテナを起動)
docker start コンテナID/名前
# コンテナの再起動
docker restart コンテナID/名前
# コンテナの一時停止
docker pause コンテナID/名前
# 一時停止からの再開
docker unpause コンテナID/名前
コンテナの操作・実行
# 実行中のコンテナに接続
docker exec -it コンテナID/名前 /bin/bash
# コンテナ内でコマンドを実行
docker exec コンテナID/名前 コマンド
# コンテナのファイルをホストにコピー
docker cp コンテナID/名前:コンテナ内のパス ホストのパス
# ホストのファイルをコンテナにコピー
docker cp ホストのパス コンテナID/名前:コンテナ内のパス
コンテナの削除
# コンテナの削除(停止済みのみ)
docker rm コンテナID/名前
# 実行中のコンテナを強制削除
docker rm -f コンテナID/名前
# 停止中の全コンテナを削除
docker container prune
# コンテナ、ネットワーク、未使用イメージを一括削除
docker system prune
コンテナ起動の確認
コンテナ起動の確認のために、HelloWorld コンテナを利用して確認する。
$ docker container run hello-world
実行すると、上記の実行結果が出力される。この出力には、チュートリアルやドキュメント URL などが記載されている。
Apache WebサーバのDockerでの設定方法
Apache WebサーバはDockerHub上で「httpd」という公式イメージとして提供されている。このイメージを使うことで、簡単にWebサーバを構築できる
準備作業
mkdir -p ~/ディレクトリ名(任意)/htdocs ~/ディレクトリ名(任意)/conf
- htdocs: Webコンテンツ(HTMLファイルなど)を格納
- conf: Apache設定ファイルを格納
コンテナの起動
cd ~/ディレクトリ名
docker run -dit --name my-apache-app -p 8080:80 -v ./htdocs:/usr/local/apache2/htdocs/ -v ./conf:/usr/apache2/conf httpd:2.4
重要なオプションの説明
- -p 8080:80: ホストの8080番ポートをコンテナの80番ポートに接続
- -v ./htdocs:/usr/local/apache2/htdocs/: Webコンテンツのディレクトリをマウント
- -v ./conf:/usr/apache2/conf: 設定ファイルのディレクトリをマウント
使用方法
- htdocsディレクトリにindex.htmlなどのファイルを配置すると、Webブラウザからアクセスできます
- ホスト側のファイルを編集するだけで、コンテナ内のWebサーバーに反映されます
例えば、「Hello World!!!!」記述されたindex.htmlをhtdocsに配置すれば、ブラウザで画像のような内容が表示される。