一、环境准备:天翼云CentOS7系统初始化
1.1 服务器选择与网络配置
天翼云提供多种规格的弹性云主机,建议选择至少2核4G内存的配置以满足Docker运行需求。在创建实例时,需特别注意:
- 镜像选择:务必选择CentOS7.x 64位系统镜像
- 网络配置:建议分配弹性公网IP并开启全部安全组规则(后期可通过防火墙规则限制)
- 存储优化:选择SSD云硬盘以提高I/O性能,为容器存储提供保障
1.2 系统基础优化
登录服务器后执行以下初始化操作:
bash
# 更新系统软件包
sudo yum update -y
# 安装基础工具链
sudo yum install -y vim wget curl net-tools lsof
# 配置时区
sudo timedatectl set-timezone Asia/Shanghai
# 关闭SELinux(容器环境推荐)
sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
sudo setenforce 0
二、Docker核心安装:从官方源到生产环境配置
2.1 官方仓库安装法(推荐)
天翼云CentOS7环境推荐使用Docker官方仓库安装最新稳定版:
bash
# 安装依赖工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# 添加Docker官方仓库
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 安装指定版本(示例为20.10.x LTS版本)
sudo yum install -y docker-ce-20.10.24 docker-ce-cli-20.10.24 containerd.io
# 启动服务并设置开机自启
sudo systemctl start docker
sudo systemctl enable docker
2.2 离线安装方案(特殊网络环境)
对于无法访问外网的内部网络,可采用以下步骤:
- 在有外网的机器下载RPM包
- 通过SCP传输到目标服务器后安装:
bash
sudo rpm -ivh *.rpm --nodeps
2.3 生产环境加固配置
完成基础安装后,需进行以下安全优化:
bash
# 创建docker用户组并添加当前用户
sudo groupadd docker
sudo usermod -aG docker $USER
newgrp docker # 立即生效
# 配置镜像加速(使用天翼云镜像源)
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://docker.mirrors.ctyun.cn"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
# 配置存储驱动(推荐overlay2)
sudo sed -i 's/^ExecStart=.*/& --storage-driver=overlay2/' /usr/lib/systemd/system/docker.service
sudo systemctl daemon-reload
三、CentOS镜像管理:从拉取到定制化构建
3.1 官方镜像获取与验证
天翼云环境推荐使用国内镜像源加速:
bash
# 拉取CentOS7官方镜像
docker pull centos:7
# 验证镜像完整性
docker images | grep centos
docker inspect centos:7 | grep "RepoDigests"
3.2 定制化镜像构建实践
以构建包含开发工具的CentOS镜像为例:
- 创建Dockerfile文件:
dockerfile
FROM centos:7
MAINTAINER DevTeam <dev@example.com>
# 安装基础开发工具
RUN yum install -y epel-release && \
yum install -y vim wget git make gcc gcc-c++ \
python3 python3-pip && \
yum clean all && \
rm -rf /var/cache/yum
# 配置中文环境
RUN localedef -c -f UTF-8 -i zh_CN zh_CN.utf8
ENV LANG zh_CN.UTF-8
# 创建工作目录
RUN mkdir /app
WORKDIR /app
- 构建镜像并验证:
bash
docker build -t centos7-dev:latest .
docker run -it --rm centos7-dev:latest bash -c "python3 --version && git --version"
3.3 镜像优化技巧
- 多阶段构建:减少最终镜像体积
- 分层缓存:合理排列RUN指令顺序
- 最小化基础镜像:使用Alpine等轻量级基础镜像(如需兼容性可保留CentOS)
四、天翼云高级应用场景
4.1 弹性文件系统挂载
天翼云提供的SFS Turbo文件系统可实现容器持久化存储:
- 创建文件系统并获取挂载点
- 在宿主机执行挂载:
bash
# 安装NFS客户端
sudo yum install -y nfs-utils
# 创建本地挂载目录
sudo mkdir /mnt/sfs
# 执行挂载(示例命令,需替换实际参数)
sudo mount -t nfs -o vers=3,nolock,proto=tcp 192.168.1.100:/share /mnt/sfs
- 创建容器时挂载目录:
bash
docker run -d --name webapp \
-v /mnt/sfs:/data \
-p 80:8080 \
nginx:alpine
4.2 容器安全加固方案
- 资源限制配置:
bash
docker run -it --rm \
--memory="512m" \
--cpus="1.5" \
--pids-limit=200 \
centos:7 bash
- 能力降权:
bash
docker run -it --rm \
--cap-drop=ALL \
--cap-add=CHOWN \
centos:7 bash
- Seccomp配置
4.3 集群编排实践
使用Docker Compose实现多容器编排:
- 创建docker-compose.yml文件:
yaml
version: '3.8'
services:
web:
image: nginx:alpine
ports:
- "80:80"
volumes:
- ./html:/usr/share/nginx/html
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: example
MYSQL_DATABASE: appdb
volumes:
- db_data:/var/lib/mysql
volumes:
db_data:
- 启动服务并验证:
bash
docker-compose up -d
docker-compose ps
docker-compose logs -f
五、故障排查与性能优化
5.1 常见问题解决方案
| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
| Docker服务启动失败 | 存储驱动冲突 | 检查/var/log/messages日志,修改storage-driver |
| 容器无法访问外网 | iptables规则缺失 | 执行iptables -t nat -A POSTROUTING -s 172.17.0.0/16 ! -o docker0 -j MASQUERADE |
| 镜像拉取缓慢 | DNS配置问题 | 修改/etc/docker/daemon.json添加"dns": ["8.8.8.8"] |
5.2 性能监控工具链
- 基础监控:
bash
# 查看容器资源使用
docker stats
# 查看容器日志
docker logs -f --tail=100 <container_id>
- 高级监控方案:
bash
# 安装cAdvisor
docker run -d \
--name=cadvisor \
-p 8080:8080 \
-v /:/rootfs:ro \
-v /var/run:/var/run:rw \
-v /sys:/sys:ro \
-v /var/lib/docker/:/var/lib/docker:ro \
google/cadvisor:latest
六、未来展望:容器化技术的演进方向
随着天翼云持续加大在容器领域的投入,开发者可关注以下技术趋势:
- Service Mesh集成:通过Istio等方案实现服务治理
- Serverless容器:天翼云FAAS平台与Docker的深度整合
- 边缘计算容器:基于5G网络的边缘节点容器化部署
- AI容器优化:针对深度学习框架的专用容器镜像
结语:容器化时代的开发范式变革
通过本文的详细阐述,开发者已掌握在天翼云CentOS7环境中从Docker基础安装到高级应用的完整技术栈。容器化技术不仅改变了应用部署方式,更推动了DevOps文化的普及和微服务架构的落地。建议开发者持续关注天翼云容器服务的更新动态,及时将新技术应用到实际项目中,在数字化转型的浪潮中占据先机。