华为云服务器Docker环境配置与安全实践
1. 华为云服务器初始化与Docker环境准备
在华为云上配置Docker环境前,我们需要先完成云服务器的初始化工作。华为云ECS(弹性云服务器)提供了多种规格选择,对于Docker环境建议选择至少2核4G配置,操作系统推荐使用CentOS 7.6或Ubuntu 18.04/20.04 LTS版本。
1.1 华为云ECS基础配置
登录华为云控制台后,在"计算 > 弹性云服务器"页面创建新实例时,有几个关键配置需要注意:
- 镜像选择 :华为云市场提供了预装Docker的镜像,但为了更好的控制版本,建议选择纯净版系统镜像
-
安全组配置
:必须开放以下端口:
- 22端口(SSH)
- 2375端口(Docker守护进程,生产环境建议关闭)
- 2376端口(Docker TLS加密通信)
- 磁盘配置 :建议系统盘至少40GB,数据盘根据实际需求挂载
创建完成后,通过SSH连接到服务器:
ssh root@<你的华为云服务器公网IP>
1.2 系统环境优化
在安装Docker前,建议先对系统进行基础优化:
# 更新系统软件包
yum update -y # CentOS
apt update && apt upgrade -y # Ubuntu
# 关闭SELinux(可选)
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
# 设置时区
timedatectl set-timezone Asia/Shanghai
# 安装基础工具
yum install -y vim wget curl net-tools # CentOS
apt install -y vim wget curl net-tools # Ubuntu
2. Docker引擎安装与配置
2.1 Docker CE安装
华为云提供了多种Docker安装方式,以下是官方推荐的安装方法:
对于CentOS系统 :
# 卸载旧版本
yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
# 安装依赖
yum install -y yum-utils device-mapper-persistent-data lvm2
# 添加Docker官方仓库
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 安装Docker CE
yum install -y docker-ce docker-ce-cli containerd.io
对于Ubuntu系统 :
# 卸载旧版本
apt-get remove docker docker-engine docker.io containerd runc
# 安装依赖
apt-get update
apt-get install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common
# 添加Docker官方GPG key
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
# 添加仓库
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
# 安装Docker CE
apt-get update
apt-get install -y docker-ce docker-ce-cli containerd.io
2.2 华为云Docker加速器配置
华为云提供了容器镜像服务(SWR),我们可以配置为Docker镜像加速器:
# 创建或修改daemon.json
cat > /etc/docker/daemon.json <<EOF
{
"registry-mirrors": ["https://<你的华为云SWR域名>.myhuaweicloud.com"],
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2"
}
EOF
# 重启Docker服务
systemctl daemon-reload
systemctl restart docker
# 设置开机自启
systemctl enable docker
注意:华为云SWR域名可以在容器镜像服务控制台获取,格式通常为 -swr. .myhuaweicloud.com
2.3 Docker版本验证与基础命令测试
安装完成后,验证Docker是否正常运行:
# 查看Docker版本
docker version
# 运行测试容器
docker run hello-world
# 查看Docker系统信息
docker info
3. Docker生产环境安全配置
3.1 Docker守护进程安全加固
默认情况下,Docker守护进程监听在Unix socket上,但有时我们需要远程管理,此时需要配置TLS加密:
# 创建CA证书目录
mkdir -p /etc/docker/ca
cd /etc/docker/ca
# 生成CA私钥和自签名证书
openssl genrsa -aes256 -out ca-key.pem 4096
openssl req -new -x509 -days 365 -key ca-key.pem -sha256 -out ca.pem
# 生成服务器密钥和证书签名请求(CSR)
openssl genrsa -out server-key.pem 4096
openssl req -subj "/CN=<你的服务器IP>" -sha256 -new -key server-key.pem -out server.csr
# 使用CA签署服务器证书
echo subjectAltName = DNS:<你的域名>,IP:<你的服务器IP>,IP:127.0.0.1 >> extfile.cnf
echo extendedKeyUsage = serverAuth >> extfile.cnf
openssl x509 -req -days 365 -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out server-cert.pem -extfile extfile.cnf
# 生成客户端密钥和证书
openssl genrsa -out key.pem 4096
openssl req -subj '/CN=client' -new -key key.pem -out client.csr
echo extendedKeyUsage = clientAuth > extfile-client.cnf
openssl x509 -req -days 365 -sha256 -in client.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out cert.pem -extfile extfile-client.cnf
# 配置Docker守护进程
vi /lib/systemd/system/docker.service
# 修改ExecStart行为:
ExecStart=/usr/bin/dockerd --tlsverify --tlscacert=/etc/docker/ca/ca.pem --tlscert=/etc/docker/ca/server-cert.pem --tlskey=/etc/docker/ca/server-key.pem -H tcp://0.0.0.0:2376 -H unix:///var/run/docker.sock
# 重新加载并重启Docker
systemctl daemon-reload
systemctl restart docker
3.2 用户权限管理
默认情况下,Docker需要root权限运行,我们可以将普通用户加入docker组来避免使用sudo:
# 创建docker组(如果不存在)
groupadd docker
# 将当前用户加入docker组
usermod -aG docker $USER
# 刷新组权限
newgrp docker
# 验证非root用户是否可以运行Docker命令
docker run hello-world
警告:将用户加入docker组等同于授予该用户root权限,在生产环境中应谨慎操作
4. 华为云容器镜像服务(SWR)集成
4.1 华为云SWR基本配置
华为云容器镜像服务(SWR)提供了私有镜像仓库功能,首先需要在华为云控制台完成以下操作:
- 在"容器 > 容器镜像服务"中创建组织
- 获取访问凭证(用户名一般为区域项目名称,密码为临时密码)
在服务器上登录SWR:
# 安装华为云CLI工具(可选)
pip install huaweicloudsdkcore huaweicloudsdkecs huaweicloudsdkvpc
# 登录SWR
docker login -u <用户名> -p <密码> <SWR域名>
4.2 镜像推送与拉取示例
# 拉取官方镜像
docker pull nginx:latest
# 重打标签以匹配SWR格式
docker tag nginx:latest <SWR域名>/<组织名称>/nginx:latest
# 推送镜像到SWR
docker push <SWR域名>/<组织名称>/nginx:latest
# 从SWR拉取镜像
docker pull <SWR域名>/<组织名称>/nginx:latest
4.3 使用华为云容器引擎(CCE)
华为云还提供了容器引擎服务(CCE),可以直接在Kubernetes集群中使用SWR镜像:
- 在"容器 > 容器引擎"中创建集群
- 配置kubectl连接到集群
- 创建使用SWR镜像的Deployment
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: <SWR域名>/<组织名称>/nginx:latest
ports:
- containerPort: 80
5. 常见问题排查与优化
5.1 Docker启动失败问题
问题现象 :执行docker命令时提示"Cannot connect to the Docker daemon"
解决方案 :
- 检查Docker服务状态:
systemctl status docker
- 查看日志定位问题:
journalctl -u docker -n 50 --no-pager
常见原因及修复方法:
| 错误类型 | 可能原因 | 解决方案 |
|---|---|---|
| iptables冲突 | 防火墙规则冲突 |
执行
iptables -F
后重启docker
|
| 存储驱动问题 | 不兼容的存储驱动 | 修改daemon.json中的storage-driver为overlay2 |
| 磁盘空间不足 | /var/lib/docker空间不足 | 清理镜像或扩容磁盘 |
5.2 镜像拉取速度慢
优化方案 :
- 配置多个镜像加速器:
{
"registry-mirrors": [
"https://<华为云SWR域名>",
"https://hub-mirror.c.163.com",
"https://mirror.baidubce.com"
]
}
- 使用华为云容器镜像服务的"镜像同步"功能,将常用镜像同步到华为云
5.3 容器资源限制
华为云ECS上运行Docker容器时,建议对容器资源进行限制以避免单个容器占用全部资源:
# 运行容器时限制CPU和内存
docker run -it --cpus 1 --memory 1g <镜像名称>
# 查看容器资源使用情况
docker stats
对于生产环境,建议使用docker-compose或Kubernetes进行更精细的资源管理。
更多推荐
所有评论(0)