介绍
在这个挑战中,你将使用 Docker 镜像。Docker 容器镜像是一个轻量级、自包含的可执行软件包,其中包含运行应用程序所需的一切:代码、运行时环境、系统工具、系统库和设置。
更改 Docker 镜像
Docker 镜像包含镜像名称和镜像标签,其中镜像名称由仓库地址和镜像标识符组成。在本小节中,你将把他人创建的 Docker 镜像推送到自己的仓库中。
目标
你要将 dockerhub 上的公共 ubuntu 镜像推送到你的私有仓库。
结果示例
以下是你在完成此挑战后应能达成的示例:
- 在
dockerhub上注册并登录。

- 从 Docker Hub 下载
ubuntu:22.10镜像到本地服务器。

- 将
ubuntu:22.10镜像的地址更改为你的仓库地址。

- 登录到 Docker Hub。

- 将镜像推送到远程仓库。

要求
要完成此挑战,你需要:
- 安装 Docker 引擎。
- 具备一些 Docker 命令行的知识。
- 已有一个需要更新的 Docker 镜像。
构建 Web 镜像
我们通常使用 nginx 来运行网站等静态应用程序。在本节中,你将构建自己的 Web 镜像。
目标
你的目标是创建一个 Docker 容器镜像,并将一个简单的 Web 应用程序打包到其中,然后使用该镜像启动容器并确保它能正常访问。
结果示例
以下是你在完成此挑战后应能达成的示例:
- 在
/home/labex/Code目录下创建一个名为index.html的新文件,内容为hello labex。

- 创建一个名为
Dockerfile的新文件,内容如下

- 以
your_dockerhub_id/web:1.1.0的格式构建你的 Web 镜像。

- 将创建的 Web 镜像推送到
dockerhub。

- 使用
your_dockerhub_id/web:1.1.0启动一个名为web的容器,并将端口80映射到主机。

- 使用
curl命令访问http://127.0.0.1,并检查输出是否为hello labex。

要求
要完成此挑战,你需要:
- 使用
Dockerfile进行构建 - 指定基础镜像为
Nginx:latest - 在
Dockerfile中使用EXPOSE命令暴露端口80 - 构建完成后,确保容器能够正常运行并响应 HTTP 请求
多阶段镜像构建
创建容器镜像通常涉及两个步骤:
- 编译应用程序。
- 创建应用程序镜像。
本节将把这两个步骤合并到一个 Docker 文件中,以实现多阶段构建。
为了完成此挑战部分,我们在 https://github.com/joker-bai/go-hello-world.git 准备了一个 Hello World 项目。
目标
你的目标是使用多阶段构建来制作一个容器镜像,并使用该镜像启动一个容器,确保它能正常访问。
结果示例
以下是你在完成此挑战后应能达成的示例:
在
/home/labex/Code目录下创建一个hello-world目录。
在该目录下创建一个
Dockerfile,内容如下
以
your_dockerhub_id/go-hello-world:1.1.0的格式构建 Docker 镜像。
将镜像推送到 Docker Hub。

启动一个名为
go-hello-world的容器,并暴露端口8080。
访问
http://127.0.0.1:8080检查是否正常。
要求
要完成此挑战,你需要:
- 使用
Dockerfile进行构建 - 构建完成后,确保容器能够正常运行并响应 HTTP 请求
总结
恭喜你完成了此挑战的所有内容,现在你已经能够灵活地创建和管理应用程序镜像了。



