CentOS7 Docker 离线部署 + Registry 私有仓库完整实操 摘要本次容器云实训分为两大实操阶段搭建双节点环境server 主机 10.62.3.137 部署 Docker 与私有镜像仓库client 客户端完成镜像拉取与 Web 服务验证。全程采用离线镜像包完成部署覆盖 Docker 安装、镜像管理、容器生命周期操作、私有仓库搭建、镜像推送拉取全流程。文中记录实操命令、参数原理、实操踩坑点与个人学习收获作为课程实训作业记录。一、实训环境概况操作系统CentOS 7 x86_64两台实训节点server 节点IP 10.62.3.137承载 Docker 服务、Registry 私有仓库、httpd 镜像存储client 客户端节点用于访问容器服务、拉取私有仓库镜像离线资源包paas.iso 内置 docker-ce 离线安装包、httpd-2.2.32.tar 镜像额外提供 registry.tar 私有仓库镜像文件实训分为两大模块Docker 基础容器操作、本地私有镜像仓库搭建与镜像分发二、阶段一Docker CE 离线安装与 httpd 容器实操1.本地离线安装 Docker 社区版依托本地 paas.iso 本地软件源离线安装 docker-ce无需外网环境# 执行离线安装命令yum install -y docker-ce# 启动Docker并设置开机自启systemctl start dockersystemctl enable docker实操注意ISO 内置 Docker 版本偏老旧可卸载后在线安装新版client 客户端必须同步安装 Docker否则无法完成镜像拉取与访问测试。基础 Docker 信息查询刚安装完成无镜像、无运行容器执行以下命令# 查看Docker全局详细信息docker info# 查看客户端与服务端版本信息docker version# 查看当前运行容器docker ps# 查看本地存储镜像docker images3.导入离线 httpd 镜像包实训资源已提前将 httpd 镜像文件放置 /opt/paas/images 目录直接加载镜像# 导入tar格式离线镜像docker load -i /opt/paas/images/httpd-2.2.32.tar# 查看导入后的镜像记录IMAGE ID前四位docker images4.创建后台运行 httpd Web 容器通过 docker run 创建持久运行的 Web 容器配置端口映射与重启策略docker run -d --restartunless-stopped -p 8080:80 镜像ID前四位参数通俗解读-d后台守护模式启动容器不占用终端窗口适合长期运行 Web 服务--restartunless-stopped服务自愈策略Docker 服务重启自动拉起容器手动停止容器后不再自动重启-p 宿主机端口:容器内部端口端口转发规则外部访问 10.62.3.137:8080流量转发至容器内 80 端口执行后用docker ps查看运行容器记录容器 ID 用于后续操作。5.Client 节点访问 httpd 服务验证客户端执行 curl 命令测试连通性curlhttp://server:8080也可在物理机浏览器访问地址 http://10.62.3.137:8080页面输出It works!即代表 Web 容器部署成功。6.交互式进入容器内部操作通过 exec 命令进入容器终端查看容器内部系统与网络环境docker exec -it 容器ID前四位 bash# 容器内依次执行命令uname -a # 查看容器内核系统信息ip address # 查看容器独立虚拟网卡ls -lcd binhttpd # 手动启动httpd服务程序exit # 退出容器终端容器持续后台运行7.停止并删除容器实操容器生命周期管理区分运行 / 停止容器删除规则# 停止正在运行的容器docker stop 容器ID# 确认容器已停止docker ps# 删除停止状态的容器docker rm 容器IDCentOS7 Docker 离线部署 Registry 私有仓库完整实操补充实操问题直接删除运行中的容器会报错如需强制清理可使用docker rm -f 容器ID阶段二搭建本地 Registry 私有镜像仓库1.上传并加载 registry 仓库镜像使用 SFTP 工具将离线 registry.tar 上传至 server 节点 /opt/images 目录无目录手动 mkdir 创建加载镜像docker load -i /opt/images/registry.tardocker images2.启动私有仓库容器并验证服务挂载本地目录持久化镜像数据启动 Registry 仓库docker run -d -v /opt/registry:/var/lib/registry -p 5000:5000 --restartalways --name registry registry:latest参数说明-v 数据卷挂载宿主机 /opt/registry 存储镜像删除仓库容器镜像不会丢失--restartalways 无论异常退出还是手动关闭都会自动重启仓库服务验证仓库是否正常启动curl -v http://server:5000/v23.配置非安全 HTTP 私有仓库Docker 默认仅信任 HTTPS 加密仓库本地内网仓库需配置放行不安全地址server 与 client 两端都要操作tee /etc/docker/daemon.json /dev/null EOF{insecure-registries: [server:5000]}EOF# 重载系统配置重启Docker服务生效systemctl daemon-reloadsystemctl restart docker4.镜像打标签、推送至私有仓库镜像推送前必须打上私有仓库地址前缀标签格式为仓库地址:端口/镜像名:版本# 给仓库镜像、httpd镜像打私有仓标签docker tag registry server:5000/registrydocker tag httpd:2.2.32 server:5000/httpd:2.2.32# 推送镜像至本地私有仓库docker push server:5000/registrydocker push server:5000/httpd:2.2.32# 查询仓库内存储的全部镜像curl http://server:5000/v2/_catalog返回{repositories:[httpd,registry]}代表镜像推送成功。5. Client 客户端拉取私有仓库镜像client 节点同步配置 daemon.json 不安全仓库并重启 Docker2查询仓库镜像与版本标签# 查看仓库所有镜像curl http://server:5000/v2/_catalog# 查看httpd镜像可用版本tagcurl http://server:5000/v2/httpd/tags/list# 拉取私有仓库httpd镜像至本地docker pull server:5000/httpd:2.2.32# 查看本地镜像复用阶段一流程创建、访问容器验证可用性docker images实训实操踩坑总结1.镜像推拉报错仅配置 server 端 daemon.json忘记同步修改 client 节点导致客户端无法访问 http 私有仓库2.Web 服务无法访问端口映射前后顺序颠倒、防火墙未开放 8080/5000 端口外部无法连通容器3.仓库镜像丢失启动 registry 容器未添加 - v 数据卷挂载删除容器后全部镜像清空4.删除容器失败docker rm 仅支持删除停止状态容器运行容器需先 stop 或加 - f 强制删除5.客户端域名解析失败无法识别 server 主机名可直接替换 IP 10.62.3.137 执行所有命令。