Docker操作容器打包(commit),压缩(save),挂载(load)

本文介绍了如何使用Docker将容器打包成镜像,包括使用commit命令创建镜像、通过save命令压缩镜像为tar包,以及利用load命令将tar包挂载为新镜像。这些步骤有助于保证应用程序跨环境的一致性和便捷部署。


前言

将容器打包成镜像时,你正在将应用程序及其所有依赖项、文件和配置文件捆绑到一个可移植的、独立的单元中。这样做可以确保您的应用程序在不同环境中具有一致的运行方式,并且可以轻松地在不同的基础设施上部署。


一、容器打包

使用 commit 命令进行打包

commit -a 【作者】 -m 【备注】 【容器id】 镜像名称 :版本号

# 查看容器
docker ps
# 打包容器【只需要记住容器id前五位就行】
commit -a "en" -m "nginx image" 9117f nginx:v1

例如:
在这里插入图片描述

二、将镜像压缩成tar包

使用 save 命令

docker save -o 【tar包名称】 【镜像名称】 :【镜像tag】

# 压缩
docker save -o nginx.tar nginx:v1

例如:
在这里插入图片描述

三、将tar包挂载为镜像

使用 load 命令

docker load -i 【tar包名】

docker load -i nginx.tar

例如:
在这里插入图片描述
在这里插入图片描述


结束

将正在运行的 Docker 容器打包成镜像可以通过 `docker commit` 命令实现。此命令会基于当前容器的状态创建一个新的镜像,适用于开发、测试和调试阶段的快速迭代[^1]。 ### 使用 `docker commit` 将容器打包为镜像 #### 语法 ```bash docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]] ``` - `CONTAINER`: 要提交的容器 ID 或名称。 - `REPOSITORY`: 新镜像的名称。 - `TAG`: 可选参数,指定新镜像的标签,默认为 `latest`。 #### 示例操作 1. **启动一个容器用于演示** ```bash docker run -it --name mycontainer alpine sh ``` 在容器内执行一些操作,例如创建文件或安装软件包: ```bash echo "Hello from container" > /testfile.txt ``` 2. **退出容器终端但保持其运行状态** 按下 `Ctrl+P` 然后 `Ctrl+Q`,这将使容器继续运行并返回到宿主机的 shell。 3. **提交容器为镜像** ```bash docker commit mycontainer myimage:custom ``` 此时会创建一个名为 `myimage`,标签为 `custom` 的新镜像。 4. **验证新镜像是否存在** ```bash docker images | grep myimage ``` 5. **使用新镜像运行新的容器** ```bash docker run -it myimage:custom cat /testfile.txt ``` 输出应为: ``` Hello from container ``` #### 常用选项 - `-a`, `--author`: 设置镜像作者信息,例如 `"John Doe <john.doe@example.com>"`。 - `-m`, `--message`: 提交镜像时添加说明信息。 - `-p`, `--pause`: 提交过程中暂停容器(默认行为)。 - `-c`, `--change`: 在提交时应用 Dockerfile 指令,如 `CMD`、`ENTRYPOINT` 等[^4]。 ##### 示例:带自定义指令提交 ```bash docker commit -c 'CMD ["/bin/httpd", "-f", "-p", "8000"]' mycontainer mywebserver ``` 该命令将创建一个新镜像 `mywebserver`,并且在运行该镜像时会自动启动 HTTP 服务监听端口 8000。 --- ### 镜像导出与导入 如果需要将镜像保存为 `.tar` 文件以便传输或备份,可以使用以下命令: #### 导出镜像 ```bash docker save -o myimage_custom.tar myimage:custom ``` #### 导入镜像 ```bash docker load -i myimage_custom.tar ``` --- ### 注意事项 - `docker commit` 不会保留容器的数据卷内容,因此任何挂载的数据卷不会被包含在新镜像中。 - 如果未指定 `TAG`,镜像将默认使用 `latest` 标签。 - 若需重命名或重新打标签已存在的镜像,可使用 `docker tag` 命令: ```bash docker tag <image_id> newname:newtag ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值