在华为云 openEuler 上手工部署 Docker:镜像源与容器运行实战

举报
yd_283275723 发表于 2026/10/27 12:56:59 2026/10/27
【摘要】 以华为云学堂 Docker 实验路径为线索,梳理在 openEuler ECS 上手工部署 Docker、配置华为云镜像源、拉取镜像并运行 httpd 容器的完整步骤与排查清单。

本文以华为云学堂《轻松快速上手 Docker》实验的部署路径为线索,梳理在华为云弹性云服务器 ECS(openEuler 系统)上手工部署 Docker 的完整做法,并说明镜像源配置与容器运行中最容易出错的几个点。

一、为什么选择手工部署

在生产和学习场景中,Docker 往往不是单独存在的:它需要与宿主机的 systemd 服务管理、镜像仓库、端口映射和目录挂载配合。手工部署的好处是每一步都可见:二进制文件放在哪里、服务文件怎么写、守护进程读了哪个配置文件,出问题时可以直接定位,而不是被一键脚本掩盖。

二、准备工作

  1. 确认操作区域与实例。实验环境位于华北-北京四,实例系统为 openEuler release 22.03 LTS,可先用 cat /etc/system-release 确认系统版本。
  2. 确认远程登录方式。进入 ECS 控制台后,对预置实例选择远程登录,使用 CloudShell 登录方式,输入实验分配的密码后连接;如果连接不上,先检查安全组是否放开了 22 端口。
  3. 明确一个原则:实验账号只能用于实验操作,不要用个人账号登录实验控制台,避免权限与计费口径混乱。

三、安装并部署 Docker

第一步是下载并解压 Docker 二进制包:

wget https://edu-res.hc-cdn.cn/sharedata/hdinnovation/sandbox/2417/docker-18.09.9.tgz
tar zxf docker-18.09.9.tgz
mv docker/* /usr/bin

第二步是写入 systemd 服务文件。把服务定义写入 /usr/lib/systemd/system/docker.service,其中 [Unit] 段声明服务描述,[Service] 段指定 dockerd 的启动方式,[Install] 段决定开机自启的依赖关系。服务文件写错一个字段,systemctl start docker 就会直接报错,这时应先用 systemctl status docker 查看具体原因,而不是反复重启。

第三步是启动并设置开机自启,随后验证版本:

systemctl start docker
systemctl enable docker
docker version

docker version 能同时输出客户端与服务端信息,说明守护进程已经正常响应;如果只有客户端信息而无服务端信息,说明服务尚未真正跑起来。

四、配置镜像源,再拉取镜像

国内环境直接使用 Docker 官方镜像源常常不稳定,因此需要先配置华为云镜像地址。编辑或新建 /etc/docker/daemon.json,写入以下内容:

{"registry-mirrors": ["https://0cf850bb9480f3170f2dc01234ec1ca0.mirror.swr.myhuaweicloud.com"]}

改完配置文件后必须重启守护进程,配置才会生效:

systemctl restart docker
docker pull httpd

除直接拉取外,还可以用离线包方式导入镜像。先把 centos.tar 下载到实例,再用 docker load 恢复,随后用 docker images 核对本地镜像列表:

wget https://edu-res.hc-cdn.cn/sharedata/hdinnovation/sandbox/1911/centos.tar
docker load -i centos.tar
docker images

不再需要的镜像可以用 docker rmi centos:7 强制删除,但删除前要确认没有容器正在使用它,否则删除会失败或影响正在运行的容器。

五、运行容器并验证

以 httpd 镜像为例,启动一个名为 data 的容器,把宿主机 80 端口映射到容器 80 端口,并把宿主机 /data/ 目录挂载到容器内:

docker run --privileged -it -d -p 80:80 --name data -v /data/:/var/www/httpd httpd

参数含义值得逐个记清楚:-i 与 -t 组合表示交互式分配伪终端,-d 表示后台运行并返回容器 ID,-p 是端口映射,--name 指定容器名,-v 是目录挂载且路径必须使用绝对路径,--privileged 则赋予容器扩展权限,生产环境应谨慎使用。

启动后用 docker ps -a 查看容器状态:

docker ps -a

当容器状态为 Up 时,说明容器已处于启动中;此时在浏览器中输入实例绑定的弹性公网 IP,即可看到 httpd 的默认页面,完成从部署到验证的闭环。

六、常见问题排查清单

  • 拉取镜像超时:先检查 daemon.json 是否写对、是否重启了 Docker,再检查实例网络与安全组。
  • 服务启动失败:查看服务文件路径与权限,用 systemctl status docker 定位报错行。
  • 容器启动后立即退出:用 docker ps -a 确认退出状态,再用 docker logs 查看容器日志,不要只凭端口不通就判断是网络问题。
  • 目录挂载不生效:检查宿主机目录是否存在、路径是否为绝对路径、挂载目标是否与镜像内路径一致。

七、小结

手工部署 Docker 的关键不在命令本身,而在顺序:先确认系统与区域,再安装服务文件并验证守护进程,随后配置镜像源、拉取镜像,最后以端口映射与目录挂载运行容器并验证状态。把这条链路走通一次,后续再做镜像制作、容器编排或上云部署,排查思路都会清晰很多。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。