你是学校技术社团的运维人员,需要将社团介绍网页制作成 Docker 镜像,在本地测试部署没有问题后,将镜像上传到 Harbor 注册中心。
本实验综合运用 2.1~2.4 的知识,完成以下流程:
清理环境 → 获取基础镜像 → 使用 Dockerfile 构建镜像 → 测试网站 → 发布镜像
建议用时:60 分钟。
实验准备
- 删除所有容器
- 删除所有镜像
任务一:拉取镜像
1、下载 nginx:latest 镜像
2、添加镜像标签
使用 docker tag,为 nginx:latest增加以下名称:
stu00/nginx-base:lab
把 stu00 中的00换成你的学号后两位。
命令格式:
docker tag 原镜像名 新镜像名
3、比较并删除标签
执行 docker images,比较:
- nginx:latest
- stu00/nginx-base:lab 确认它们的 IMAGE ID 相同。
然后使用 docker rmi 删除 stu00/nginx-base:lab,再次查看镜像列表。
完成要求: 新增标签已删除,nginx:latest 仍然存在。
为什么删除其中一个标签后,另一个名称仍然可以使用?
任务二:制作镜像
1、创建工作目录
mkdir -p /root/mysite
cd /root/mysite
通过 MobaXterm 左侧的文件面板进入服务器上的 /root/mysite 目录。
后续文件均通过该面板新建,并使用 MobaXterm 编辑器打开、编辑和保存。
2、创建网站首页
新建 index.html,写入以下内容,并将姓名、学号替换为自己的信息:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>我的社团网站</title>
</head>
<body>
<h1>欢迎访问XX社团网站</h1>
<p>团长:张三</p>
<p>学号:20260000</p>
<p>版本:v1.0</p>
<p>社团介绍:我们正在学习容器云服务架构与运维。</p>
</body>
</html>
保存文件,确认修改已保存到服务器。
3、编写 Dockerfile
在同一目录中新建 Dockerfile,注意文件名不要写错。
按照下表独立编写:
| 项目 | 要求 | 指令提示 |
|---|---|---|
| 基础镜像 | nginx:latest |
FROM |
| 工作目录 | /usr/share/nginx/html |
WORKDIR |
| 网站文件 | 将 index.html 复制到工作目录,替换默认首页 |
COPY |
| 作者信息 | maintainer 设置为自己的姓名 |
LABEL |
| 版本信息 | version 设置为 1.0 |
LABEL |
| 服务端口 | 声明容器使用 80 端口 |
EXPOSE |
| 启动命令 | 以前台方式运行 Nginx | CMD |
启动命令可参考:
CMD ["nginx", "-g", "daemon off;"]
保存后,服务器工作目录应包含:
/root/mysite/
├── Dockerfile
└── index.html
4、构建镜像
在 MobaXterm 终端中执行:
cd /root/mysite
docker build -t stu00/mysite:v1.0 .
- 把 stu00 中的00换成你的学号后两位;
- 注意命令末尾的 .,它表示使用当前目录作为构建上下文。
5、查看构建结果
docker images
镜像列表中存在 stu00/mysite:v1.0。
Dockerfile 中的 COPY 指令从哪里读取 index.html?如果网页内容修改了,只保存文件是否会自动更新已有镜像?
任务三:部署与管理容器
使用 docker create,按以下要求创建测试容器:
| 配置项 | 要求 |
|---|---|
| 容器名称 | mysite-test |
| 使用镜像 | stu00/mysite:v1.0 |
| 宿主机端口 | 9000 |
| 容器端口 | 80 |
命令格式:
docker create --name 容器名 -p 宿主机端口:容器端口 镜像名
分别执行:
docker ps
docker ps -a
观察两条命令的输出,确认新容器状态为 Created。
2、启动并访问网站
使用 docker start 启动 mysite-test。在浏览器中访问:
http://实验机IP:9000
确认页面显示自己的姓名、学号、个人介绍和版本号。
Dockerfile 中的 EXPOSE 80 只是声明端口。通过实验机访问容器内的网站,仍需使用在创建容器时使用 -p 设置端口映射。
3、停止并运行
依次完成以下操作:
- 使用
docker stop停止测试容器。 - 使用
docker ps -a,确认状态变为Exited。 - 使用
docker start再次启动。 - 重新访问网页,确认网站恢复运行。
4、重命名容器
使用 docker rename,将 mysite-test 容器名改成 mysite-ready
命令提示:
docker rename 旧名称 新名称
任务四:发布镜像到 Harbor
1、增加稳定版标签
为 stu00/mysite:v1.0 增加标签 harbor.seahi.me/stu00/mysite:stable
查看镜像列表,确认两个标签对应相同的 IMAGE ID。
{{< admonition>}} 把 stu00 中的00换成你的学号后两位; {{< /admonition >}}
2、在终端登录 Harbor
docker login harbor.seahi.me
按提示输入账号和密码。
3、推送镜像
自行完成推送命令:
docker push 完整镜像名
推送完成后,在 Harbor 网页中进入自己的项目,查看 mysite 仓库。
