Docker 全场景安装与镜像管理实战教程(在线+内网离线+镜像导入导出)
Docker 作为容器化核心工具,安装方式和镜像管理直接影响使用体验。本文针对「在线环境」和「无外网内网环境」分别提供详细安装步骤,同时覆盖镜像的导入、导出、迁移、私有仓库搭建等核心操作,解决新手最常遇到的"安装失败""镜像拉取不到""内网无法部署"等问题。
一、前置准备
1. 环境要求
| 系统类型 | 推荐版本 | 核心要求 |
|---|---|---|
| CentOS/RHEL | 7.x/8.x/9.x(64位) | 内核 ≥ 3.10,禁用SELinux/防火墙(可选) |
| Ubuntu/Debian | 18.04+/20.04+/22.04+ | 内核 ≥ 4.4,开启cgroup和namespace |
| Windows | Windows 10/11 专业版/企业版 | 启用Hyper-V或WSL2 |
2. 通用环境优化(Linux)
bash
# 1. 关闭防火墙(测试环境,生产按需放行端口)
systemctl stop firewalld && systemctl disable firewalld
# 2. 关闭SELinux
setenforce 0
sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config
# 3. 关闭swap(可选,提升Docker性能)
swapoff -a
sed -i '/swap/s/^/#/' /etc/fstab
# 4. 安装基础依赖
# CentOS/RHEL
yum install -y yum-utils device-mapper-persistent-data lvm2 wget
# Ubuntu/Debian
apt update && apt install -y apt-transport-https ca-certificates curl software-properties-common
二、在线环境安装Docker(推荐)
在线安装流程简单,优先使用官方源或国内镜像源(如阿里云),避免网络问题。
1. CentOS/RHEL 在线安装
bash
# 步骤1:添加Docker阿里云源(比官方源快)
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 步骤2:安装Docker CE(社区版,免费)
# 查看可用版本(可选)
yum list docker-ce --showduplicates | sort -r
# 安装指定版本(推荐稳定版,如25.0.3)
yum install -y docker-ce-25.0.3 docker-ce-cli-25.0.3 containerd.io docker-buildx-plugin docker-compose-plugin
# 步骤3:启动并设置开机自启
systemctl start docker
systemctl enable docker
# 步骤4:验证安装
docker --version # 输出版本号即成功
docker run hello-world # 运行测试容器,拉取官方测试镜像
2. Ubuntu/Debian 在线安装
bash
# 步骤1:添加Docker GPG密钥
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# 步骤2:添加阿里云源
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 步骤3:安装Docker
apt update
apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# 步骤4:启动并验证
systemctl start docker
systemctl enable docker
docker --version
docker run hello-world
3. Windows 在线安装
- 下载Docker Desktop安装包:官网 或 阿里云镜像;
- 双击安装包,勾选「Use WSL 2 instead of Hyper-V」(推荐WSL2);
- 安装完成后重启电脑,启动Docker Desktop,等待右下角图标变为绿色;
- 打开PowerShell,执行
docker --version和docker run hello-world验证。
三、内网离线安装Docker(无外网环境)
内网环境需提前下载安装包和依赖,分「下载离线包」和「内网安装」两步。
步骤1:在有网机器下载离线包
bash
# 1. 创建离线包目录
mkdir -p /docker-offline && cd /docker-offline
# 2. 下载Docker RPM包(CentOS示例,Ubuntu替换为DEB包)
# 方式1:手动下载(推荐,版本可控)
# 访问阿里云镜像站:https://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/stable/Packages/
# 下载以下包:
# - docker-ce-25.0.3-1.el7.x86_64.rpm
# - docker-ce-cli-25.0.3-1.el7.x86_64.rpm
# - containerd.io-1.6.28-3.1.el7.x86_64.rpm
# - docker-buildx-plugin-0.12.1-1.el7.x86_64.rpm
# - docker-compose-plugin-2.24.6-1.el7.x86_64.rpm
# 方式2:脚本自动下载(需有网机器已装yum-utils)
yum install -y yum-utils
yumdownloader --resolve --destdir=/docker-offline docker-ce-25.0.3 docker-ce-cli-25.0.3 containerd.io docker-buildx-plugin docker-compose-plugin
# 3. 打包离线包(方便传输到内网)
tar -zcvf docker-offline-package.tar.gz /docker-offline
步骤2:内网机器安装Docker
bash
# 1. 上传离线包到内网服务器,解压
mkdir -p /docker-offline
tar -zxvf docker-offline-package.tar.gz -C /docker-offline
# 2. 安装离线包(CentOS)
cd /docker-offline
rpm -ivh *.rpm --nodeps --force
# 3. 启动并验证
systemctl start docker
systemctl enable docker
docker --version
补充:Ubuntu/Debian 离线安装
-
有网机器下载DEB包:
bashmkdir -p /docker-offline && cd /docker-offline apt download docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin tar -zcvf docker-deb-offline.tar.gz /docker-offline -
内网机器安装:
bashtar -zxvf docker-deb-offline.tar.gz -C /docker-offline cd /docker-offline dpkg -i *.deb apt -f install # 修复依赖(若有)
四、Docker镜像核心操作(导入/导出/迁移)
内网环境无法直接拉取镜像,需通过「外网拉取→导出镜像→内网导入」的方式迁移,以下是全流程操作。
1. 镜像导出(save):将镜像保存为文件
bash
# 语法:docker save [选项] 镜像名:标签 -o 导出文件路径
# 示例1:导出单个镜像(如nginx:1.24-alpine)
docker save nginx:1.24-alpine -o nginx-1.24-alpine.tar
# 示例2:导出多个镜像到一个文件
docker save -o multi-images.tar nginx:1.24-alpine mysql:8.0 redis:7.2
# 示例3:压缩导出(节省空间)
docker save nginx:1.24-alpine | gzip > nginx-1.24-alpine.tar.gz
2. 镜像导入(load):将文件导入为Docker镜像
bash
# 语法:docker load [选项] -i 导入文件路径
# 示例1:导入普通tar包
docker load -i nginx-1.24-alpine.tar
# 示例2:导入压缩包
docker load -i nginx-1.24-alpine.tar.gz
# 验证导入结果
docker images # 查看已导入的镜像
3. 镜像迁移实战(外网→内网)
步骤1:外网机器拉取并导出镜像
bash
# 1. 拉取需要的镜像(如nginx、mysql)
docker pull nginx:1.24-alpine
docker pull mysql:8.0
# 2. 导出镜像为压缩包
docker save nginx:1.24-alpine mysql:8.0 | gzip > docker-images.tar.gz
# 3. 将压缩包传输到内网机器(如通过U盘、SCP、FTP)
# 示例:SCP传输(若内网机器可通外网机器)
scp docker-images.tar.gz root@192.168.1.100:/root/
步骤2:内网机器导入并使用镜像
bash
# 1. 导入镜像
docker load -i docker-images.tar.gz
# 2. 验证并运行
docker images # 确认镜像存在
docker run -d --name nginx-test -p 80:80 nginx:1.24-alpine
curl http://localhost # 访问nginx,验证运行成功
4. 镜像重命名(tag):适配私有仓库
导入镜像后若需推送到私有仓库,需修改镜像标签:
bash
# 语法:docker tag 原镜像名:标签 新镜像名:标签
# 示例:将nginx镜像标记为私有仓库地址
docker tag nginx:1.24-alpine 192.168.1.200:5000/nginx:1.24-alpine
五、内网私有镜像仓库搭建(可选)
内网环境推荐搭建私有仓库(Registry),统一管理镜像,避免重复导入导出。
1. 快速搭建私有仓库
bash
# 步骤1:拉取registry镜像(外网机器先拉取并导出到内网)
docker pull registry:2
# 步骤2:启动私有仓库容器(内网机器)
docker run -d \
--name docker-registry \
--restart=always \
-p 5000:5000 \
-v /data/registry:/var/lib/registry \
registry:2
# 参数说明:
# -v:将仓库数据挂载到本地目录,避免容器删除后数据丢失
# -p:暴露5000端口,供内网机器访问
# 步骤3:配置Docker信任私有仓库(否则推送失败)
# CentOS/Ubuntu:修改daemon.json
cat > /etc/docker/daemon.json << EOF
{
"insecure-registries": ["192.168.1.200:5000"]
}
EOF
# 重启Docker生效
systemctl restart docker
2. 私有仓库使用示例
bash
# 步骤1:标记镜像为私有仓库地址
docker tag nginx:1.24-alpine 192.168.1.200:5000/nginx:1.24-alpine
# 步骤2:推送到私有仓库
docker push 192.168.1.200:5000/nginx:1.24-alpine
# 步骤3:内网其他机器拉取镜像
docker pull 192.168.1.200:5000/nginx:1.24-alpine
# 步骤4:查看仓库中的镜像(可选)
curl http://192.168.1.200:5000/v2/_catalog # 列出所有镜像
curl http://192.168.1.200:5000/v2/nginx/tags/list # 列出nginx的标签
六、避坑指南(新手必看)
1. 安装类坑
-
坑1 :在线安装时提示"无法找到docker-ce包"。
✅ 避坑方案:检查是否添加了正确的Docker源,CentOS需确认系统版本(如CentOS 7用el7源,CentOS 8用el8源)。
-
坑2 :离线安装后启动Docker失败,提示"containerd启动失败"。
✅ 避坑方案:
- 检查containerd是否安装:
rpm -qa | grep containerd; - 重启containerd:
systemctl restart containerd; - 查看日志:
journalctl -u docker -f。
- 检查containerd是否安装:
-
坑3 :Windows安装后Docker Desktop一直卡在"Starting"。
✅ 避坑方案:
- 确认启用WSL2:
wsl --install; - 升级WSL2内核:微软官网下载;
- 以管理员身份运行Docker Desktop。
- 确认启用WSL2:
2. 镜像操作类坑
-
坑1 :镜像导出后导入失败,提示"no such file or directory"。
✅ 避坑方案:
- 检查导出文件路径是否正确;
- 压缩包需用
docker load直接导入,无需解压; - 避免导出时中断(如网络断开、磁盘满)。
-
坑2 :推送镜像到私有仓库失败,提示"unauthorized"。
✅ 避坑方案:
- 配置
insecure-registries并重启Docker; - 确认私有仓库地址和端口正确;
- 若仓库有认证,需先登录:
docker login 192.168.1.200:5000。
- 配置
-
坑3 :内网机器拉取私有仓库镜像慢/失败。
✅ 避坑方案:
- 检查私有仓库服务器磁盘空间;
- 确认内网网络互通(ping 192.168.1.200);
- 限制镜像大小,优先使用轻量版镜像(如alpine版本)。
3. 权限类坑
- 坑 :普通用户执行docker命令提示"permission denied"。
✅ 避坑方案:- 将用户加入docker组:
usermod -aG docker username; - 重新登录用户生效:
su - username; - 测试:
docker ps(无需sudo即可执行)。
- 将用户加入docker组:
七、总结
关键点回顾
- Docker安装分两类场景:在线环境优先用国内镜像源(阿里云),内网环境需先下载离线包再安装;
- 镜像迁移核心流程:外网
pull→save导出→内网load导入,可选搭建私有仓库统一管理; - 避坑核心:安装前优化环境(关闭防火墙/SELinux)、配置镜像仓库信任、检查权限和网络。
通过本文的教程,你可以在任意环境下完成Docker安装,解决镜像拉取和迁移的核心问题。生产环境中,建议结合私有仓库实现镜像标准化管理,同时做好镜像版本控制和数据备份,确保容器化部署稳定可靠。