logo

Linux系统下Docker部署全攻略:从安装到实战配置

作者:问答酱2025.09.19 11:10浏览量:0

简介:本文详细介绍在Linux系统上部署Docker的完整流程,涵盖环境准备、安装方式、配置优化及安全加固,适合开发者和运维人员参考。

一、部署前的环境准备

1.1 操作系统兼容性检查

Docker官方支持的Linux发行版包括Ubuntu(20.04 LTS/22.04 LTS)、CentOS(7/8)、Debian(10/11)和Fedora(35+)。推荐使用较新的LTS版本,例如Ubuntu 22.04 LTS,其内核版本(5.15+)能更好地支持Docker的cgroup v2特性。可通过uname -r命令查看当前内核版本,低于4.15的内核可能无法使用完整的Docker功能。

1.2 系统资源要求

Docker运行的最小资源需求为2GB内存和2个CPU核心。对于生产环境,建议配置4GB以上内存和4核CPU。存储方面,Docker默认使用/var/lib/docker目录,需确保该分区有足够的空间(建议至少20GB)。可通过df -h /var/lib/docker检查磁盘使用情况。

1.3 依赖包安装

Docker依赖curlapt-transport-https(Debian系)或yum-utils(RHEL系)等工具。在Ubuntu上执行:

  1. sudo apt update
  2. sudo apt install -y curl apt-transport-https ca-certificates gnupg-agent software-properties-common

在CentOS上执行:

  1. sudo yum install -y yum-utils device-mapper-persistent-data lvm2

二、Docker安装方式详解

2.1 官方仓库安装(推荐)

Ubuntu/Debian系统

  1. 添加Docker官方GPG密钥:
    1. curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
  2. 添加稳定版仓库:
    1. echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
  3. 安装Docker引擎:
    1. sudo apt update
    2. sudo apt install -y docker-ce docker-ce-cli containerd.io

CentOS/RHEL系统

  1. 添加仓库:
    1. sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  2. 安装Docker:
    1. sudo yum install -y docker-ce docker-ce-cli containerd.io

2.2 脚本快速安装

对于急需使用的场景,可使用官方提供的便捷脚本:

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

此方法会自动检测系统并安装最新稳定版,但缺乏自定义配置选项。

2.3 手动编译安装(高级)

适用于需要特定版本或定制功能的场景:

  1. 下载源码包:
    1. wget https://download.docker.com/linux/static/stable/x86_64/docker-24.0.7.tgz
  2. 解压并安装:
    1. tar -xzvf docker-24.0.7.tgz
    2. sudo cp docker/* /usr/local/bin/
  3. 创建服务文件(Systemd):
    ```ini

    /etc/systemd/system/docker.service

    [Unit]
    Description=Docker Application Container Engine
    After=network-online.target firewalld.service
    Wants=network-online.target

[Service]
Type=notify
ExecStart=/usr/local/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
Restart=always
RestartSec=5
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TasksMax=infinity
Delegate=yes
KillMode=process

[Install]
WantedBy=multi-user.target

  1. # 三、部署后配置优化
  2. ## 3.1 用户组管理
  3. 将当前用户加入`docker`组以避免每次使用`sudo`
  4. ```bash
  5. sudo usermod -aG docker $USER
  6. newgrp docker # 立即生效

验证权限:

  1. docker run hello-world

3.2 存储驱动选择

Docker支持多种存储驱动(overlay2、aufs、btrfs等),其中overlay2是性能最优的选择。在/etc/docker/daemon.json中配置:

  1. {
  2. "storage-driver": "overlay2"
  3. }

重启服务生效:

  1. sudo systemctl restart docker

3.3 镜像加速配置

国内用户可配置镜像加速器(以阿里云为例):

  1. 登录阿里云容器镜像服务获取专属加速地址
  2. 修改/etc/docker/daemon.json
    1. {
    2. "registry-mirrors": ["https://<your-id>.mirror.aliyuncs.com"]
    3. }
  3. 重启Docker服务

四、安全加固最佳实践

4.1 资源限制配置

防止容器占用过多主机资源:

  1. {
  2. "default-ulimits": {
  3. "nofile": {
  4. "Name": "nofile",
  5. "Hard": 65535,
  6. "Soft": 65535
  7. }
  8. },
  9. "exec-opts": ["native.cgroupdriver=systemd"]
  10. }

4.2 日志轮转配置

避免日志文件过大占用磁盘:

  1. {
  2. "log-driver": "json-file",
  3. "log-opts": {
  4. "max-size": "10m",
  5. "max-file": "3"
  6. }
  7. }

4.3 网络隔离策略

使用--network参数限制容器网络访问:

  1. docker run --network=host nginx # 主机网络模式(谨慎使用)
  2. docker run --network=none nginx # 完全隔离模式

更推荐创建自定义网络:

  1. docker network create --driver=bridge --subnet=172.18.0.0/16 my_net
  2. docker run --network=my_net nginx

五、常见问题解决方案

5.1 启动失败排查

若服务启动失败,首先检查日志:

  1. journalctl -u docker.service -n 50 --no-pager

常见原因包括:

  • 端口冲突(检查5375/5376端口)
  • 存储目录权限问题(chown -R root:docker /var/lib/docker
  • 内核参数缺失(需加载overlaybr_netfilter模块)

5.2 性能优化建议

对于高并发场景:

  1. 调整/etc/sysctl.conf
    1. net.ipv4.ip_forward=1
    2. net.bridge.bridge-nf-call-iptables=1
  2. 启用BBR拥塞控制算法:
    1. echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
    2. echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
    3. sysctl -p

5.3 版本升级指南

升级前务必备份数据:

  1. sudo systemctl stop docker
  2. sudo apt install -y docker-ce=<version> docker-ce-cli=<version> # Ubuntu
  3. sudo yum upgrade docker-ce docker-ce-cli # CentOS

升级后验证:

  1. docker version
  2. docker info | grep "Storage Driver"

六、生产环境部署建议

  1. 高可用架构:配置Swarm集群或集成Kubernetes
  2. 监控方案:部署Prometheus+Grafana监控容器指标
  3. 备份策略:定期备份/var/lib/docker目录或使用docker save导出镜像
  4. CI/CD集成:通过Jenkins或GitLab CI实现自动化构建部署

通过以上步骤,您可以在Linux系统上完成Docker的完整部署与优化配置。实际生产环境中,建议结合企业具体需求进行定制化调整,并定期审查安全配置。

相关文章推荐

发表评论