1.1 什么是镜像

  简单说,Docker镜像是一个不包含Linux内核而又精简的Linux操作系统。

1.2 镜像从哪里来

  Docker Hub是由Docker公司负责维护的公共注册中心,包含大量的容器镜像,Docker工具默认从这个公共镜像库下载镜像。

https://hub.docker.com/explore

  默认是国外的源,下载会慢,可以国内的源提供下载速度:

curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://04be47cf.m.daocloud.io

1.3 镜像工作的原理  

  当我们启动一个新的容器时,Docker会加载只读镜像,并在其之上添加一个读写层,并将镜像中的目录复制一份到/var/lib/docker/aufs/mnt/容器ID为目录下,我们可以使用chroot进入此目录。如果运行中的容器修改一个已经存在的文件,那么会将该文件从下面的只读层复制到读写层,只读层的这个文件就会覆盖,但还存在,这就实现了文件系统隔离,当删除容器后,读写层的数据将会删除,只读镜像不变。

1.4 镜像文件存储结构

docker相关文件存放在:/var/lib/docker目录下

/var/lib/docker/aufs/diff # 每层与其父层之间的文件差异

/var/lib/docker/aufs/layers/ # 每层一个文件,记录其父层一直到根层之间的ID

/var/lib/docker/aufs/mnt  # 联合挂载点,从只读层复制到最上层可读写层的文件系统数据

在建立镜像时,每次写操作,都被视作一种增量操作,即在原有的数据层上添加一个新层;所以一个镜像会有若干个层组成。

每次commit提交就会对产生一个ID,就相当于在上一层有加了一层,可以通过这个ID对镜像回滚

1.5 查看镜像

  docker images

[bigberg@localhost ~]$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
hello-world         latest              f2a91732366c        3 months ago        1.85kB

选项说明:
REPOSTITORY:表示镜像的仓库源
TAG:镜像的标签
IMAGE ID:镜像ID
CREATED:镜像创建时间
SIZE:镜像大小
同一仓库源可以有多个 TAG,代表这个仓库源的不同个版本,如ubuntu仓库源里,有15.10、14.04等多个不同的版本,我们使用 REPOSTITORY:TAG 来定义不同的镜像。

1.6 搜索镜像

语法:

docker search [OPTIONS] TERM

选项说明:
--automated :只列出 automated build类型的镜像;
--no-trunc :显示完整的镜像描述;
-s :列出收藏数不小于指定值的镜像。

[bigberg@localhost ~]$ docker search centos
NAME                               DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
centos                             The official build of CentOS.                   4051                [OK]
ansible/centos7-ansible            Ansible on Centos7                              105                                     [OK]
jdeathe/centos-ssh                 CentOS-6 6.9 x86_64 / CentOS-7 7.4.1708 x86_…   91                                      [OK]
consol/centos-xfce-vnc             Centos container with "headless" VNC session…   45                                      [OK]
imagine10255/centos6-lnmp-php56    centos6-lnmp-php56                              38                                      [OK]
tutum/centos                       Simple CentOS docker image with SSH access      36
gluster/gluster-centos             Official GlusterFS Image [ CentOS-7 +  Glust…   22                                      [OK]
centos/python-35-centos7           Platform for building and running Python 3.5…   18
openshift/base-centos7             A Centos7 derived base image for Source-To-I…   17
kinogmt/centos-ssh                 CentOS with SSH                                 17                                      [OK]
openshift/jenkins-2-centos7        A Centos7 based Jenkins v2.x image for use w…   10
centos/postgresql-96-centos7       PostgreSQL is an advanced Object-Relational …   7
openshift/mysql-55-centos7         DEPRECATED: A Centos7 based MySQL v5.5 image…   6
pivotaldata/centos-gpdb-dev        CentOS image for GPDB development. Tag names…   3
darksheer/centos                   Base Centos Image -- Updated hourly             3                                       [OK]
openshift/jenkins-1-centos7        DEPRECATED: A Centos7 based Jenkins v1.x ima…   3
openshift/wildfly-101-centos7      A Centos7 based WildFly v10.1 image for use …   3
pivotaldata/centos                 Base centos, freshened up a little with a Do…   1
miko2u/centos6                     CentOS6 日本語環境                                   1                                       [OK]
pivotaldata/centos-mingw           Using the mingw toolchain to cross-compile t…   1
openshift/php-55-centos7           DEPRECATED: A Centos7 based PHP v5.5 image f…   1
blacklabelops/centos               CentOS Base Image! Built and Updates Daily!     1                                       [OK]
jameseckersall/sonarr-centos       Sonarr on CentOS 7                              0                                       [OK]
pivotaldata/centos-gcc-toolchain   CentOS with a toolchain, but unaffiliated wi…   0
smartentry/centos                  centos with smartentry                          0                                       [OK]

1.7 下载镜像

1.7.1 解决镜像下载慢的问题

  我们可以使用 Docker 镜像加速器来解决这个问题,加速器就是镜像、代理的概念。国内有不少机构提供了免费的加速器以方便大家使用,这里列出一些常用的加速器服务:

  • Docker 官方的中国镜像加速器:从2017年6月9日起,Docker 官方提供了在中国的加速器,以解决墙的问题。不用注册,直接使用加速器地址:https://registry.docker-cn.com 即可。
  • 中国科技大学的镜像加速器:中科大的加速器不用注册,直接使用地址 https://docker.mirrors.ustc.edu.cn/ 配置加速器即可。进一步的信息可以访问:http://mirrors.ustc.edu.cn/help/dockerhub.html?highlight=docker
  • 阿里云加速器:注册阿里云开发账户(免费的)后,访问这个链接就可以看到加速器地址: https://cr.console.aliyun.com/#/accelerator
  • DaoCloud 加速器:注册 DaoCloud 账户(支持微信登录),然后访问: https://www.daocloud.io/mirror#accelerator-doc

  Ubuntu 16.04 和 CentOS 7 这类系统都已经开始使用 systemd 进行系统初始化管理了,对于使用 systemd 的系统,应该通过编辑服务配置文件 docker.service 来进行加速器的配置。 

sudo vim /etc/systemd/system/multi-user.target.wants/docker.service#在文件中找到 ExecStart= 这一行,并且在其行尾添加上所需的配置。假设我们的加速器地址为 https://registry.docker-cn.com,那么可以这样配置ExecStart=/usr/bin/dockerd --registry-mirror=https://registry.docker-cn.comsudo systemctl daemon-reload
sudo systemctl restart docker# 确认配置
sudo ps -ef | grep dockerd

[bigberg@localhost ~]$ ps -ef | grep docker
root       4273      1  1 10:04 ?        00:00:08 /usr/bin/dockerd --registry-mirror=https://registry.docker-cn.com

1.7.2 获取镜像

[bigberg@localhost ~]$ docker pull centos:7
7: Pulling from library/centos
af4b0a2388c6: Pull complete
Digest: sha256:2671f7a3eea36ce43609e9fe7435ade83094291055f1c96d9d1d1d7c0b986a5d
Status: Downloaded newer image for centos:7

  

1.8 查看镜像

[bigberg@localhost ~]$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              e548f1a579cf        3 days ago          109MB
centos              7                   ff426288ea90        6 weeks ago         207MB
hello-world         latest              f2a91732366c        3 months ago        1.85kB

1.9 导出镜像

[bigberg@localhost ~]$ docker save -o centos.tar.gz centos[bigberg@localhost ~]$ docker save  nginx > nginx.tar.gz[bigberg@localhost ~]$ docker image save hello-world > hello.tar.gz[bigberg@localhost ~]$ ll
total 320480
-rw------- 1 bigberg bigberg 215760384 Feb 24 10:38 centos.tar.gz
-rw-rw-r-- 1 bigberg bigberg     12800 Feb 24 10:40 hello.tar.gz
-rw-rw-r-- 1 bigberg bigberg 112393728 Feb 24 10:39 nginx.tar.gz

1.10 导入镜像

[root@linux-node1 ~]#docker load --input centos.tar.gz
#使用input导入
[root@linux-node1 ~]# docker load < nginx.tar.gz #使用重定向导入
[root@linux-node1 ~]# docker load < /opt/centos.tar.gz #导入本地镜像到docker镜像库

  

1.11 删除镜像

# docker rmi TMAGE ID

[bigberg@localhost ~]$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              e548f1a579cf        3 days ago          109MB
centos              7                   ff426288ea90        6 weeks ago         207MB
hello-world         latest              f2a91732366c        3 months ago        1.85kB
[bigberg@localhost ~]$ docker rmi f2a91732366c
Untagged: hello-world:latest
Untagged: hello-world@sha256:66ef312bbac49c39a89aa9bcc3cb4f3c9e7de3788c944158df3ee0176d32b751
Deleted: sha256:f2a91732366c0332ccd7afd2a5c4ff2b9af81f549370f7a19acd460f87686bc7
Deleted: sha256:f999ae22f308fea973e5a25b57699b5daf6b0f1150ac2a5c2ea9d7fecee50fdf
[bigberg@localhost ~]$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              e548f1a579cf        3 days ago          109MB
centos              7                   ff426288ea90        6 weeks ago         207MB

  

1.12 显示某个镜像的历史

可以看到镜像的每一次

-H :以可读的格式打印镜像大小和日期,默认为true;

--no-trunc :显示完整的提交记录;

-q :仅列出提交记录ID。

[bigberg@localhost ~]$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              e548f1a579cf        3 days ago          109MB
centos              7                   ff426288ea90        6 weeks ago         207MB
[bigberg@localhost ~]$ docker -H nginx
^C
[bigberg@localhost ~]$ docker history nginx
IMAGE               CREATED             CREATED BY                                      SIZE                COMMENT
e548f1a579cf        3 days ago          /bin/sh -c #(nop)  CMD ["nginx" "-g" "daemon…   0B
<missing>           3 days ago          /bin/sh -c #(nop)  STOPSIGNAL [SIGTERM]         0B
<missing>           3 days ago          /bin/sh -c #(nop)  EXPOSE 80/tcp                0B
<missing>           3 days ago          /bin/sh -c ln -sf /dev/stdout /var/log/nginx…   22B
<missing>           3 days ago          /bin/sh -c set -x  && apt-get update  && apt…   53.4MB
<missing>           3 days ago          /bin/sh -c #(nop)  ENV NJS_VERSION=1.13.9.0.…   0B
<missing>           3 days ago          /bin/sh -c #(nop)  ENV NGINX_VERSION=1.13.9-…   0B
<missing>           6 days ago          /bin/sh -c #(nop)  LABEL maintainer=NGINX Do…   0B
<missing>           9 days ago          /bin/sh -c #(nop)  CMD ["bash"]                 0B
<missing>           9 days ago          /bin/sh -c #(nop) ADD file:27ffb1ef53bfa3b9f…   55.3MB

  

转载于:https://www.cnblogs.com/bigberg/p/8464566.html

Docker入门与应用系列(二)镜像管理相关推荐

  1. Wireshark入门与进阶系列(二)

    摘自http://blog.csdn.net/howeverpf/article/details/40743705 Wireshark入门与进阶系列(二) "君子生非异也,善假于物也&quo ...

  2. 机器学习入门科普篇--系列二

    机器学习入门科普篇--系列二 前言 python程序语言与机器学习实践可以称得上是"珠联璧合".因为使用python编程技巧,接触甚至掌握机器学习的经典学习算法至少有以下四个优势. ...

  3. Docker入门笔记(七)——镜像

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

  4. 《Visual C++ 2010入门教程》系列二:安装、配置和首次使用VS2010

    安装 Visual C++ 2010是属于Visual Studio 2010的一部分,这个在前一章中已经讲解过,实际上Visual C++ 2010也有更多的子版本,正如Windows7有旗舰版.家 ...

  5. EAIDK-610入门修炼ing系列二MIPI摄像头安装

    EAIDK- Embedded AI Development Kit ▪ 目标: AI(深度学习)边缘计算 ▪ EAIDK是多系列产品,每款产品都会明确具体定位 EAIDK-610:基于高性能CPU和 ...

  6. kali入门到放弃系列二:破解wifi无线密码

    前置条件: 建议在淘宝购买一个linux免驱动无线网卡(自己买过绿联,水星等等无线网卡,发现都不能做到linux免驱动) 先上一张破解过程的图 以下是正式流程: 1.kali系统登录后,执行 ifco ...

  7. Docker入门与七牛kirk工具

    一.Docker的实现原理和技术前景 Docker技术是一门容器技术,于2013年正式开源发行,现在它已经成为了目前最流行的虚拟化技术,Docker的优点是"轻量型"," ...

  8. Docker入门(基础篇+高级篇)

    Docker 参考手册基础篇+高级篇 一.Docker常用命令 docker run docker stop docker start 进入一个运行中的容器 docker ps docker imag ...

  9. Docker入门指南:基于 docker 搭建机器学习/深度学习开发环境

    实际工作中,许多项目开发需要在Linux服务器上进行,本文为习惯使用 Windows 操作系统的朋友介绍一种基于Docker的,跨平台.便携性(方便移植.重新部署.可远程访问)的开发环境搭建方法. 1 ...

最新文章

  1. 培养产品思维,每个人都应该是产品经理
  2. Python学习笔记:Day1-2 开发环境搭建
  3. serverless 框架_Malaguv1.4.1支持Serverless的微服务框架
  4. 各种排序总结(六)归并排序
  5. linux 自动连接无限,hotplug应用实例:自动连接无线网
  6. 2021抖音电商宠物经济洞察报告
  7. 蓝桥杯大赛青少年创意编程 推荐考生阅读 相关书籍的相关视频(部分)
  8. 如何更改Live Writer发布照片到不同相册
  9. stm32l4 外部中断按键会卡死_stm32f103c8怎么实现外部中断按键点灯,按一下就亮,再按一下就灭,求大神帮忙...
  10. 直接无序搜索 vs 先排序后搜索
  11. MYSQL入门基础知识
  12. Eclipse最新SVN(4.2.x )插件subclipse安装方法
  13. win11安装Pandoc
  14. 一个关于springboot的junit使用错误,空指针异常
  15. 面试一次问一次,HashMap是该拿下了(一)
  16. 图像处理-007形态变换(二)
  17. 索骥馆-编程语言之《网络编程实用教程(第2版)》扫描版[PDF]
  18. 敏捷Scrum指南三:Scrum角色之SM(ScrumMaster)
  19. CLRS第八章思考题
  20. Source Insight给Linux内核创建工程

热门文章

  1. 使用Sublime Text 3做Python开发
  2. ADO Entities Framework不对多表查询进行优化?
  3. CVPR 2021 |针对强时序依赖,即插即用、混合注意力机制的 ACTION 模块
  4. CMU黑科技,手机录视频,实现人脸3D建模的高度逼真
  5. 图像分类任务中的tricks总结
  6. 我爱计算机视觉精华文章分类汇总(2018年12月13日)
  7. Ubuntu 18.04从源代码编译安装GPU支持的Tensorflow 1.8.0
  8. python基础:抓取博客网页上的图片并且保存的例子
  9. bit java实验2_2018-2019-2 20175120 实验五《Java网络编程》实验报告
  10. 老兄,还在为你的MarkDown写作发愁吗?这些数学符号表达式绝对有你想要的那个,最后还有字体和颜色的修改方法哦