简介:本文详细介绍在Linux系统上部署Docker的完整流程,涵盖环境准备、安装方式、配置优化及安全加固,适合开发者和运维人员参考。
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功能。
Docker运行的最小资源需求为2GB内存和2个CPU核心。对于生产环境,建议配置4GB以上内存和4核CPU。存储方面,Docker默认使用/var/lib/docker目录,需确保该分区有足够的空间(建议至少20GB)。可通过df -h /var/lib/docker检查磁盘使用情况。
Docker依赖curl、apt-transport-https(Debian系)或yum-utils(RHEL系)等工具。在Ubuntu上执行:
sudo apt updatesudo apt install -y curl apt-transport-https ca-certificates gnupg-agent software-properties-common
在CentOS上执行:
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
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
sudo apt updatesudo apt install -y docker-ce docker-ce-cli containerd.io
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install -y docker-ce docker-ce-cli containerd.io
对于急需使用的场景,可使用官方提供的便捷脚本:
curl -fsSL https://get.docker.com | sh
此方法会自动检测系统并安装最新稳定版,但缺乏自定义配置选项。
适用于需要特定版本或定制功能的场景:
wget https://download.docker.com/linux/static/stable/x86_64/docker-24.0.7.tgz
tar -xzvf docker-24.0.7.tgzsudo cp docker/* /usr/local/bin/
[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
# 三、部署后配置优化## 3.1 用户组管理将当前用户加入`docker`组以避免每次使用`sudo`:```bashsudo usermod -aG docker $USERnewgrp docker # 立即生效
验证权限:
docker run hello-world
Docker支持多种存储驱动(overlay2、aufs、btrfs等),其中overlay2是性能最优的选择。在/etc/docker/daemon.json中配置:
{"storage-driver": "overlay2"}
重启服务生效:
sudo systemctl restart docker
国内用户可配置镜像加速器(以阿里云为例):
/etc/docker/daemon.json:
{"registry-mirrors": ["https://<your-id>.mirror.aliyuncs.com"]}
防止容器占用过多主机资源:
{"default-ulimits": {"nofile": {"Name": "nofile","Hard": 65535,"Soft": 65535}},"exec-opts": ["native.cgroupdriver=systemd"]}
避免日志文件过大占用磁盘:
{"log-driver": "json-file","log-opts": {"max-size": "10m","max-file": "3"}}
使用--network参数限制容器网络访问:
docker run --network=host nginx # 主机网络模式(谨慎使用)docker run --network=none nginx # 完全隔离模式
更推荐创建自定义网络:
docker network create --driver=bridge --subnet=172.18.0.0/16 my_netdocker run --network=my_net nginx
若服务启动失败,首先检查日志:
journalctl -u docker.service -n 50 --no-pager
常见原因包括:
chown -R root:docker /var/lib/docker)overlay和br_netfilter模块)对于高并发场景:
/etc/sysctl.conf:
net.ipv4.ip_forward=1net.bridge.bridge-nf-call-iptables=1
echo "net.core.default_qdisc=fq" >> /etc/sysctl.confecho "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.confsysctl -p
升级前务必备份数据:
sudo systemctl stop dockersudo apt install -y docker-ce=<version> docker-ce-cli=<version> # Ubuntusudo yum upgrade docker-ce docker-ce-cli # CentOS
升级后验证:
docker versiondocker info | grep "Storage Driver"
/var/lib/docker目录或使用docker save导出镜像通过以上步骤,您可以在Linux系统上完成Docker的完整部署与优化配置。实际生产环境中,建议结合企业具体需求进行定制化调整,并定期审查安全配置。