在华为云 openEuler 上手工部署 Docker:镜像源与容器运行实战
本文以华为云学堂《轻松快速上手 Docker》实验的部署路径为线索,梳理在华为云弹性云服务器 ECS(openEuler 系统)上手工部署 Docker 的完整做法,并说明镜像源配置与容器运行中最容易出错的几个点。
一、为什么选择手工部署
在生产和学习场景中,Docker 往往不是单独存在的:它需要与宿主机的 systemd 服务管理、镜像仓库、端口映射和目录挂载配合。手工部署的好处是每一步都可见:二进制文件放在哪里、服务文件怎么写、守护进程读了哪个配置文件,出问题时可以直接定位,而不是被一键脚本掩盖。
二、准备工作
- 确认操作区域与实例。实验环境位于华北-北京四,实例系统为 openEuler release 22.03 LTS,可先用
cat /etc/system-release确认系统版本。 - 确认远程登录方式。进入 ECS 控制台后,对预置实例选择远程登录,使用 CloudShell 登录方式,输入实验分配的密码后连接;如果连接不上,先检查安全组是否放开了 22 端口。
- 明确一个原则:实验账号只能用于实验操作,不要用个人账号登录实验控制台,避免权限与计费口径混乱。
三、安装并部署 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 的关键不在命令本身,而在顺序:先确认系统与区域,再安装服务文件并验证守护进程,随后配置镜像源、拉取镜像,最后以端口映射与目录挂载运行容器并验证状态。把这条链路走通一次,后续再做镜像制作、容器编排或上云部署,排查思路都会清晰很多。
- 点赞
- 收藏
- 关注作者
评论(0)