7、docker commit

把现有容器打包成镜像,供docker直接运行。 

语法

docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

OPTIONS说明:

  • -a :提交的镜像作者;

  • -c :使用Dockerfile指令来创建镜像;

  • -m :提交时的说明文字;

  • -p :在commit时,将容器暂停。

实例

  • 查看现有容器
[root@localhost ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
bfe0ad01bbea        tomcat:latest       "catalina.sh run"   About an hour ago   Up 50 minutes       8080/tcp            mytomcat
d612eb7d2a8f        tomcat:latest       "catalina.sh run"   About an hour ago   Up About an hour    8080/tcp            mytomcat2
  • 将mytomcat2打包成镜像

d612eb7d2a8f  是已有的CONTAINER ID;

cn-tomcat 是要生成的镜像名称;

v1.0 是要生成的镜像版本号;

[root@localhost ~]# docker commit -a "lvchn.com" -m "my new tomcat" d612eb7d2a8f  cn-tomcat:v1.0 
sha256:8df8f58c9a2193467bed2861b99f2d8bd982137c7039ef9c5c28848c62a3a9eb
  • 查看docker images,发现多了一个刚生成的镜像
[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
cn-tomcat           v1.0                8df8f58c9a21        21 seconds ago      667MB
tomcat              latest              c43a65faae57        4 weeks ago         667MB
  • 运行新的cn-tomcat镜像

这里的cn-tomcat:v1.0与docker images里的REPOSITORY:TAG保持一致;

[root@localhost ~]# docker run --name mytomcat3 -d cn-tomcat:v1.0
32b0318782e48b35d1fc46b989b8f2f2eb4390cc7a642bd35b8bc657bec79048
  •  查看所有容器
[root@localhost ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS              PORTS               NAMES
32b0318782e4        cn-tomcat:v1.0      "catalina.sh run"   About a minute ago   Up About a minute   8080/tcp            mytomcat3
bfe0ad01bbea        tomcat:latest       "catalina.sh run"   About an hour ago    Up 59 minutes       8080/tcp            mytomcat
d612eb7d2a8f        tomcat:latest       "catalina.sh run"   About an hour ago    Up About an hour    8080/tcp            mytomcat2

### 使用 `docker commit` 保存容器中的更改 当需要将运行中的容器的状态保存为一个新的镜像时,可以使用 `docker commit` 命令。此命令会创建一个基于当前容器状态的新镜像[^4]。 以下是关于如何使用 `docker commit` 的详细介绍: #### 创建新镜像的语法 `docker commit` 的基本语法如下: ```bash docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]] ``` - **CONTAINER**: 这是要提交的容器ID或名称。 - **REPOSITORY**: 新镜像的目标仓库名(可选)。 - **TAG**: 镜像标签(可选),用于标记版本号或其他标识信息。 #### 示例操作流程 假设有一个正在运行的容器名为 `my_container` 或者其 ID 是 `abc123`,可以通过以下方式将其保存为新的镜像: 1. 提交容器到本地镜像库并指定名字和标签: ```bash docker commit abc123 my_new_image:v1.0 ``` 2. 如果希望在提交过程中记录作者或者修改说明,则可以加上 `-a`(Author) 和 `-m`(Message) 参数: ```bash docker commit -a "John Doe" -m "Added new features" abc123 my_updated_image:v2.0 ``` 完成上述步骤之后,就可以通过 `docker images` 查看刚刚创建好的新镜像了。 #### 注意事项 虽然能够利用 `docker commit` 来快速生成自定义镜像,但从最佳实践角度来看,在大多数情况下推荐优先考虑 Dockerfile 文件来构建镜像。因为这样不仅便于管理和重复部署,而且还能更好地跟踪变更历史以及实现自动化流水线集成[^5]。 ```python print("Docker Commit Example Completed.") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值