利用 commit 理解镜像构成

基础知识

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

回顾一下之前我们学到的知识,镜像是多层存储,每一层是在前一层的基础上进行的修改;而容器同样也是多层存储,是在以镜像为基础层,在其基础上加一层作为容器运行时的存储层。

首先让我们创建一个容器

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

其中--name 指定容器的名称

-d 参数指定应用程序为后台运行,

-p 参数映射端口

nginx说明采用nginx镜像。

成功后返回容器id

此时我们打开浏览器访问我们的80端口就会出现默认的nginx访问页

进入容器,修改我们的nginx主页

docker exec -it cnblogServer bash
echo '<h1>Hello.This is my first docker app!</h1>' > /usr/share/nginx/html/index.html

重新刷新网页,即可显示最新结果

查看我们对容器进行了何种操作和用如下命令

docker diff 容器名字

目前为止,我们就定制好了一个镜像。现在我们用commit进行提交

查看镜像

其中 --author 指定作者信息,message指定你的行为   cnblogServer为你指定的容器  nginx:dxz 指定  仓库和TAG

查看该镜像的历史记录可以发现我们提交的版本

docker history nginx:dxz

现在,让我们用我们定制的镜像创造一个容器吧~

docker run --name web2 -d -p 81:80 nginx:dxz
docker ps

现在让我们访问我们新创建的容器

成功!

Docker镜像之commit的更多相关文章

  1. 『现学现忘』Docker基础 — 27、Docker镜像的commit操作

    目录 1.commit命令作用 2.commit命令说明 3.示例演示 1.commit命令作用 在运行的容器中,并在镜像的基础上做了一些修改,我们希望保存起来,封装成一个新的镜像,方便我们以后使用, ...

  2. 创建Python数据分析的Docker镜像+Docker自定义镜像commit,Dockerfile方式解析+pull,push,rmi操作

    实例解析Docker如何通过commit,Dockerfile两种方式自定义Dcoker镜像,对自定义镜像的pull,push,rmi等常用操作,通过实例创建一个Python数据分析开发环境的Dock ...

  3. 4、docker镜像:花卷结构、commit镜像

    1.是什么 docker images 镜像是一种轻量级.可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需的所有内容,包括代码.运行时.库.环境变量和配置文件. ...

  4. Docker 镜像构建之 docker commit

    我们可以通过公共仓库拉取镜像使用,但是,有些时候公共仓库拉取的镜像并不符合我们的需求.尽管已经从繁琐的部署工作中解放出来,但是实际开发时,我们可能希望镜像包含整个项目的完整环境,在其他机器上拉取打包完 ...

  5. MySQL、MongoDB、Redis数据库Docker镜像制作

    MySQL.MongoDB.Redis数据库Docker镜像制作 在多台主机上进行数据库部署时,如果使用传统的MySQL的交互式的安装方式将会重复很多遍.如果做成镜像,那么我们只需要make once ...

  6. 理解Docker(2):Docker 镜像

    本系列文章将介绍Docker的有关知识: (1)Docker 安装及基本用法 (2)Docker 镜像 (3)Docker 容器的隔离性 - 使用 Linux namespace 隔离容器的运行环境 ...

  7. Docker镜像的管理和创建

    1. Docker镜像和Docker容器:      Docker镜像实际上是一系列的文件系统,通常的Linux系统一般是两层文件系统,bootfs和rootfs,bootfs就是bootloader ...

  8. docker 源码分析 四(基于1.8.2版本),Docker镜像的获取和存储

    前段时间一直忙些其他事情,docker源码分析的事情耽搁了,今天接着写,上一章了解了docker client 和 docker daemon(会启动一个http server)是C/S的结构,cli ...

  9. 第四章 使用Docker镜像和仓库

    第4章 使用Docker镜像和仓库 回顾: 回顾如何使用 docker run 创建最基本的容器 $sudo docker run -i -t --name another_container_mum ...

随机推荐

  1. MongoDB后台运行

    文章目录 命令方式(推荐) 命令行和配置文件方式 命令行: 配置文件: 命令方式(推荐) 如果想在后台运行,启动时只需添加 --fork函数即可. fork: 以守护进程的方式运行MongoDB. 指 ...

  2. 处理提交html危险代码的异常方法

    当向asp.net mvc提交有html标签的值时,服务器会报检测到潜在危险的Request.Form值,处理方法如下: 1:在接收处理的Action方法上面加上 [VaildateInput(fal ...

  3. CSDN的验证码,真得很糟糕

    这是以三种不同的高度来分割各字符 第一张图片是以宽度3来分割,可以看得出,验证码元素保存完好,但 Y 和 9 仍然连在一起 第二张图片是以宽度4来分割,看到了,N已经断了,肉眼虽然仍看得出来是N,但是 ...

  4. JPA默认方法查询遇到转JSON的处理

    JPA提供的findAll等查询方法在有关联的对象时 比如:在查userInfo @Entity@Table(name = "user_info")public class Use ...

  5. ASP.NET中的DEC加密解密过程

    本文章分享自 青青果树园的博客,地址是:http://www.cnblogs.com/qqingmu/archive/2008/01/10/1034168.html 我们做网页时经常会遇到URL传输( ...

  6. Type.GetType(string.contains(','))

    例如 Type type = Type.GetType("ACalCoreServiceLib.BaseService,ACalCoreServiceLib"); 里面的ACalC ...

  7. leetcode146周赛-1131-绝对值表达式的最大值

    题目描述: class Solution: def maxAbsValExpr(self, arr1, arr2) -> int: def function(s1,s2): result1=[] ...

  8. 下面分享一下RHEL/CentOS7 安装图形化桌面详细图解

    Linux是一个多任务的多用户的操作系统,好多linux爱好者在安装完linux后经常遇到一个问题——没有图形化桌面(http://www.xcmnyy.com)今天小编在安装RHEL7的时候,一步留 ...

  9. 「题解」:[AHOI2013]作业

    问题: 作业 时间限制: 10 Sec  内存限制: 512 MB 题面 题目描述 此时己是凌晨两点,刚刚做了Codeforces的小A掏出了英语试卷.英语作业其实不算多,一个小时刚好可以做完.然后是 ...

  10. [POI2014]KAR-Cards

    题目链接: 传送门 题目分析: 线段树妙题,感觉思路奇奇怪怪的,虽然对我来说不是"线段树菜题"(\(ldx\)神仙\(blog\)原话)\(QAQ\) 考虑怎么样维护可合并的信息解 ...