前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >docker commit 命令的应用

docker commit 命令的应用

作者头像
害恶细君
发布2022-11-22 14:03:57
3280
发布2022-11-22 14:03:57
举报

上一节虽然系统地学习总结了docker技术,但docker还没完呢,我还在学docker。近段时间我准备把一些遗漏的并且我觉有用的知识点再记录一下。

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

在这里插入图片描述
在这里插入图片描述

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

比如说有多个镜像都从相同的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 :提交容器副本使之成为一个新的镜像。

语法

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

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

具体操作

1.拉去镜像

代码语言:javascript
复制
docker search ubuntu
代码语言:javascript
复制
docker pull ubuntu

3.进入容器中

代码语言:javascript
复制
docker run --name ubuntu -it ubuntu

4.在容器内安装vim命令

代码语言:javascript
复制
apt-get update
代码语言:javascript
复制
apt-get -y install vim

5.运行命令测试一下

代码语言:javascript
复制
vim a.txt

然后随便写一点

代码语言:javascript
复制
cat a.txt

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

7.退出容器

代码语言:javascript
复制
exit

6.docker commit生成新镜像

查看容器ID

代码语言:javascript
复制
docker ps -a

生成新镜像

代码语言:javascript
复制
docker commit -m="a vim ubuntu" -a="haiexijun" 12a4d1b772cd myubuntu:1.0.0

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

在这里插入图片描述
在这里插入图片描述

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

代码语言:javascript
复制
docker run --name myubuntu -it myubuntu /bin/bash
代码语言:javascript
复制
vim a.txt
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-05-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档