CentOS 7系统Docker完整安装与生产环境配置指南

一、系统环境准备

1.1 系统更新与依赖检查

在CentOS 7系统上执行:

sudo yum update -y
sudo yum install -y yum-utils device-mapper-persistent-data lvm2

验证内核版本(需≥3.10):

uname -r
# 输出示例:3.10.0-1160.92.1.el7.x86_64

1.2 存储驱动选择

查看当前存储驱动:

lsmod | grep overlay
# 推荐使用overlay2驱动

二、Docker安装方法对比

2.1 官方仓库安装(推荐)

sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum makecache fast
sudo yum install -y docker-ce docker-ce-cli containerd.io

2.2 便捷脚本安装

curl -fsSL https://get.docker.com | sudo sh

三、生产环境配置实践

3.1 安全配置

创建docker用户组:

sudo groupadd docker
sudo usermod -aG docker $USER

配置daemon.json:

{
  "live-restore": true,
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m",
    "max-file": "3"
  },
  "storage-driver": "overlay2"
}

3.2 镜像加速配置

阿里云加速器示例:

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://{your_id}.mirror.aliyuncs.com"]
}
EOF

四、容器网络深度配置

4.1 自定义网桥

docker network create --driver bridge --subnet=172.28.0.0/16 my-bridge
docker run -d --net=my-bridge --name webapp nginx:alpine

4.2 端口映射验证

docker run -d -p 8080:80 --name nginx-test nginx:alpine
curl -I localhost:8080

五、数据持久化方案

5.1 命名卷管理

docker volume create app_data
docker run -d -v app_data:/var/lib/mysql mysql:5.7

5.2 目录绑定

mkdir ~/webroot
docker run -d -v ~/webroot:/usr/share/nginx/html nginx:alpine

六、容器编排实践

6.1 Docker Compose安装

sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

6.2 编写docker-compose.yml

version: '3'
services:
  web:
    image: nginx:alpine
    ports:
      - "80:80"
  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: example

七、监控与维护

7.1 容器日志查看

docker logs --tail 100 -f container_name

7.2 资源监控

安装cAdvisor:

docker run \
  --volume=/:/rootfs:ro \
  --volume=/var/run:/var/run:ro \
  --volume=/sys:/sys:ro \
  --volume=/var/lib/docker/:/var/lib/docker:ro \
  --publish=8081:8080 \
  --detach=true \
  --name=cadvisor \
  google/cadvisor:latest

八、安全加固建议

8.1 容器安全扫描

docker scan nginx:alpine

8.2 用户命名空间隔离

sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "userns-remap": "default"
}
EOF

九、故障排除指南

9.1 常见错误处理

容器启动失败检查:

docker inspect --format='{{.State.Error}}' container_id

9.2 网络诊断工具

docker run --rm -it --net container:webapp nicolaka/netshoot
正文到此结束
评论插件初始化中...
Loading...