logo

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

作者:carzy2025.09.26 21:40浏览量:0

简介:本文详细讲解如何选择云服务器、完成基础配置,并通过Docker实现容器化部署,涵盖环境搭建、镜像管理及常见问题解决方案。

一、云服务器选型与基础配置

1.1 云服务器选择策略

选择云服务器需综合考虑业务需求、预算及扩展性。对于中小型项目,推荐选择1核2G内存的入门级实例(如AWS t3.micro或阿里云ecs.c5.large),这类配置可满足Docker基础运行需求,同时保持较低成本。若涉及高并发应用,建议选择4核8G以上配置,并关注网络带宽(建议不低于5Mbps)和存储类型(SSD优于HDD)。

1.2 操作系统安装与优化

推荐使用Ubuntu 20.04 LTS或CentOS 8作为基础系统,两者均提供长期支持且对Docker兼容性良好。安装时需注意:

  • 分区方案:采用LVM管理/var分区,为Docker预留50GB以上空间
  • 网络配置:启用静态IP并配置安全组规则,开放22(SSH)、80(HTTP)、443(HTTPS)及2375(Docker远程API,可选)端口
  • 系统优化

    1. # 修改文件描述符限制
    2. echo "* soft nofile 65535" >> /etc/security/limits.conf
    3. echo "* hard nofile 65535" >> /etc/security/limits.conf
    4. # 禁用交换分区(生产环境慎用)
    5. sudo swapoff -a

1.3 安全加固措施

实施最小权限原则,创建专用用户并配置sudo权限:

  1. sudo adduser dockeradmin
  2. sudo usermod -aG sudo dockeradmin

配置SSH密钥认证,禁用密码登录:

  1. # 在本地生成密钥对
  2. ssh-keygen -t ed25519
  3. # 将公钥上传至服务器
  4. ssh-copy-id -i ~/.ssh/id_ed25519.pub dockeradmin@<服务器IP>
  5. # 修改SSH配置
  6. sudo sed -i 's/^#PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config
  7. sudo systemctl restart sshd

二、Docker环境安装与配置

2.1 官方安装方案

推荐使用Docker官方提供的便捷安装脚本(适用于Ubuntu/Debian):

  1. curl -fsSL https://get.docker.com | sh
  2. sudo usermod -aG docker $USER # 将当前用户加入docker组
  3. newgrp docker # 立即生效

对于CentOS系统,需先配置yum仓库:

  1. sudo yum install -y yum-utils
  2. sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  3. sudo yum install docker-ce docker-ce-cli containerd.io

2.2 存储驱动选择

Docker支持多种存储驱动,生产环境推荐使用overlay2(Linux内核4.0+默认):

  1. # 验证当前存储驱动
  2. docker info | grep "Storage Driver"
  3. # 若需修改,编辑/etc/docker/daemon.json
  4. sudo tee /etc/docker/daemon.json <<-'EOF'
  5. {
  6. "storage-driver": "overlay2"
  7. }
  8. EOF
  9. sudo systemctl restart docker

2.3 网络配置优化

配置桥接网络以提高容器间通信效率:

  1. # 创建自定义网络
  2. docker network create --driver bridge --subnet 172.18.0.0/16 my_bridge
  3. # 验证网络
  4. docker network inspect my_bridge

对于需要暴露端口的服务,建议使用主机模式(—network=host)或指定端口映射:

  1. docker run -d --name nginx -p 80:80 --network my_bridge nginx

三、Docker高级配置与管理

3.1 镜像加速配置

配置国内镜像源可显著提升拉取速度(以阿里云为例):

  1. sudo mkdir -p /etc/docker
  2. sudo tee /etc/docker/daemon.json <<-'EOF'
  3. {
  4. "registry-mirrors": ["https://<你的镜像加速器地址>.mirror.aliyuncs.com"]
  5. }
  6. EOF
  7. sudo systemctl daemon-reload
  8. sudo systemctl restart docker

3.2 资源限制配置

通过--cpus--memory等参数控制容器资源使用:

  1. docker run -d --name stress_test \
  2. --cpus=1.5 \
  3. --memory=512m \
  4. --memory-swap=1g \
  5. progrium/stress --cpu 2 --io 1 --vm 1 --vm-bytes 256M --timeout 60s

3.3 日志管理方案

配置日志驱动和轮转策略:

  1. # 编辑daemon.json
  2. sudo tee /etc/docker/daemon.json <<-'EOF'
  3. {
  4. "log-driver": "json-file",
  5. "log-opts": {
  6. "max-size": "10m",
  7. "max-file": "3"
  8. }
  9. }
  10. EOF
  11. sudo systemctl restart docker

四、常见问题解决方案

4.1 权限问题处理

当遇到Got permission denied错误时,执行:

  1. sudo chmod 666 /var/run/docker.sock
  2. # 更安全的做法是创建docker组并添加用户(见2.1节)

4.2 端口冲突解决

使用netstat -tulnpss -tulnp查找占用端口的进程:

  1. sudo netstat -tulnp | grep :80
  2. # 终止冲突进程
  3. sudo kill -9 <PID>

4.3 镜像拉取失败

检查网络连接和镜像名称是否正确,尝试指定完整镜像标签:

  1. docker pull nginx:latest
  2. # 若使用私有仓库,需先登录
  3. docker login registry.example.com

五、最佳实践建议

  1. 镜像管理:使用多阶段构建减少镜像体积

    1. # 示例:Go应用多阶段构建
    2. FROM golang:1.18 AS builder
    3. WORKDIR /app
    4. COPY . .
    5. RUN go build -o myapp
    6. FROM alpine:latest
    7. WORKDIR /app
    8. COPY --from=builder /app/myapp .
    9. CMD ["./myapp"]
  2. 编排工具:当容器数量超过5个时,建议引入Docker Compose或Kubernetes

    1. # docker-compose.yml示例
    2. version: '3'
    3. services:
    4. web:
    5. image: nginx:latest
    6. ports:
    7. - "80:80"
    8. db:
    9. image: mysql:5.7
    10. environment:
    11. MYSQL_ROOT_PASSWORD: example
  3. 监控方案:部署cAdvisor或Prometheus监控容器资源使用

    1. docker run -d \
    2. --name=cadvisor \
    3. --publish=8080:8080 \
    4. --volume=/:/rootfs:ro \
    5. --volume=/var/run:/var/run:ro \
    6. --volume=/sys:/sys:ro \
    7. --volume=/var/lib/docker/:/var/lib/docker:ro \
    8. google/cadvisor:latest

通过以上步骤,您可完成从云服务器选型到Docker环境优化的完整部署。建议定期执行docker system prune清理无用资源,并关注Docker官方安全公告及时更新版本。对于生产环境,建议配置自动备份和灾备方案,确保服务高可用性。

相关文章推荐

发表评论

活动