Docker镜像的构成__docker commit

镜像是容器的基础,每次执行docker run的时候都会制定哪个镜像作为容器运行的基础。在之前的例子中,我们所使用的都来自于Docker Hub的镜像。直接使用这些镜像是可以满足一定的需求,而当这些镜像无法直接满足需求的时候,我们就需要定制这些镜像。

镜像是多层存储,每一层是在前一层的基础上进行的修改;而容器同样也是多层存储,是在以镜像为基础层,在其基础层上加一层作为容器运行时的存储层。

我们定制一个Web服务器为例。

docker run --name webserver -d -p 80:80 nginx

以上命令会用nginx镜像启动一个容器,命名为webserver,并且映射了80端口,这样我们可以用浏览器去访问这个nginx服务器。
然后访问地址。

试着修改一下nginx的欢迎界面。

docker exec -it webserver bash
echo ‘<h1>My Docker</h1>‘ > /usr/share/nginx/html/index.html

我们以交互式终端方式进入webserver 容器,并执行bash命令,也就是获的一个可操作的shell,然后覆盖了nginx下的index.html内容,刷新浏览器。

我们修改了容器的文件,也就是改动了容器的存储层。我们可以通过docker diff ID | name 查看改动内容。

容器内容改变了,如果我们希望保存成新的镜像,那么我们可以使用docker commit命令,语法为:

docker commit --author "update by wt" --message "修改了nginx的主页" webserver nginx:v2

其中, --author 是指定修改的作者,而 --message是备注,可以留空。
docker images 查看新的镜像
新的镜像定制好之后,我们可以运行这个镜像

docker run --name newwebserver -d -p 81:80 nginx:v1

这里我们命令为新的服务newwebserver ,并且映射到81端口。访问在浏览器加端口即可http://192.168.52.133:81,然后获的shell修改nginx欢迎界面即可。

慎重docker commit,关于为什么慎用,去网上搜索一下。

时间: 2025-01-18 15:13:47

Docker镜像的构成__docker commit的相关文章

创建属于自己的docker镜像

docker镜像是容器的基础,当每次执行docker run时就是在对docker说现在我需要哪个镜像.如果在你的docker主机上没有这个镜像,docker会自动从一个registry上下载这个镜像(默认为docker hub) 在这一节,我们将会探讨更多的关于docker镜像的内容: 管理和使用本地镜像 创建基础镜像 使用docker images命令列出本地的docker镜像 [[email protected] ~]# docker images  REPOSITORY         

Docker镜像文件(images)的存储结构

原文作者: Troy Howard(http://blog.thoward37.me/)原文地址:http://blog.thoward37.me/articles/where-are-docker-images-stored/ 翻译:刘斌(http://liubin.org/)本文地址:http://liubin.org/2014/03/10/about-docker-images-storage/ ? 关于本文的任何指正,请在新浪微博联系我或者在Twitter上. 如果你是刚开始接触 Doc

教你打包自己的专属docker镜像

前序 什么是docker? Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互之间不会有任何接口. 具体关于Docker更多的介绍请自行网上查阅 一.Docker环境的搭建 Docker基于Linux系统为基础的,所以我们先要准备一台Linux系统,这里以CentOS6.8为例 1.检查系统是否可以上网 # ping www.baidu.com 2.安装epel

Docker镜像与仓库(二)Dockerfile

Docker镜像文件与仓库(二) Docker镜像文件与仓库(二) Dockerfile指令 Dockerfile格式: 1.#Comment注释2.INSTRUCTION大写的指令名 argument参数 FROM 1.FROM <image>2.FROM <image>:<tag>3.#通过FROM指定的镜像名都必须是已经存在的镜像,这个镜像叫做基础镜像,而且必须是第一条非注释指令 MAINTAINER 1.MAINTAINER <name>2.#指定镜

深刻理解Docker镜像大小

都说容器大法好,可是假设没有Docker镜像,Docker该是多无趣啊. 是否还记得第一个接触Docker的时候,你从Docker Hub下拉的那个镜像呢?在那个处女镜像的基础上.你执行了容器生涯的处女容器.镜像的基石作用已经非常明显.在Docker的世界里,能够说是:No Image,No Container. 再进一步思考Docker镜像,大家可能非常快就会联想到下面几类镜像: 1.系统级镜像:如Ubuntu镜像.CentOS镜像以及Debian容器等: 2.工具栈镜像:如Golang镜像.

Docker 镜像小结 - 每天5分钟玩转 Docker 容器技术(21)

本节我们对 Docker 镜像做个小结. 这一部分我们首先讨论了镜像的分层结构,然后学习了如何构建镜像,最后实践使用 Docker Hub 和本地 registry. 下面是镜像的常用操作子命令: images    显示镜像列表 history   显示镜像构建历史 commit    从容器创建新镜像 build     从 Dockerfile 构建镜像 tag       给镜像打 tag pull      从 registry 下载镜像 push      将 镜像 上传到 regi

第四章 使用Docker镜像和仓库

第4章 使用Docker镜像和仓库 回顾: 回顾如何使用 docker run 创建最基本的容器 $sudo docker run -i -t --name another_container_mum ubuntu /bin/bash [email protected]:/# 这条命令会启动一个新的名为 another_container_mum 的容器,这个容器基于ubuntu镜 像并且会启动Bash Shell ----------------------------------------

Dockerfile创建自定义Docker镜像以及CMD与ENTRYPOINT指令的比较

1.概述 创建Docker镜像的方式有三种 docker commit命令:由容器生成镜像: Dockerfile文件+docker build命令: 从本地文件系统导入:OpenVZ的模板. 关于这三种方式的大致说明请参考yeasy/docker_practice的创建镜像. 最近学习了Dockerfile文件的相关配置,这里做一下简单的总结,并对之前一直感到有些迷惑的CMD和ENTRYPOINT指令做个差异对比. 2.Dockerfile文件总结 Dockerfile 由一行行命令语句组成,

如何交互式地创建一个Docker镜像

今天我们来学习如何使用一个docker镜像交互式地创建一个Docker镜像.当我们从镜像中启动一个Docker进程,Docker就会获取该镜像及其父镜像,并重复这个过程,直到到达基础镜像.然后联合文件系统(UFS)会在其顶层添加一个读写层.读写层被称之为容器,它包含了一些关于父镜像信息及一些其他的信息,如唯一ID,网络配置和资源限制等.容器是有状态的,其状态可以从 运行态 切换到 退出态.一个处于 运行态的容器包含了在CPU上面运行的进程树,于其它在该主机上运行的进程相隔离,而退出态是指文件系统