Docker環境のセットアップ
1.1 システムツールのインストール
yum install -y yum-utils device-mapper-persistent-data lvm2
1.2 リポジトリの追加
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
1.3 キャッシュの更新
dnf makecache
1.4 Docker CEのインストール
yum -y install docker-ce docker-ce-cli containerd.io
1.5 Dockerサービスの起動
systemctl start docker
systemctl enable docker
1.6 レジストリミラーの設定
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
Dockerイメージの操作
2.1 イメージの検索
docker search nginx
2.2 イメージの取得
docker pull nginx:alpine
2.3 Dockerfileからのビルド
docker build -t custom-image /path/to/Dockerfile
コンテナの実行と管理
3.1 コンテナの起動
docker run -d --name web-server -p 8080:80 nginx:alpine
3.2 実行中のコンテナ一覧
docker ps
3.3 コンテナへの接続
docker exec -it web-server /bin/sh
3.4 コンテナログの確認
docker logs -f web-server
3.5 コンテナの停止
docker stop web-server
3.6 ファイルのコピー
docker cp local_file.txt web-server:/app/
docker cp web-server:/app/log.txt .
3.7 コンテナの削除
docker rm web-server
カスタムイメージの作成
FROM ubuntu:20.04
ENV APP_DIR=/opt/app
WORKDIR $APP_DIR
COPY jdk-11.0.15_linux-x64_bin.tar.gz .
RUN tar -xzf jdk-11.0.15_linux-x64_bin.tar.gz && \
mv jdk-11.0.15 jdk && \
rm jdk-11.0.15_linux-x64_bin.tar.gz
ENV JAVA_HOME=$APP_DIR/jdk
ENV PATH=$PATH:$JAVA_HOME/bin
docker-composeの活用
5.1 docker-composeのインストール
pip install docker-compose
5.2 サービスの起動
docker-compose up -d
Elasticsearchクラスタの構築
version: '3.8'
services:
es-node1:
image: elasticsearch:8.5.0
environment:
- node.name=es-node1
- cluster.name=es-docker-cluster
- discovery.seed_hosts=es-node1,es-node2
- cluster.initial_master_nodes=es-node1,es-node2
volumes:
- es-data1:/usr/share/elasticsearch/data
networks:
- es-net
es-node2:
image: elasticsearch:8.5.0
environment:
- node.name=es-node2
- cluster.name=es-docker-cluster
- discovery.seed_hosts=es-node1,es-node2
- cluster.initial_master_nodes=es-node1,es-node2
volumes:
- es-data2:/usr/share/elasticsearch/data
networks:
- es-net
volumes:
es-data1:
es-data2:
networks:
es-net:
driver: bridge
MySQLコンテナのデプロイ
services:
mysql-db:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: secure_password
MYSQL_DATABASE: app_db
volumes:
- mysql-data:/var/lib/mysql
ports:
- "3306:3306"
networks:
- backend-net
volumes:
mysql-data:
networks:
backend-net: