在华为云 ECS(EulerOS)上快速上手 Docker:从安装到跑起第一个容器
最近在华为云的一台弹性云服务器上折腾容器,把从零安装 Docker 到部署一个 Web 服务的完整过程整理了一遍。系统用的是 Huawei Cloud EulerOS 2.0(基于 openEuler),整个过程大概十分钟,适合第一次在云服务器上用 Docker 的朋友参考。
一、准备工作
- 一台 ECS(我用的是 1 核 1GB 的小规格,跑演示足够)
- 安全组提前放通 22 端口(SSH 登录用)和后面要用的 8080 端口
- 通过 SSH 或云上 CloudShell 登录服务器
先看一下系统版本,确认环境:
cat /etc/os-release
二、安装 Docker
EulerOS 的默认软件源里就带 Docker,一条命令装完:
yum install -y docker
启动服务并设置开机自启,这一步很多人会漏掉自启,服务器重启后容器不自动恢复就会踩坑:
systemctl start docker
systemctl enable docker
docker --version
能正常输出版本号,再跑一个官方测试镜像验证安装:
docker run hello-world
看到欢迎信息,说明 Docker 已经可以正常拉取和运行镜像了。
三、部署第一个容器:Nginx
用官方 Nginx 镜像起一个 Web 服务:
docker run -d --name web -p 8080:80 nginx
几个常用参数说明一下:
-d后台运行--name web给容器起个名字,后面管理方便-p 8080:80把宿主机的 8080 端口映射到容器内的 80 端口
查看运行状态和日志:
docker ps
docker logs web
curl http://localhost:8080
本机 curl 能返回 Nginx 的欢迎页面后,再确认一遍安全组里 8080 端口已放通,就可以在浏览器里用「公网 IP:8080」访问了。如果浏览器打不开、本机 curl 却正常,十有八九是安全组没放行,先查这里不要怀疑 Docker。
四、把自己的静态页面放进去
光跑默认页没意思,把页面文件挂载进容器,改文件不用重建镜像:
mkdir -p /data/html
echo "<h1>Hello from ECS + Docker</h1>" > /data/html/index.html
docker rm -f web
docker run -d --name web -p 8080:80 -v /data/html:/usr/share/nginx/html nginx
-v 做目录挂载后,直接修改 /data/html/index.html,刷新浏览器就能看到新内容。正式项目里数据库、配置文件这类需要持久化的数据也应该这样挂载出来,避免容器删除后数据丢失——这是新手最容易吃的一个亏。
五、日常管理常用命令
docker ps -a # 查看全部容器
docker stop web # 停止容器
docker start web # 启动容器
docker exec -it web bash # 进入容器内部排查问题
docker rm web # 删除容器(先 stop)
docker images # 查看本地镜像
docker pull nginx:latest # 拉取镜像
另外建议给容器加上 --restart unless-stopped,配合前面的 Docker 服务开机自启,服务器重启后服务能自动恢复,省去手动拉起的麻烦。
六、两个常见坑
- 镜像拉取慢:可以在
/etc/docker/daemon.json里配置镜像加速地址,改完执行systemctl restart docker生效。 - 端口冲突:启动失败并提示 port is already allocated,一般是宿主机上已有进程占用了该端口,换一个映射端口或先停掉占用进程即可。
小结
整个流程下来,Docker 在云服务器上的核心优势就是环境一致、部署和回滚都快:一条 docker run 上线,出问题删掉容器换个镜像版本重跑就行。对于个人小项目和练手场景,先从单机 Docker 把这些基础命令和挂载、端口映射的概念吃透,后面再学编排工具会顺很多。
- 点赞
- 收藏
- 关注作者
评论(0)