logo

从零搭建Docker环境:云服务器部署全流程指南

作者:热心市民鹿先生2025.09.26 21:39浏览量:0

简介:本文详细介绍如何选择云服务器、完成基础配置并部署Docker环境,涵盖安全组设置、镜像加速、容器管理等关键步骤,适合开发者和企业用户参考。

一、云服务器选型与部署前准备

1.1 云服务器选择策略

主流云服务商(如阿里云、腾讯云、AWS等)均提供弹性计算服务,选择时应重点考虑:

  • 实例规格:根据业务需求选择CPU/内存配置,例如Web应用可选2核4G,大数据处理需8核32G以上
  • 操作系统镜像:推荐CentOS 8/Ubuntu 20.04 LTS等稳定版本,注意选择带”Docker优化”的特殊镜像
  • 带宽配置:初始部署建议5-10Mbps,后续可根据流量监控动态调整
  • 存储方案:系统盘建议SSD 40GB以上,数据盘按实际需求配置(如数据库需单独挂载)

1.2 安全组配置要点

创建安全组时需开放必要端口:

  1. # 示例安全组规则(CentOS)
  2. 22/TCP # SSH管理
  3. 80/TCP # HTTP服务
  4. 443/TCP # HTTPS服务
  5. 2375/TCP # Docker远程API(生产环境建议禁用)
  6. 2376/TCP # Docker TLS远程访问

安全建议

  • 限制SSH访问源IP(如仅允许办公网络
  • 使用密钥对认证替代密码登录
  • 定期审查安全组规则,删除无用端口

二、系统基础环境配置

2.1 操作系统优化

以CentOS 8为例执行基础优化:

  1. # 更新系统
  2. sudo dnf update -y
  3. # 安装必要工具
  4. sudo dnf install -y wget curl vim net-tools
  5. # 配置时区
  6. sudo timedatectl set-timezone Asia/Shanghai
  7. # 禁用SELinux(测试环境)
  8. sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
  9. sudo setenforce 0

2.2 防火墙配置

  1. # 安装firewalld并配置
  2. sudo dnf install firewalld -y
  3. sudo systemctl start firewalld
  4. sudo systemctl enable firewalld
  5. # 开放必要端口
  6. sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
  7. sudo firewall-cmd --zone=public --add-port=443/tcp --permanent
  8. sudo firewall-cmd --reload

三、Docker环境安装与配置

3.1 官方安装方法

推荐使用Docker官方仓库安装:

  1. # 卸载旧版本(如有)
  2. sudo dnf remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
  3. # 安装依赖
  4. sudo dnf install -y yum-utils device-mapper-persistent-data lvm2
  5. # 添加仓库
  6. sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  7. # 安装Docker CE
  8. sudo dnf install docker-ce docker-ce-cli containerd.io -y
  9. # 启动服务
  10. sudo systemctl start docker
  11. sudo systemctl enable docker

3.2 国内镜像加速配置

编辑/etc/docker/daemon.json文件:

  1. {
  2. "registry-mirrors": [
  3. "https://registry.docker-cn.com",
  4. "https://mirror.baidubce.com"
  5. ],
  6. "exec-opts": ["native.cgroupdriver=systemd"],
  7. "log-driver": "json-file",
  8. "log-opts": {
  9. "max-size": "100m"
  10. },
  11. "storage-driver": "overlay2"
  12. }

重启服务生效:

  1. sudo systemctl daemon-reload
  2. sudo systemctl restart docker

3.3 基础使用验证

  1. # 运行测试容器
  2. sudo docker run --rm hello-world
  3. # 查看镜像列表
  4. sudo docker images
  5. # 查看运行中容器
  6. sudo docker ps

四、Docker高级配置与管理

4.1 用户权限管理

创建docker用户组并添加当前用户:

  1. sudo groupadd docker
  2. sudo usermod -aG docker $USER
  3. newgrp docker # 立即生效

4.2 资源限制配置

运行容器时设置资源限制:

  1. sudo docker run -it --name test \
  2. --memory="512m" \
  3. --memory-swap="1g" \
  4. --cpus="1.5" \
  5. --cpu-shares=1024 \
  6. ubuntu bash

4.3 日志与存储管理

  1. # 查看容器日志
  2. sudo docker logs -f <container_id>
  3. # 配置日志轮转
  4. 编辑`/etc/docker/daemon.json`添加:
  5. ```json
  6. {
  7. "log-opts": {
  8. "max-size": "10m",
  9. "max-file": "3"
  10. }
  11. }

五、生产环境最佳实践

5.1 镜像构建优化

  • 使用多阶段构建减少镜像体积
    ```dockerfile

    示例:Go应用多阶段构建

    FROM golang:1.18 AS builder
    WORKDIR /app
    COPY . .
    RUN go build -o myapp .

FROM alpine:latest
WORKDIR /root
COPY —from=builder /app/myapp .
CMD [“./myapp”]

  1. ## 5.2 容器编排基础
  2. 使用Docker Compose管理多容器应用:
  3. ```yaml
  4. # docker-compose.yml示例
  5. version: '3'
  6. services:
  7. web:
  8. image: nginx:latest
  9. ports:
  10. - "80:80"
  11. volumes:
  12. - ./html:/usr/share/nginx/html
  13. db:
  14. image: mysql:5.7
  15. environment:
  16. MYSQL_ROOT_PASSWORD: example

5.3 安全加固建议

  • 定期更新基础镜像
  • 使用非root用户运行容器
  • 限制容器能力(--cap-drop=ALL
  • 启用Seccomp和AppArmor配置文件

六、故障排查与维护

6.1 常见问题处理

问题现象 可能原因 解决方案
Docker无法启动 存储驱动冲突 修改/etc/docker/daemon.json的storage-driver
镜像拉取慢 网络问题 配置国内镜像加速器
容器频繁重启 资源不足 调整内存/CPU限制

6.2 定期维护任务

  1. # 清理无用资源
  2. sudo docker system prune -af
  3. # 查看磁盘使用
  4. sudo docker system df
  5. # 更新Docker版本
  6. sudo dnf update docker-ce -y

通过以上步骤,开发者可以在云服务器上构建稳定高效的Docker环境。实际部署时,建议先在测试环境验证配置,再逐步迁移到生产环境。对于企业级应用,可考虑结合Kubernetes进行容器编排,实现更强大的资源管理和服务发现能力。

相关文章推荐

发表评论

活动