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
7月2日 18:06 投稿