Docker(三)_容器打包
为什么要将容器commit成镜像?
- 持久化容器状态:容器在运行时是临时的,一旦停止或删除,容器中的所有更改都会丢失。如果你在容器中做了配置或安装了一些依赖,
commit容器可以将这些更改保存为镜像,方便以后重新使用或分发。 - 版本控制:通过将容器状态保存为镜像,可以为应用创建不同的版本。例如,开发过程中每次变更后都可以创建一个新的镜像版本,便于追溯和管理。
- 迁移和分发:将容器保存为镜像后,可以通过镜像在不同环境或服务器之间迁移。这样,开发环境中的配置和软件版本可以准确复制到生产环境。
- 自动化部署:当容器的状态被
commit成镜像后,可以将这个镜像推送到 Docker Hub 或其他镜像仓库,方便团队成员或CI/CD流水线在不同机器上拉取并使用相同的镜像进行部署。 - 共享和协作:如果你在容器中做了一些定制化的修改,可以将这些修改保存为镜像,然后与团队成员共享。其他人可以基于这个镜像继续开发或部署。
简单来说,commit 容器成镜像是为了将动态容器环境固定下来,便于以后复用、管理和共享。
1.将容器commit成镜像
前提:容器正常运行中。
docker commit ppnone playphone:v5.0

检查是否成功

参数解析
docker commit <container_id> <repository_name>:<tag>
- <container_id>是你在上一步找到的容器ID。
- <repository_name>是你想要给镜像的名字。
- <tag>是你想要给镜像的标签。
2.写Dockerfile
为什么要写Dockerfile? 编写 Dockerfile 是为了定义如何构建一个 Docker 容器镜像。它是一个脚本文件,包含了一系列的指令,告诉 Docker 如何从基础镜像开始,安装依赖、配置环境,并将应用程序代码添加到容器中。
FROM playphone:v5.0
WORKDIR /workspace
ENTRYPOINT bash start.sh & python3 rm.py & tail -f /dev/null
参数解析
- FROM playphone:v5.0:指定构建镜像时所使用的基础镜像。
- WORKDIR /workspace:设置工作目录。指定了容器内的当前工作目录。当后续的命令在容器中执行时,它们会相对于这个目录来执行。
- ENTRYPOINT bash start.sh & python3 rm.py & tail -f /dev/null:指定容器启动时运行的命令或脚本。
3.构建镜像
docker build -f /your_path/dockerfile.txt -t playphone:v5.1

检查是否成功

参数解析
-f选项用于指定 Dockerfile 的路径。如果 Dockerfile 不在当前目录下,或者文件名不是默认的Dockerfile,你可以使用这个选项来指定它的路径。-t用于给构建的镜像指定一个标签(tag),以便于后续使用或推送到 Docker 仓库。.表示当前目录,作为构建上下文提供给 Docker。构建上下文是 Dockerfile 所在的目录及其子目录中包含的所有文件和文件夹,Docker 在构建过程中可能会使用这些文件(比如复制代码、安装依赖等)。
4.将镜像保存成tar包
docker save -o <output_file>.tar <image_name>:<tag>
- <output_file>.tar是导出文件的名称。
- <image_name>:<tag>是你要导出的镜像名称和标签。

恭喜你已经掌握镜像打包了!
