docker commit 命令的应用

简介: docker commit 命令的应用

前言:我记得上一篇有说到过,Docker镜像层都是只读的,容器层是可写的。当容器启动时,一个新的可写层被加载到镜像的顶部。这一层通常被称为”容器层“,“容器层”之下的都叫“镜像层”。如下图:


7e37e41801ec45ffa602ec8287d4c069.png


镜像分层最大的好处就是共享资源,方便复制迁移,就是为了复用。


比如说有多个镜像都从相同的base镜像构建而来,那么docker host只需要在磁盘上保存一份base镜像。同时内存中也只需要加载一份base镜像,就可以为所有容器服务了。而且镜像的每一层都可以被共享。


问题引出:假设我们有一个Ubuntu的docker镜像,我们通过docker run -it ubuntu /bin/bash 命令运行这个镜像,创建这个镜像的容器。但是,当我们在ubuntu容器里面运行Linux命令时,比如运行vim a.txt时,会显示bash vim: command not found,它说找不到vim这个命令。这是因为docker镜像把ubuntu中那些不重要的、非内核必须的东西都去掉了,只保留了最最基本的一个内核等一些重要内容,所以显示找不到命令。假设我想要得到一个带有vim等命令的Ubuntu镜像呢?docker commit命令就可以帮我们提交容器副本使之成为一个新的镜像。


docker commit :提交容器副本使之成为一个新的镜像。


语法


docker commit -m="提交的描述信息" -a="作者" 容器ID 要创建的目标镜像名:[标签名]


需求

生成一个带有vim命令的Ubuntu镜像。


具体操作


1.拉去镜像


docker search ubuntu


docker pull ubuntu


3.进入容器中


docker run --name ubuntu -it ubuntu


4.在容器内安装vim命令


apt-get update


apt-get -y install vim


5.运行命令测试一下


vim a.txt


然后随便写一点


cat a.txt


到这一步,我们的容器就能运行vim命令了

7.退出容器


exit


6.docker commit生成新镜像

查看容器ID


docker ps -a


生成新镜像


docker commit -m="a vim ubuntu" -a="haiexijun" 12a4d1b772cd myubuntu:1.0.0


这时候我们再运行docker images,会发现生成的Ubuntu镜像比原本的大了100多MB。


f31e088a171a45af977a9b1121b71b15.png


7.运行我们新生成的mybuntu测试一下


docker run --name myubuntu -it myubuntu /bin/bash


vim a.txt


相关文章
|
1月前
|
Kubernetes Docker Python
Docker 与 Kubernetes 容器化部署核心技术及企业级应用实践全方案解析
本文详解Docker与Kubernetes容器化技术,涵盖概念原理、环境搭建、镜像构建、应用部署及监控扩展,助你掌握企业级容器化方案,提升应用开发与运维效率。
431 108
|
14天前
|
前端开发 JavaScript 应用服务中间件
在Docker部署的前端应用中使用动态环境变量
以上步骤展示了如何在 Docker 配置过程中处理并注入环墨遁形成可执行操作流程,并确保最终用户能够无缝地与之交互而无须关心背后复杂性。
54 13
|
2月前
|
存储 监控 Java
如何对迁移到Docker容器中的应用进行性能优化?
如何对迁移到Docker容器中的应用进行性能优化?
243 58
|
3月前
|
Docker 容器
Docker run命令-p参数详解
本文介绍Docker端口映射的基础用法。通过`docker run -p <宿主机端口>:<容器端口>`实现端口映射,例如`-p 5000:80`将宿主机5000端口映射到容器80端口,外部访问宿主机5000端口时流量会转发至容器内部的80端口。示例命令中,`-d`用于后台运行,`--restart=always`确保容器自动重启,`--name`指定容器名称。部署完成后可通过`http://服务器IP地址:5000`验证服务是否正常运行。
|
2月前
|
缓存 Java Docker
如何对应用代码进行优化以提高在Docker容器中的性能?
如何对应用代码进行优化以提高在Docker容器中的性能?
200 1
|
1月前
|
运维 Cloud Native Docker
Docker:重塑现代应用交付的基石
Docker:重塑现代应用交付的基石
|
3月前
|
安全 Java Docker
Docker 部署 Java 应用实战指南与长尾优化方案
本文详细介绍了Docker容器化部署Java应用的最佳实践。首先阐述了采用多阶段构建和精简JRE的镜像优化技术,可将镜像体积减少60%。其次讲解了资源配置、健康检查、启动优化等容器化关键配置,并演示了Spring Boot微服务的多模块构建与Docker Compose编排方案。最后深入探讨了Kubernetes生产部署、监控日志集成、灰度发布策略以及性能调优和安全加固措施,为Java应用的容器化部署提供了完整的解决方案指南。文章还包含大量可落地的代码示例,涵盖从基础到高级的生产环境实践。
164 3
|
4月前
|
网络协议 Ubuntu Docker
Docker Compose--命令说明
Docker Compose--命令说明
807 30
|
4月前
|
Ubuntu Linux 开发者
常用的Docker命令:docker_cmd_sheet
以上就是一些常用的Docker命令,希望能帮助你更好地驾驭这个强大的工具。记住,Docker就像是一个魔法咒语,只有真正理解和熟练使用,才能发挥出它的最大魔力。
120 22
|
4月前
|
Shell 应用服务中间件 nginx
docker 镜像的部分常用命令
docker镜像常用命令
161 16