docker commit将容器导出到镜像库docker save下载镜像
时间: 2023-08-17 09:16:09 浏览: 210
这不是一个问题,而是两个命令的描述。
`docker commit` 命令可以将容器的修改保存为镜像。语法如下:
```
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
```
其中,`OPTIONS` 用于指定一些选项,如作者、注释等;`CONTAINER` 是容器的名称或 ID;`REPOSITORY` 是新镜像的名称;`TAG` 是标记,表示镜像的版本。例如:
```
docker commit -m "added nginx" -a "John Smith" mycontainer myimage:latest
```
这会将名为 `mycontainer` 的容器的修改保存为名为 `myimage`,版本为 `latest` 的镜像,并添加作者和注释信息。
`docker save` 命令可以将镜像保存到本地文件或流中。语法如下:
```
docker save [OPTIONS] IMAGE [IMAGE...]
```
其中,`OPTIONS` 用于指定一些选项,如输出文件名、压缩方式等;`IMAGE` 是要保存的镜像的名称或 ID。例如:
```
docker save -o myimage.tar myimage:latest
```
这会将名为 `myimage`,版本为 `latest` 的镜像保存为 `myimage.tar` 文件。
相关问题
docker commit的容器如何导出
在使用Docker时,如果我们对一个容器进行了修改,可以使用`docker commit`命令将这个容器的修改保存为一个新的镜像。如果需要将这个新的镜像导出到本地或者其他地方,可以使用`docker save`命令将镜像导出为一个tar文件。具体操作步骤如下:
1. 使用`docker commit`命令创建一个新的镜像,例如:
```
docker commit container_name new_image_name
```
2. 使用`docker save`命令将镜像导出为tar文件,例如:
```
docker save new_image_name > new_image_name.tar
```
这样就可以将新的镜像导出到本地并保存为tar文件了。如果需要在其他机器上使用这个镜像,可以使用`docker load`命令将tar文件导入到Docker中。
docker将容器导出镜像
### 将Docker容器导出为镜像的方法
为了将Docker容器转换成一个新的镜像,有两种主要方法:`docker commit` 和 `docker export/save/import` 组合。然而需要注意的是,不同的方式有着各自的局限性和适用场景。
#### 使用 `docker commit`
当希望保存容器的状态并创建新的镜像时,可以直接利用 `docker commit` 命令来实现这一目标:
```bash
docker commit <container_id> new_image_name:new_tag
```
这种方式能够保留容器运行期间所做的更改,并将其封装到新镜像之中。不过值得注意的是,通过此命令生成的新镜像不会包含原始镜像中的历史层信息以及一些元数据配置,比如环境变量设置等[^1]。
#### 利用 `docker export/save/import` 流程
另一种方案涉及三个独立的操作——先使用 `docker export` 把容器的内容打包成 tarball 文件;再借助 `docker import` 或者 `docker load` 来加载这个压缩包从而形成新的镜像对象。具体操作如下所示:
- **Export**: 导出当前容器文件系统的快照至本地磁盘上的 .tar 文件。
```bash
docker export -o exported_container.tar <container_id>
```
- **Import/Load**: 如果是从其他地方获取了一个由 `export` 创建出来的 `.tar` 文件,则应该采用 `import` 方法重建镜像;
若该 `.tar` 是经由 `save` 得来的则需调用 `load` 进行恢复处理。
对于前者,
```bash
cat exported_container.tar | docker import - imported_image_name
```
而对于后者
```bash
docker load -i saved_images.tar
```
重要提醒,在实践中发现直接运用上述两种途径之一可能无法完全重现原容器的所有特性,特别是有关网络设定或是挂载卷的信息可能会丢失。因此建议优先考虑基于 `commit` 的做法除非有特殊需求指向另选他法[^4]。
阅读全文
相关推荐















