Docker用Commit给容器做快照
关于 commit
镜像是容器的基础,每次执行 docker run 的时候都会指定哪个镜像作为容器运行的基础。
镜像是多层存储,每一层是在前一层的基础上进行修改;而容器同样也是多层存储,是在以镜像为基础,在其基础上加一层作为容器运行的时的存储层。
以下是用来理解镜像构建:
docker run --name webserver -d -p 80:80 nginx
以nginx镜像为基础,启动一个容器,命名为webserver 映射80端口

我本地没有nginx镜像,所以显示自动拉取然后创建启动容器。

Ps:我是用的虚拟机,虚拟机ip是上面那个所以这么访问的。如果是本机或者其他请自行转换。
Docker ps 确认下,看容器正跑着呢

接下来对镜像进行操作。
登入这个容器的bash : docker exec -it webserver bash
把网页内容改下: echo '<h1>Hello, Docker!</h1>' > /usr/share/nginx/html/index.html

改完后记得exit退出容器连接。
刚刚修改了容器的文件,也就是改动了容器的存储层。
接下来要把这次改动的容器状态打包成镜像。也就是把基本镜像启动成容器(此时已经叠加了存储层),然后我们又改变了存储层。现在把目前的这个最新状态再打包成镜像。
docker commit --author "13 xxxxx" webserver nginx:v2
然后看下镜像列表里已经有这个了
docker image ls

然后用这个新镜像 nginx:v2 跑一个容器
docker run --name web2 -d -p 81:80 nginx:v2

Ok上面就是关于commit的基本操作,大体来说就是能把一个活动的容器的当前状态打包成一个镜像,以后可以继续把这个镜像跑起来成一个容器,有点快照的意思。但是切记不要用commit来真正的打包东西,除非是一些保存环境现场啥的特殊需求。因为镜像是分层存储的,这么搞会导致镜像一层一层的非常臃肿,更难受的是,这个会导致黑盒问题。迭代十几个版本之后,每一层做过什么改动光凭几行描述备注或者是docker diff啥的很难搞清楚。打包生成镜像通常正确姿势是用Dockerfile
Docker用Commit给容器做快照的更多相关文章
- Docker实践(二):容器的管理(创建、查看、启动、终止、删除)
docker官方文档地址如下:[https://docs.docker.com/engine/reference/](https://docs.docker.com/engine/reference/ ...
- Docker学习笔记——制作容器与容器概念
Docker能做些什么? 1.docker能够解决虚拟机能够解决的问题 2.隔离应用依赖 3.创建应用镜像并复制 4.创建容易分发的即启即用的应用 5.docker的想法是创建软件程序可移植的轻量容器 ...
- docker 基础之操作容器
Docker子命令分类 Docker 环境信息 info .version 容器生命周期管理 Create.exec.kill.pause.restart.rm.run.start.stop.unpa ...
- s3 Docker的镜像和容器
Docker技术里最为基础的两大概念:镜像和容器.镜像的 获取方式:从registry拉取,从Dockerfile构建:容器的基本操作 1 Docker架构和底层技术简介 Docker Platfor ...
- centos7下安装docker(8.3容器的常用操作)
yu我们之前已经学习了如何运行容器docker run,也学习了如何进入容器docker attach和docker exec,下面我们来学习容器的其他操作: stop/start/restart 1 ...
- docker 一篇文章学习容器化
什么是镜像?什么是容器? 一句话回答:镜像是类,容器是实例 docker 基本操作命令: 删除所有container: docker rm $(docker ps -a -q) 删 ...
- Docker知识进阶与容器编排技术
目录 1 使用Dockerfile定制redis镜像 1.1 环境准备 1.2 编写Dockerfile文件 1.3 通过Dockerfile构建镜像 1.4 通过镜像运行容器 1.5 官方镜像替代我 ...
- Docker的镜像及容器常用操作(2)
一.docker镜像 镜像(docker image) --- Docker 运行容器之前需要本地存在镜像,若本能地不存在,那么 Docker 会找默认镜像仓库( Docker Hub 公共注册服务器 ...
- 绕过 Docker ,大规模杀死容器
关注「开源Linux」,选择"设为星标" 回复「学习」,有我为您特别筛选的学习资料~ 作者 | Connor Brewster 译者 | Sambodhi 策划 | Tina 要让 ...
随机推荐
- Python爬虫学习三------requests+BeautifulSoup爬取简单网页
第一次第一次用MarkDown来写博客,先试试效果吧! 昨天2018俄罗斯世界杯拉开了大幕,作为一个伪球迷,当然也得为世界杯做出一点贡献啦. 于是今天就编写了一个爬虫程序将腾讯新闻下世界杯专题的相关新 ...
- 部署Angular应用到Github pages
https://jeneser.github.io/blog/2017/08/08/angular-deploying-app-github-pages/ Published: August 08, ...
- IDEA如何像ecplise一样添加jar包?
以前使用ecplise开发代码,现在换成IDEA,有很多操作都不习惯,比如添加jar包.网上可以找到IDEA好几种添加jar包的方法,这里主要介绍在用IDEA开发时如何像ecplise一样添加jar包 ...
- 【LeetCode】52. N-Queens II(位运算)
[题意] 输出N皇后问题的解法个数. [题解] 解法一:传统dfs回溯,模拟Q放置的位置即可,应该不难,虽然能通过,但是时间复杂度很高. 解法二:位运算大法好! 首先要明白这道题里两个核心的位运算 1 ...
- 使用C# (.NET Core) 实现观察者模式 (Observer Pattern) 并介绍 delegate 和 event
观察者模式 这里面综合了几本书的资料. 需求 有这么个项目: 需求是这样的: 一个气象站, 有三个传感器(温度, 湿度, 气压), 有一个WeatherData对象, 它能从气象站获得这三个数据. 还 ...
- Trie、并查集、堆、Hash表学习过程以及遇到的问题
Trie.并查集.堆.Hash表: Trie 快速存储和查找字符串集合 字符类型统一,将单词在最后一个字母结束的位置上打上标记 练习题:Trie字符串统计 import java.util.*; pu ...
- Springboot进行Http接口交互实现邮件告警
本项目采用idea编辑器,依赖maven环境,相关搭建请自行百度一.引入相关依赖 本文Http接口交互使用hutool工具类与阿里FastJson解析报文. <dependencies&g ...
- 如何使用Topshelf与.NET泛型主机建立Windows服务
1 前置阅读 在阅读本文章之前,你可以先阅读: Topshelf一个用于使用.NET构建Windows服务框架 2 使用 2.1 创建应用程序 首先,创建一个新的控制台应用程序并从nuget获取Top ...
- java进阶(41)--反射机制
文档目录: 一.反射机制的作用 二.反射机制相关类 三.获取class的三种方式 四.通过反射实例化对象 五.通过读属性文件实例化对象 六.通过反射机制访问对象属性 七.通过反射机制调用方法 ---- ...
- Nginx记录用户请求Header到access log
为了统计和其它用途,经常有人需要自定义Nginx日志,把http请求中的某个字段记录到日志中,刚好在看lua+nginx的文章,第一想到的是用lua赋值来做,但是想想有点小恶心,于是Google了一番 ...