Dockerコンテナの基本操作とネットワーク設定

Dockerの基本概念

1. コンテナ技術の基礎
DockerコンテナはホストOS上のプロセスとして動作
- Namespace: リソース隔離機能
- Cgroups: リソース制限機構
- Copy-on-Write: 効率的なファイル操作

2. コンテナ技術の進化
1) chroot技術: ファイルシステムの分離
2) LXC (LinuX Containers): NamespaceとCgroupsの実装

3. Namespaceの種類
- UTS: ホスト名とドメイン名の隔離
- IPC: プロセス間通信の隔離
- PID: プロセスID空間の隔離
- NET: ネットワークスタックの隔離
- MOUNT: ファイルシステムマウントの隔離
- USER: ユーザID空間の隔離(カーネル3.8以降)

4. Cgroupsの機能
- リソース制限: CPU/メモリ使用量の上限設定
- 優先度制御: リソース配分の調整
- 使用量計測: リソース消費量のモニタリング
- プロセス制御: プロセスの一時停止/再開

Dockerのインストール手順

1. リポジトリ設定
https://download.docker.com/linux/centos/

2. インストール実行
# yum install -y yum-utils device-mapper-persistent-data lvm2
# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# yum install docker-ce docker-ce-cli containerd.io

3. サービス起動
# systemctl enable --now docker
# docker version

4. ミラー設定
# cat <<EOF > /etc/docker/daemon.json
{
  "registry-mirrors": ["https://registry.docker-cn.com"]
}
EOF
# systemctl restart docker

イメージ管理操作

1. イメージ検索
# docker search ubuntu

2. イメージ取得
# docker pull ubuntu:20.04

3. イメージ一覧
# docker images

4. イメージ詳細確認
# docker inspect ubuntu:20.04

5. イメージ転送
# docker save -o ubuntu.tar ubuntu:20.04
# docker load -i ubuntu.tar

6. イメージ削除
# docker rmi ubuntu:20.04

7. タグ付け
# docker tag ubuntu:20.04 my-ubuntu:v1

コンテナ管理操作

1. インタラクティブコンテナ
# docker run -it --name=dev ubuntu:20.04 /bin/bash

2. デーモンコンテナ
# docker run -d --name=web nginx:alpine

3. 起動/停止制御
# docker start web
# docker stop web

4. コンテナ接続
# docker exec -it web /bin/sh

5. ポート公開
# docker run -d -p 8080:80 nginx:alpine

6. バックグラウンド実行
Ctrl+P + Ctrl+Q

7. ログ監視
# docker logs -f web

データ永続化手法

1. ボリュームマウント
# docker run -v /host/data:/container/data ubuntu

2. ボリュームコンテナ
# docker create -v /data --name datastore ubuntu
# docker run --volumes-from datastore ubuntu

Dockerfileによるイメージ構築

FROM ubuntu:20.04
RUN apt update && apt install -y apache2
COPY index.html /var/www/html/
EXPOSE 80
CMD ["apache2ctl", "-D", "FOREGROUND"]

ビルド実行:
# docker build -t my-apache .

プライベートレジストリ構築

1. レジストリ起動
# docker run -d -p 5000:5000 --name registry registry:2

2. クライアント設定
# cat <<EOF > /etc/docker/daemon.json
{
  "insecure-registries": ["localhost:5000"]
}
EOF

3. イメージ登録
# docker tag my-apache localhost:5000/my-apache
# docker push localhost:5000/my-apache

ネットワーク構成

1. ネットワークタイプ
- bridge: デフォルトNATモード
- host: ホストネットワーク共有
- none: ネットワーク無効化
- macvlan: 物理ネットワーク直接接続

2. macvlan設定例
# docker network create -d macvlan \
  --subnet=192.168.1.0/24 \
  --gateway=192.168.1.1 \
  -o parent=eth0 my-macvlan

Docker Composeによるオーケストレーション

version: '3'
services:
  web:
    image: nginx:alpine
    ports:
      - "80:80"
  db:
    image: postgres:13
    environment:
      POSTGRES_PASSWORD: example

起動コマンド:
# docker-compose up -d

タグ: Docker コンテナ イメージ管理 ネットワーク設定 ボリューム

7月2日 18:06 投稿