Docker 全场景安装与镜像管理实战教程(在线+内网离线+镜像导入导出)

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 在线安装

  1. 下载Docker Desktop安装包:官网阿里云镜像
  2. 双击安装包,勾选「Use WSL 2 instead of Hyper-V」(推荐WSL2);
  3. 安装完成后重启电脑,启动Docker Desktop,等待右下角图标变为绿色;
  4. 打开PowerShell,执行 docker --versiondocker 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 离线安装

  1. 有网机器下载DEB包:

    bash 复制代码
    mkdir -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
  2. 内网机器安装:

    bash 复制代码
    tar -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
  • 坑3 :Windows安装后Docker Desktop一直卡在"Starting"。

    ✅ 避坑方案:

    • 确认启用WSL2:wsl --install
    • 升级WSL2内核:微软官网下载
    • 以管理员身份运行Docker Desktop。

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即可执行)。

七、总结

关键点回顾

  1. Docker安装分两类场景:在线环境优先用国内镜像源(阿里云),内网环境需先下载离线包再安装;
  2. 镜像迁移核心流程:外网pullsave导出→内网load导入,可选搭建私有仓库统一管理;
  3. 避坑核心:安装前优化环境(关闭防火墙/SELinux)、配置镜像仓库信任、检查权限和网络。

通过本文的教程,你可以在任意环境下完成Docker安装,解决镜像拉取和迁移的核心问题。生产环境中,建议结合私有仓库实现镜像标准化管理,同时做好镜像版本控制和数据备份,确保容器化部署稳定可靠。

相关推荐
一次旅行1 小时前
Linux安全总结
linux·运维·安全
一次旅行1 小时前
Docker安全总结
安全·docker·eureka
历程里程碑2 小时前
26信号处理一:从闹钟到进程控制的奥秘
linux·运维·服务器·开发语言·c++·算法·排序算法
wanhengidc2 小时前
云手机 打造云端算力
运维·服务器·网络·游戏·智能手机
Gofarlic_OMS2 小时前
LS-DYNA许可证全局状态及集群计算资源使用可视化监控大屏
运维·开发语言·算法·matlab·自动化
feng68_2 小时前
Web应用服务器Tomcat
运维·前端·tomcat
only_Klein2 小时前
Kubernetes 版本升级
容器·kubernetes·upgrade
电商API_180079052472 小时前
如何将小红书评论数据封装到API实现自动化分析?测试API实战指南
运维·chrome·自动化
梅孔立2 小时前
批量服务器操作实战:100台服务器一键管控(含脚本+避坑指南)
运维·服务器