插件窝 干货文章 Docker部署多种容器的详细过程

Docker部署多种容器的详细过程

Docker 容器 MySQL WordPress 207    来源:    2025-04-02

Docker部署多种容器的详细指南

Docker是一个开源的容器化平台,允许开发者打包应用及其依赖项到一个轻量级、可移植的容器中。以下是部署多种常见容器的详细过程。

1. Docker基础准备

安装Docker

  • Linux: bash curl -fsSL https://get.docker.com | sh sudo usermod -aG docker $USER
  • Windows/macOS: 下载Docker Desktop并安装

基本命令

docker version          # 查看版本
docker info             # 查看系统信息
docker pull <image>     # 拉取镜像
docker images           # 列出本地镜像
docker ps               # 查看运行中的容器
docker ps -a            # 查看所有容器

2. 部署MySQL容器

# 拉取MySQL镜像
docker pull mysql:8.0

# 运行MySQL容器
docker run --name mysql-container \
  -e MYSQL_ROOT_PASSWORD=my-secret-pw \
  -e MYSQL_DATABASE=my_db \
  -e MYSQL_USER=user \
  -e MYSQL_PASSWORD=password \
  -p 3306:3306 \
  -v /path/to/mysql/data:/var/lib/mysql \
  -d mysql:8.0 \
  --character-set-server=utf8mb4 \
  --collation-server=utf8mb4_unicode_ci

# 进入MySQL容器
docker exec -it mysql-container mysql -uroot -p

3. 部署Redis容器

# 拉取Redis镜像
docker pull redis:latest

# 运行Redis容器
docker run --name redis-container \
  -p 6379:6379 \
  -v /path/to/redis/data:/data \
  -d redis:latest \
  redis-server --appendonly yes

# 连接Redis
docker exec -it redis-container redis-cli

4. 部署Nginx容器

# 拉取Nginx镜像
docker pull nginx:latest

# 运行Nginx容器
docker run --name nginx-container \
  -p 80:80 \
  -p 443:443 \
  -v /path/to/nginx/html:/usr/share/nginx/html \
  -v /path/to/nginx/conf:/etc/nginx \
  -d nginx:latest

# 重新加载Nginx配置
docker exec nginx-container nginx -s reload

5. 部署PostgreSQL容器

# 拉取PostgreSQL镜像
docker pull postgres:13

# 运行PostgreSQL容器
docker run --name postgres-container \
  -e POSTGRES_PASSWORD=mysecretpassword \
  -e POSTGRES_USER=myuser \
  -e POSTGRES_DB=mydb \
  -p 5432:5432 \
  -v /path/to/postgres/data:/var/lib/postgresql/data \
  -d postgres:13

# 连接PostgreSQL
docker exec -it postgres-container psql -U myuser -d mydb

6. 部署MongoDB容器

# 拉取MongoDB镜像
docker pull mongo:latest

# 运行MongoDB容器
docker run --name mongo-container \
  -p 27017:27017 \
  -v /path/to/mongo/data:/data/db \
  -e MONGO_INITDB_ROOT_USERNAME=admin \
  -e MONGO_INITDB_ROOT_PASSWORD=secret \
  -d mongo:latest

# 连接MongoDB
docker exec -it mongo-container mongo -u admin -p secret

7. 部署WordPress容器(带MySQL)

# 创建自定义网络
docker network create wordpress-network

# 运行MySQL容器
docker run --name wordpress-mysql \
  --network wordpress-network \
  -e MYSQL_ROOT_PASSWORD=rootpass \
  -e MYSQL_DATABASE=wordpress \
  -e MYSQL_USER=wordpress \
  -e MYSQL_PASSWORD=wordpresspass \
  -v /path/to/mysql/data:/var/lib/mysql \
  -d mysql:5.7

# 运行WordPress容器
docker run --name wordpress-container \
  --network wordpress-network \
  -p 8080:80 \
  -e WORDPRESS_DB_HOST=wordpress-mysql \
  -e WORDPRESS_DB_USER=wordpress \
  -e WORDPRESS_DB_PASSWORD=wordpresspass \
  -e WORDPRESS_DB_NAME=wordpress \
  -v /path/to/wordpress:/var/www/html \
  -d wordpress:latest

8. 使用Docker Compose部署多容器应用

创建docker-compose.yml文件:

version: '3.8'

services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
    volumes:
      - ./nginx/html:/usr/share/nginx/html
      - ./nginx/conf:/etc/nginx
    depends_on:
      - app

  app:
    image: node:14
    working_dir: /app
    volumes:
      - ./app:/app
    command: npm start
    ports:
      - "3000:3000"
    environment:
      - NODE_ENV=production

  db:
    image: postgres:13
    environment:
      - POSTGRES_PASSWORD=secret
      - POSTGRES_USER=user
      - POSTGRES_DB=mydb
    volumes:
      - ./postgres/data:/var/lib/postgresql/data
    ports:
      - "5432:5432"

运行命令:

docker-compose up -d  # 启动所有服务
docker-compose down   # 停止并移除所有服务

9. 容器管理技巧

查看日志

docker logs <container_id>          # 查看日志
docker logs -f <container_id>       # 实时查看日志

资源监控

docker stats                         # 查看容器资源使用情况
docker top <container_id>            # 查看容器进程

备份与恢复

# 备份容器为镜像
docker commit <container_id> backup-image

# 导出镜像
docker save -o backup.tar backup-image

# 导入镜像
docker load -i backup.tar

清理无用资源

docker system prune          # 清理无用镜像、容器、网络等
docker volume prune          # 清理无用卷

10. 安全最佳实践

  1. 不要使用root用户运行容器进程
  2. 定期更新基础镜像
  3. 限制容器资源使用
  4. 使用只读文件系统
  5. 避免在镜像中存储敏感信息
  6. 使用Docker内容信任(DCT)验证镜像

通过以上步骤,您可以轻松部署和管理多种Docker容器,构建灵活、可扩展的应用环境。

下一篇:没有了