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」に焦点を当てて紹介します。

コンテナの基本概念

  1. コンテナは、アプリケーションとその実行に必要な環境をパッケージ化した軽量な実行単位
  2. イメージから作成され、独立した環境として動作する
  3. ホストOSのカーネルを共有しながら、他のコンテナやホストシステムから分離された状態で実行される

コンテナの特徴

  1. 分離性:各コンテナは独自のファイルシステム、プロセス空間、ネットワーク空間を持つ
  2. 可搬性:どの環境でも同じように動作することが保証される
  3. 使い捨て可能:必要に応じて簡単に作成・削除できる

基本的なコマンド操作

コンテナの作成と起動

# コンテナの作成と起動(基本形)
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
hello world

実行すると、上記の実行結果が出力される。この出力には、チュートリアルやドキュメント URL などが記載されている。

Apache WebサーバのDockerでの設定方法

Apache WebサーバはDockerHub上で「httpd」という公式イメージとして提供されている。このイメージを使うことで、簡単にWebサーバを構築できる

準備作業

mkdir -p ~/ディレクトリ名(任意)/htdocs ~/ディレクトリ名(任意)/conf
  1. htdocs: Webコンテンツ(HTMLファイルなど)を格納
  2. 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
                        

重要なオプションの説明

  1. -p 8080:80: ホストの8080番ポートをコンテナの80番ポートに接続
  2. -v ./htdocs:/usr/local/apache2/htdocs/: Webコンテンツのディレクトリをマウント
  3. -v ./conf:/usr/apache2/conf: 設定ファイルのディレクトリをマウント

使用方法

  1. htdocsディレクトリにindex.htmlなどのファイルを配置すると、Webブラウザからアクセスできます
  2. ホスト側のファイルを編集するだけで、コンテナ内のWebサーバーに反映されます

例えば、「Hello World!!!!」記述されたindex.htmlをhtdocsに配置すれば、ブラウザで画像のような内容が表示される。

8080