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 要让 ...
随机推荐
- ElasticSearch 进阶
目录 ElasticSearch 进阶 SearchAPI 检索信息 Query DSL 基本语法格式 查询-match 查询-match_phrase 查询-multi_match 查询-bool复 ...
- 【odoo14】第六章、管理模块数据
本章代码可在原作者github下载 使用外部ID及命名空间 外部ID及XML ID用于标记记录.到目前为止,我们在视图.菜单及动作中接触了XML IDs.本节我们将进一步了解什么是XML ID. 步骤 ...
- android分析之Parcel
将数据打包,跨进程传输(通过Binder).看看这货究竟是啥玩意: Parcel.java : public final class Parcel { private static final boo ...
- golang 三维向量相关操作
package vector import ( "math" "fmt" )// 三维向量:(x,y,z) type Vector3 struct { X fl ...
- mobx 的学习
1.初始化项目 第一步用create-react-app初始化一个项目,并打开webpack配置项 npx create-react-app react-mobx-demo cd react-mobx ...
- 后台开发-核心技术与应用实践--TCP协议
网络模型 为使不同计算机厂家的计算机能够互相通信,国际标准化组织 ISO 1981 年正式推荐了一个网络系统结构一一七层参考模型,也叫作开放系统互连模型. ISO 七层网络模型及其功能展示: 这个七层 ...
- 攻防世界 reverse 进阶 easyre-153
easyre-153 查壳: upx壳 脱壳: 1 int __cdecl main(int argc, const char **argv, const char **envp) 2 { 3 int ...
- 2、Spring教程之HelloSpring
导入Jar包 注 : spring 需要导入commons-logging进行日志记录 . 我们利用maven , 他会自动下载对应的依赖项 . <dependency> <grou ...
- .NET Core 环境变量详解
一.概述 软件从开发到正式上线,在这个过程中我们会分为多个阶段,通常会有开发.测试.以及上线等.每个阶段对应的环境参数配置我们会使用不同的参数.比如数据库的连接字符串,开发环境一般我们都是连接的测试库 ...
- CrashLoopBackOff的解决办法之一
问题来源 # kubectl get pods -n assembly NAME READY STATUS RESTARTS AGE alertmanager-858b7749c5-6jsfh 0/1 ...