Docker 学习3 Docker镜像管理基础
一、docker 常用操作及原理
1、docker 常用操作

2、docker 机制
1、docker client端是通过http或者https与server端通信的。个
2、docker 镜像可以认为是docker 集装箱
二、docker 镜像原理
1、docker 镜像含有启动容器所需要的文件系统及其内容,因此其用于创建并启动docker 容器。
2、docker 镜像采用分层构建机制,最底层为bootfs,上层为rootfs。
a、bootfs,用于系统引导的文件系统,包括bootloader和kernel,容器启动完成后会被卸载以节约内存资源。
b、rootfs,位于bootfs之上,表现为docker容器的根文件系统。
1)、传统模式中,系统启动之时,内核挂载rootfs时会首先将其挂载为只读模式,完整性自检完成后将其重新挂载为读写模式。
2)、docker中,rootfs由内核挂载为只读模式,而后通过联合挂载技术额外挂载一个可写层。
3、原理图如图

4、docker 镜像层
a、位于下层的镜像称为父镜像,最底层的称为基础镜像。
b、最上层为可读写层,其下的均为只读层。
c、如图

三、docker 联合挂载的专用文件系统
1、ubuntu 使用的联合挂载文件系统为aufs,centos使用的联合挂载文件系统为devicemapper,现在用的文件系统为overlayfs2。
2、aufs一开始是UnionFS,后来因为UnionFS代码太烂了才重构了aufs,不过aufs代码也很烂

四、docker 镜像分类
1、启动容器时,daemon会试图从本地获取相关的镜像,本地镜像不存在时,将从registry中下载该镜像并保存到本地。

2、registry用于保存docker 镜像,包括镜像的层次结构和元数据。
3、用户可自建registry,也可以用官方的docker hub
4、分类

5、repository和index

6、docker registry中的镜像通常由开发人员制作,而后推送至公共或私有registry上保存供其它人员使用,例如部署到生产环境。
五、docker hub
1、包含标签
a、Image repositories:镜像仓库。
b、Automated:自动构建。
c、Webhooks(重要) !!!!!!!
本地做的dockerfile 新版本文件推到github上,然后github上的变动会由webhooks被docker hub识别,然后docker hub将对应的dockerfile文件拿过去进行自动构建。
d、Organizations:组织
e、github and bitbucket integration:github 与 bitbucket进行整合。

2、获取镜像(比较出名的镜像站点,quay.io)

3、制作镜像
a、dockerfile
b、基于容器制作
c、docker hub automated builds

六、镜像制作
1、基于容器制作镜像,docker commit
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
97054e941ebb d8233ab899d4 "sh" minutes ago Up minutes b1
[root@localhost ~]# docker commit 97054e941ebb busybox:b1
sha256:cd6c0da8b93f02715e30920112aae94f6c4d64815771a03c861e258b5f2c9a52
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
busybox b1 cd6c0da8b93f seconds ago .2MB
busybox latest d8233ab899d4 weeks ago .2MB
nginx 1.14-alpine 66952fd0a8ef weeks ago 16MB
centos 721823ac0277 months ago 284MB
2、docker commit 提交时添加作者名字和 默认启动参数
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
121c36795a1d busybox:b1 "sh" minutes ago Up minutes test1
97054e941ebb d8233ab899d4 "sh" minutes ago Up minutes b1
[root@localhost ~]# docker commit -h
Flag shorthand -h has been deprecated, please use --help Usage: docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]] Create a new image from a container's changes Options:
-a, --author string Author (e.g., "John Hannibal Smith <hannibal@a-team.com>")
-c, --change list Apply Dockerfile instruction to the created image
-m, --message string Commit message
-p, --pause Pause container during commit (default true)
[root@localhost ~]# docker commit -a "lipingchang <1209989516@qq.com>" -m "this is a test" -c 'CMD ["/bin/httpd","-f","-h","/data/html"]' -p test1(容器名称) busybox:test1(制作的镜像名称)
sha256:f3847a399a98e54f1a3b283c06881d9adf98b663b17d92924272c251dc594c74
七、镜像的导入和导出
1、docker save -o,将镜像打包保存为文件,可一次打包多个镜像。
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
busybox test1 f3847a399a98 minutes ago .2MB
busybox b1 cd6c0da8b93f About an hour ago .2MB
busybox latest d8233ab899d4 weeks ago .2MB
nginx 1.14-alpine 66952fd0a8ef weeks ago 16MB
centos 721823ac0277 months ago 284MB
[root@localhost ~]# docker save -o busybox.gz busybox:test1 busybox:b1
[root@localhost ~]# ls
.txt anaconda-ks.cfg busybox.gz
2、docker load -i,将打包后的镜像文件导入
[root@localhost ~]# docker rmi busybox:test1 busybox:b1
Untagged: busybox:test1
Deleted: sha256:f3847a399a98e54f1a3b283c06881d9adf98b663b17d92924272c251dc594c74
Deleted: sha256:8c8846e678a8952c6dce32aab80520b746732dda074f30843cdf0b9e89ea7cb2
Untagged: busybox:b1
Deleted: sha256:cd6c0da8b93f02715e30920112aae94f6c4d64815771a03c861e258b5f2c9a52
Deleted: sha256:1251dd6cc6ec2f2f0dbf3bef621bdb563834e99ba294b74054e6e5d5961c9536
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
busybox latest d8233ab899d4 weeks ago .2MB
nginx 1.14-alpine 66952fd0a8ef weeks ago 16MB
centos 721823ac0277 months ago 284MB
quay.io/coreos/flannel v0.10.0-amd64 f0fad859c909 months ago .6MB
[root@localhost ~]# docker load --help Usage: docker load [OPTIONS] Load an image from a tar archive or STDIN Options:
-i, --input string Read from tar archive file, instead of STDIN
-q, --quiet Suppress the load output
[root@localhost ~]# docker load -i busybox.gz
e703b81e02e8: Loading layer [==================================================>] .608kB/.608kB
6321d48b6459: Loading layer [==================================================>] .56kB/.56kB
Loaded image: busybox:test1
Loaded image: busybox:b1
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
busybox test1 f3847a399a98 About an hour ago .2MB
busybox b1 cd6c0da8b93f About an hour ago .2MB
busybox latest d8233ab899d4 weeks ago .2MB
nginx 1.14-alpine 66952fd0a8ef weeks ago 16MB
centos 721823ac0277 months ago 284MB
quay.io/coreos/flannel v0.10.0-amd64 f0fad859c909 months ago .6MB
3、将容器导出为镜像文件
[root@localhost ~]# docker run -itd --name test1 busybox:test1 /bin/sh
075377828bfec54ff41d17d75da06e970189e1a0616a54f12fb25be12e170da2
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
075377828bfe busybox:test1 "/bin/sh" seconds ago Up seconds test1
[root@localhost ~]# docker export 075377828bfe > update.tar
[root@localhost ~]# ls
.txt anaconda-ks.cfg update.tar
4、将容器导出的镜像文件导入为镜像
[root@localhost ~]# docker import - import < update.tar
sha256:5d0d74a05a0f75486c817f0efe47072ff34bfecb1f4175daf588050b2cacc6bb
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
import latest 5d0d74a05a0f seconds ago .2MB
busybox test1 f3847a399a98 About an hour ago .2MB
busybox b1 cd6c0da8b93f About an hour ago .2MB
busybox latest d8233ab899d4 weeks ago .2MB
nginx 1.14-alpine 66952fd0a8ef weeks ago 16MB
centos 721823ac0277 months ago 284MB
quay.io/coreos/flannel v0.10.0-amd64 f0fad859c909 months ago .6MB
Docker 学习3 Docker镜像管理基础的更多相关文章
- docker第三篇 镜像管理基础
docker 工作原理: 常用的命令docker run .create .start... 都是客户端命令 Docker Daemon 接收到客户端传过来的命令以后 docker daemon会根据 ...
- Docker镜像管理基础篇
Docker镜像管理基础篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Docker Images Docker镜像还有启动容器所需要的文件系统及其内容,因此,其用于创建并启 ...
- Docker学习之Docker镜像基本使用
Docker学习之Docker镜像基本使用 获取镜像 命令格式:docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签] 例如: docker pull ...
- Docker学习笔记 — Docker私有仓库搭建
Docker学习笔记 — Docker私有仓库搭建 目录(?)[-] 环境准备 搭建私有仓库 测试 管理仓库中的镜像 查询 删除 Registry V2 和Mavan的管理一样,Dockers ...
- Docker学习之Docker容器基本使用
Docker学习之Docker容器基本使用 新建容器并启动 命令格式:docker run --options repository:tag 后台运行 命令格式:-d 已存在的容器相关操作 启动:do ...
- 3、Docker镜像管理基础
Docker image # docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE redis -alpine 23d561d12e92 d ...
- Docker镜像管理基础与基于容器的镜像制作示例
一.Docker镜像 Docker镜像是启动Docker容器的一个非常重要的组件.Docker各组件之间的关系如图: Docker镜像含有启动容器所需要的文件系统及其内容,因此Docker镜像用于创建 ...
- DOCKER学习_009:Docker的镜像管理
1 查看镜像 [root@docker-server3 ~]# docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE redis days ago ...
- Docker学习笔记之创建Ubuntu基础镜像
在创建基础镜像之前需要安装Bootstrap工具debootstrap,所以执行命令: sudo apt install debootstrap 软件安装完成后就可以使用debootstrap工具下载 ...
随机推荐
- locate命令
locate命令介绍 locate(locate) 命令用来查找文件或目录. locate命令要比find -name快得多,原因在于它不搜索具体目录,而是搜索一个数据库/var/lib/mlocat ...
- js实现点气球小游戏
二话不说直接贴代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset=&quo ...
- Python正则表达式指南(转)
目录 Python正则表达式指南(转) 0.防走丢 1. 正则表达式基础 1.1. 简单介绍 1.2. 数量词的贪婪模式与非贪婪模式 1.3. 反斜杠的困扰 1.4. 匹配模式 2. re模块 2.1 ...
- 定时调度系列之Quartz.Net详解
一. 背景 我们在日常开发中,可能你会遇到这样的需求:"每个月的3号给用户发信息,提醒用户XXX "."每天的0点需要统计前一天的考勤记录"."每个月 ...
- echo 输入背景和字体常用方法
ECHO输出背景颜色以及文字颜色输出格式: echo -e "\033[字背景颜色;文字颜色m字符串\033[0m"例如: echo -e & ...
- Qt快速入门第三版下载
找了半天才找到一个靠谱的: http://www.ddooo.com/softdown/111665.htm
- Python的一些高级特性以及反序列化漏洞
0x01 简述 文章主要记录一下python高级特性以及安全相关的问题 python作为脚本语言,其作为高级语言是由c语言开发的,关于python的编译和链接可以看向这里https://github. ...
- mysql并发控制之快照读和当前读
上一篇简单的介绍了下MVCC(多版本并发控制)的原理,MVCC会对事物内操作的数据做多版本控制,从而实现并发环境下事物对数据写操作的阻塞不影响读操作的性能.而这个多版本控制的实现是由undo log来 ...
- GraphQL Java Demo代码
mvn 引用GraphQL <dependency> <groupId>com.graphql-java</groupId> <artifactId>g ...
- node命令行工具—cf-cli
音乐分享: 钢心 - <龙王> 初喜<冠军>后喜<龙王> (PS:听一次钢心乐队的演出后采访才知道 “龙王”隐喻的是一起喝酒的老铁....) ——————————— ...