linux安装docker命令(Linux安装Docker)
作者:路由通
|

发布时间:2025-05-02 20:37:08
标签:
Docker作为容器化技术的核心工具,其安装过程在不同Linux发行版中存在显著差异。本文将从系统兼容性、安装步骤、依赖管理等八个维度深入剖析Linux环境下Docker的安装流程,并通过多维度的对比表格揭示不同发行版的操作差异。一、系统环

Docker作为容器化技术的核心工具,其安装过程在不同Linux发行版中存在显著差异。本文将从系统兼容性、安装步骤、依赖管理等八个维度深入剖析Linux环境下Docker的安装流程,并通过多维度的对比表格揭示不同发行版的操作差异。
一、系统环境要求与兼容性分析
Docker的运行依赖于Linux内核特性,不同发行版需满足特定版本要求:
发行版 | 最低版本要求 | 内核版本 | 架构支持 |
---|---|---|---|
Ubuntu | 18.04 LTS | 4.15+ | x86_64/arm64/s390x |
CentOS | 7.9 | 3.10+ | x86_64/arm64 |
Debian | 10 | 4.19+ | x86_64/arm64/mips64el |
值得注意的是,CentOS 8已停止维护,建议优先选择CentOS Stream版本。对于较老的CentOS 7系统,需手动配置overlay2存储驱动和bridge-nf-call-iptables内核参数。
二、安装前环境准备
不同发行版需执行特定预处理操作:
- Ubuntu/Debian:更新APT源并安装必要依赖包
- CentOS/RHEL:配置YUM源并启用附加仓库
- 通用操作:禁用防火墙或开放2375/2376端口
发行版 | 依赖包管理 | 内核模块配置 |
---|---|---|
Ubuntu 20.04 | apt-get update && apt-get install ca-certificates curl gnupg lsb-release | sysctl -w net.bridge.bridge-nf-call-iptables=1 |
CentOS 7 | yum check-update && yum install -y yum-utils device-mapper-persistent-data lvm2 | modprobe overlay && modprobe fuse-overlayfs |
Debian 11 | apt-get update && apt-get install apt-transport-https ca-certificates curl gnupg2 software-properties-common | echo "overlay" >> /etc/modules-load.d/docker.conf |
三、安装命令对比与版本选择
官方脚本安装与包管理器安装存在本质区别:
安装方式 | 适用场景 | 版本控制 | 更新机制 |
---|---|---|---|
官方脚本安装 | 需要最新测试版或长期支持版 | 可指定特定版本号 | 需重新运行安装脚本 |
包管理器安装 | 生产环境稳定版需求 | 跟随仓库更新 | 通过包管理器升级 |
二进制释放包 | 离线环境或特殊架构 | 手动下载指定版本 | 替换整个文件目录 |
典型安装命令示例:
Ubuntu/Debian体系
curl -fsSL https://get.docker.com -o get-docker.sh && sh get-docker.sh
CentOS/RHEL体系
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repoyum install docker-ce docker-ce-cli containerd.io
通用二进制安装(适用于所有发行版)
tar xvf docker-20.10.24.tgz -C /usr/local/bin/ docker
groupadd docker
usermod -aG docker $USER
四、存储驱动配置差异
不同存储驱动的性能表现和配置要求:
存储驱动 | 推荐场景 | 配置参数 | 性能特征 |
---|---|---|---|
overlay2 | 主流生产环境 | "storage-driver": "overlay2" | 高IOPS,低延迟 |
btrfs | 需要高级快照功能 | /etc/fstab配置挂载选项 | 高存储开销,强数据保护 |
aufs | 旧内核版本兼容 | --storage-driver=aufs | 稳定性最佳,性能中等 |
overlayfs | 最小化依赖环境 | 无特殊配置项 | 基础功能支持,性能受限 |
配置示例(以overlay2为例):
mkdir -p /etc/docker
cat >/etc/docker/daemon.json < "exec-opts": ["native.cgroupdriver=systemd"],
"storage-driver": "overlay2",
"log-driver": "json-file"
EOF
五、网络配置与桥接设置
Docker网络模式对比及配置要点:
网络模式 | 适用场景 | 配置复杂度 | 安全性等级 |
---|---|---|---|
bridge | 单机容器互联 | 低(自动创建docker0) | 中等(IP隔离) |
host | 高性能网络需求 | 极低(共享宿主网络) | 低(无隔离) |
overlay | 跨主机容器通信 | 中(需Swarm集群) | 高(TLS加密) |
macvlan | 物理网络直连 | 中(需网络脚本) | 高(MAC地址隔离) |
自定义桥接网络配置示例:
docker network create -d bridge
--subnet=192.168.100.0/24
--gateway=192.168.100.1
--opt com.docker.network.bridge.name=docker1
custom_network
六、守护进程配置优化
关键配置参数及其影响:
配置项 | 默认值 | 调优建议 | 生效范围 |
---|---|---|---|
max-concurrent-downloads | 3 | 10-20(高带宽环境) | 镜像拉取速度 |
max-concurrent-uploads | 5 | 根据出口带宽调整 | 镜像推送效率 |
live-restore | false | true(生产环境必选) | 服务中断恢复 |
log-level | info | error(生产环境) | 日志输出量控制 |
完整配置示例:
"runtimes":
"nvidia":
"path": "nvidia-container-runtime",
"runtimeArgs": []
,
"features":
"buildkit": true,
"cri": false
,
"http-api-versions": ["1.41", "1.40"]
七、安全加固与权限管理
安全相关配置对比:
安全措施 | 实施方法 | 风险等级 | 配置位置 |
---|---|---|---|
用户权限控制 | sudo usermod -aG docker $USER | 高(root权限风险) | /etc/group |
TLS加密传输 | 生成证书并配置daemon.json | 极高(明文传输风险) | /etc/docker/certs.d/ |
SELinux策略 | semanage fcontext -a -t container_file_t "/path/to(rw)" | 中(CentOS特有) | /etc/selinux/targeted/policy/ |
AppArmor配置 | 需编辑/etc/apparmor.d/docker文件 | 中(Ubuntu特有) | /etc/apparmor.d/ |
典型安全启动参数:
限制内存使用上限(百分比)
ExecStart=/usr/bin/dockerd --memory-swappiness=20 --oom-kill-disable=true --default-ulimit nofile=1024:1024
常见问题定位方法:
症状表现 | 可能原因 | 排查命令 | 解决方案 |
---|---|---|---|
无法启动服务 | 端口冲突(2375/2376) | ss -tulp | grep dockerd | 修改daemon.json中的端口配置或释放占用端口 |
权限不足错误 | journalctl -u docker.service | tail -n 20 | ||
镜像拉取失败 | DNS解析问题 | docker info | grep 'DNS:' && cat /etc/resolv.conf | 配置可靠的DNS服务器或代理镜像源 |
存储空间不足 | df -h | grep /var/lib/docker/overlay2/ | ||
网络连通性异常 | 防火墙规则拦截(iptables) | iptables -L -n -v | grep DOCKER && systemctl status firewalld | 添加防火墙规则允许docker网络流量或停用firewalld/iptables服务 |