一、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镜像管理基础的更多相关文章

  1. docker第三篇 镜像管理基础

    docker 工作原理: 常用的命令docker run .create .start... 都是客户端命令 Docker Daemon 接收到客户端传过来的命令以后 docker daemon会根据 ...

  2. Docker镜像管理基础篇

    Docker镜像管理基础篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Docker Images Docker镜像还有启动容器所需要的文件系统及其内容,因此,其用于创建并启 ...

  3. Docker学习之Docker镜像基本使用

    Docker学习之Docker镜像基本使用 获取镜像 命令格式:docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签] 例如: docker pull ...

  4. Docker学习笔记 — Docker私有仓库搭建

    Docker学习笔记 — Docker私有仓库搭建   目录(?)[-] 环境准备 搭建私有仓库 测试 管理仓库中的镜像 查询 删除 Registry V2   和Mavan的管理一样,Dockers ...

  5. Docker学习之Docker容器基本使用

    Docker学习之Docker容器基本使用 新建容器并启动 命令格式:docker run --options repository:tag 后台运行 命令格式:-d 已存在的容器相关操作 启动:do ...

  6. 3、Docker镜像管理基础

    Docker image     # docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE redis -alpine 23d561d12e92 d ...

  7. Docker镜像管理基础与基于容器的镜像制作示例

    一.Docker镜像 Docker镜像是启动Docker容器的一个非常重要的组件.Docker各组件之间的关系如图: Docker镜像含有启动容器所需要的文件系统及其内容,因此Docker镜像用于创建 ...

  8. DOCKER学习_009:Docker的镜像管理

    1 查看镜像 [root@docker-server3 ~]# docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE redis days ago ...

  9. Docker学习笔记之创建Ubuntu基础镜像

    在创建基础镜像之前需要安装Bootstrap工具debootstrap,所以执行命令: sudo apt install debootstrap 软件安装完成后就可以使用debootstrap工具下载 ...

随机推荐

  1. window.location.href 传参中文乱码问题!!!

    不是所有地方都会用Ajax  当你使用window.location.href 来传中文参数的时候 如何避免乱码问题 js 是这样写的    下面代码中  方式 封装编码  参数 username  ...

  2. Kettle日志中BootFeaturesInstaller错误

    到新公司接手了别人的Kettle ETL作业. 发现每次启动 Kettle ,日志中都会出现下面的错误,虽然不影响运行结果,但是看着不爽: 18:41:15,327 INFO [KarafInstan ...

  3. maven仓库有jar包还是报错怎么办?

    出现这种情况通常是jar不能自动下载 一.下载jar包外的其他文件,并放到仓库对应路径下: 点击View All,下载其他文件并放到仓库 二.这样仓库这个对应jar包的文件就齐全了.如果还是报错,请检 ...

  4. Ubuntu屏幕分辨率无1920 1080

    xrandr 没有1920X1080分辨率,所以手动添加一个1080P分辨率,先输入“cvt 1920 1080”命令,查询一下1080P分辨率的有效扫描频率 然后 sudo xrandr --new ...

  5. JAVA通过http访问其他服务端API

    项目要实现这么一个功能,用户通过点击按钮,通过axios来访问python的API(算法,java不好做)得到一个结果存储到数据库并且返回到页面. 但是python不是在tomcat上面运行的,所以不 ...

  6. 解决python编码问题

    从网上抓了一些字节流,想打印出来结果发生了一下错误: UnicodeEncodeError: 'gbk' codec can't encode character '\xbb' in position ...

  7. javaFX的控制台实现

    最近做了个javaFX的工具,想弄个控制台输出信息,准备用TextArea来模拟console,但直接操纵console对象的话不依赖这个项目的地方就无法输出信息到控制台了,至于log,以前弄过一个输 ...

  8. YOLO v3

    yolo为you only look once. 是一个全卷积神经网络(FCN),它有75层卷积层,包含跳跃式传递和降采样,没有池化层,当stide=2时用做降采样. yolo的输出是一个特征映射(f ...

  9. Linux 系统调用sysconf

    1.前言 当前计算机都是多核的,linux2.6提供了进程绑定cpu功能,将进程指定到某个core上执行,方便管理进程.linux提供了sysconf系统调用可以获取系统的cpu个数和可用的cpu个数 ...

  10. HTTP协议详解(四)

    接着第三篇继续学习.... 9 Cookie和Session的比较 Cookie和Session都为了用来保存状态信息,都是保存客户端状态的机制,它们都是为了解决HTTP无状态的问题而所做的努力. S ...