docker(二)——镜像_docker 七牛镜像-程序员宅基地

技术标签: Linux  运维  linux  docker  

1:镜像的分层结构

docker 镜像共享宿主机的kernel,base镜像提供的是最小的Linux发行版,同一docker主机支持运行多种Linux发行版。
在这里插入图片描述
比如我们在宿主机上拉取一个busybox镜像,以交互式运行一个容器,执行uname -r命令,可以发现在容器中的操作系统和内核版本与宿主机相同。
在这里插入图片描述
一个docker镜像由多个只读的镜像层组成,然后运行的容器会在这个docker的镜像上面多加一层可写的容器层,docker从上往下依次查找文件,容器层以下所有镜像层都是只读的,任何对容器的更改都只存在此容器层,并不会对镜像本身进行修改。同时,采用分层结构的最大好处就是:共享资源。
一个镜像最多127层。
在这里插入图片描述
比如 ,我们拉取一个busybox镜像,执行docker history busybox查看这个镜像的创建历史,可以看到一共有两层。
在这里插入图片描述
我们以交互式运行一个busybox的容器,在test容器中创建几个新的文件后,使用docker commit -m "v1" test demo:v1命令,从容器创建一个新的镜像demo:v1。
在这里插入图片描述
对比demo:v1和busybody的创建历史,demo:v1在前两层的基础上新建了一层镜像。
在这里插入图片描述
使用docker rmi demo:v1命令删除demo:v1镜像,发现只删除了最上面的一层,因为busybox还在使用最基础的两层镜像。

2:镜像的构建

根据以上实验,我们可以看到使用docker commit创建新镜像,分为以下三步:

  • 运行容器
  • 修改容器
  • 将容器保存为新的镜像

这样做的缺点是:

  • 效率低、可重复性弱、容易出错
  • 使用者无法对镜像进行审计,存在安全隐患。

因为,我们接下来可以通过创建dockerfile来构造镜像。

3:dockerfile的创建

Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。每条指令都必须为大写字母,切后面要跟随一个参数。Dockerfile中的指令会按照顺序从上到下执行,所以应该根据需要合理安排指令的顺序。每条指令都会创建一个新的镜像层并对镜像进行提交。Docker大体上按照如下流程执行Dockerfile中的指令。
Dockerfile构建构过程:

  • 从基础镜像运行一个容器
  • 执行一条指令,对容器做出修改
  • 执行类似docker commit 的操作,提交一个新的镜像层
  • 再基于刚提交的镜像运行一个新容器
  • 执行Dockerfile中的下一条指令,直至所有指令执行完毕

下面我们通过构造一个dockerfile的实例来了解它的工作原理。
创建一个目录,在dockerfile目录下新建一个dockerfile文件,然后编写一个完整的dockerfile,内容如下;

FROM busybox  ##指定一个基础镜像busybox,本地没有的话,会从网络上pull
RUN echo "hello world">testfile  ##构建镜像时执行  echo "hello world">testfile 这个命令

使用dockerfile创建一个新的镜像demo:v3 (docker build 创建镜像的命令, -f 指定dockerfile文件,镜像的名字及标签 ,后面跟的是路径," . "表示当前路径);
在这里插入图片描述
查看demo:v3的创建历史,我们可以看到镜像内的所有操作,便于审计;
在这里插入图片描述
同时,dockerfile也是可以缓存,我们在demo:v3的dockerfile上增加一条指令;

FROM busybox
RUN echo "hello world">testfile
RUN  rm -fr testfile

使用新的dockerfile构建demo:v4镜像,我们可以看到前面的指令是使用了缓存的,更高效的利用系统资源。
在这里插入图片描述

4: 镜像加速

国内从 DockerHub 拉取镜像有时会遇到困难,此时可以配置镜像加速器。Docker 官方和国内很多云服务商都提供了国内加速器服务,例如:

  • 科大镜像:https://docker.mirrors.ustc.edu.cn/
  • 网易:https://hub-mirror.c.163.com/
  • 阿里云:https://<你的ID>.mirror.aliyuncs.com
  • 七牛云加速器:https://reg-mirror.qiniu.com

当配置某一个加速器地址之后,若发现拉取不到镜像,请切换到另一个加速器地址。国内各大云服务商均提供了 Docker 镜像加速服务,建议根据运行 Docker 的云平台选择对应的镜像加速服务。
阿里云镜像获取地址:登陆后,左侧菜单选中镜像加速器就可以看到你的专属地址了:
在这里插入图片描述
对于使用 systemd 的系统,请在 /etc/docker/daemon.json 中写入如下内容(如果文件不存在请新建该文件):

{
    "registry-mirrors":["https://xxxx.aliyuncs.com/"]}

之后重新启动服务:

 systemctl daemon-reload
 systemctl restart docker 
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_42006358/article/details/120297890

智能推荐

gazebo+rviz中配置UR+robotiq_gripper夹爪,最详细操作过程_roboticsgroup_gazebo_plugins-程序员宅基地

文章浏览阅读6.9k次,点赞11次,收藏115次。gazebo中配置robotiq1.下载功能包1.UR机器人功能包下载最原始的ros-industrial提供的robotiq夹爪的功能包,是不能用在gazebo中仿真的,只能在rviz中可视化,原因就是其urdf文件,或者说xacro文件中缺少在gazebo中需要的东西。下面就具体说一下应该修改哪些文件:1.下载功能包1.UR机器人功能包下载github地址:这里有两种版本的功能包..._roboticsgroup_gazebo_plugins

手游外挂分类及原理介绍_安卓外挂-程序员宅基地

文章浏览阅读4.4k次,点赞2次,收藏29次。一、前言移动游戏市场近几年突然爆发,收入规模快速增长。根据第三方数据统计,如图所示,国内移动游戏2015年市场规模已达514.6亿。如此火热的市场,必然会吸引大量图谋不轨的坏人。外挂已在移动市场悄然兴起。目前移动游戏市场上,有多方需求在催促外挂的发展。比如打金工作室,想更高效地刷取游戏货币;大量屌丝玩家,想花少量的钱得到更大快感;竞品公司或者恶意玩家,想恶意破坏游戏正常活动运营。这类外挂会影响到游戏开发商的收益及游戏玩家的体验。作为移动游戏从业者,必须开始了解外挂,关注外挂。本篇幅着重介绍下._安卓外挂

hostapd_cli命令源码分析_hostapd_cli源码-程序员宅基地

文章浏览阅读7.1k次。hostapd提供了控制命令hostapd_cli,使用方法可以查看usage。源码中的main函数:int main(int argc, char *argv[]){ int warning_displayed = 0; int c; int daemonize = 0; if (os_program_init())//不同操作体统平台下执行不同的环境初始化_hostapd_cli源码

unity 用Box Collider为物体添加碰撞范围_box colider z 轴-程序员宅基地

文章浏览阅读1w次。游戏中,人物和桌子可以相碰,一个球和某个铁桶也可以相碰,这里,用一个最基础和常用的碰撞来做一个简单的演示。_box colider z 轴

常用加密算法解析-程序员宅基地

文章浏览阅读819次,点赞6次,收藏8次。DSA的一个重要特点是两个素数公开,这样,当使用别人的p和q时,即使不知道私钥,你也能确认它们是否是随机产生的,还是作了手脚。而非对称加密使用一对秘钥,一个用来加密,一个用来解密,而且公钥是公开的,秘钥是自己保存的,不需要像对称加密那样在通信之前要先同步秘钥。全称为Data Encryption Standard,即数据加密标准,是一种使用密钥加密的块算法,1977年被美国联邦政府的国家标准局确定为联邦资料处理标准(FIPS),并授权在非密级政府通信中使用,随后该算法在国际上广泛流传开来。

区分innerHeight与pageYOffset、innerWidth与pageXOffset_offset innerwidth-程序员宅基地

文章浏览阅读470次。它们都是window上的对象:(1)innerHeight属性:窗口中文档显示区域的高度,该属性可读可写。但IE不支持该属性, IE中body元素的clientHeight属性,它与innerHeight属性相同。(2)innerWidth属性:窗口中文档显示区域的宽度,同样不包括边框。该属性可读可写。但IE不支持该属性,IE中body元素的clientWidth属性与该属性相同。注意:cl..._offset innerwidth

随便推点

华为交换机配置命令汇总_slave auto-update config-程序员宅基地

文章浏览阅读1.1w次,点赞10次,收藏98次。VRP系统基本使用◆command-privilege level rearrange ——用户级别为15级才能执行,将所有缺省注册为2、3级的命令,分别批量提升到10和15级。◆undocommand-privilege level rearrange——批量恢复。◆command-privilege levellevelviewview-namecomman-ke..._slave auto-update config

python学习笔记 4 - 线性回归、波士顿房价数据分析_波士顿房价数据集线性回归结果及分析-程序员宅基地

文章浏览阅读5.6k次,点赞4次,收藏76次。什么是机器学习?给定一组(x(i), y(i)),给定一个模型,将x(i)输入模型后得到y(i)^计算y(i)和y(i)^的差距,差距越小,模型越优。通过不断地优化模型,使得差距越来越小,这就是机器学习_波士顿房价数据集线性回归结果及分析

Karaf教程之Config Admin服务的使用_configurationadmin-程序员宅基地

文章浏览阅读2.5k次。在Karaf教程的第一部分,我们学习了如何使用maven和blueprint提供和使用pojo服务,以及如何使用http服务发布一个servlet。在第二部分,我们关注OSGi bundles的配置。和servlet容器不同,对于配置OSGi包含了一个非常好的规范:来自OSGi企业规范的配置管理服务。在该教程中,将涉及分别通过OSGi和blueprint方式来使用配置管理服务,以及如何使配置文件和bundles自动_configurationadmin

【数值计算】3kV-1000kV交流线路的典型参数与中间变量_1000kv导线型号-程序员宅基地

文章浏览阅读3.4k次,点赞6次,收藏14次。设计手册,3kV-1000kV交流线路典型参数(导线截面、分裂数、相间距等),计算(估算)中间变量(等效半径、相间几何均距)和线路四个参数(r, x, g, b),分析规律。_1000kv导线型号

全民一起VBA提高篇 第十八回 传参数随心所欲不逾矩,消息框暗藏高招有神通_vba 可以回传的参数-程序员宅基地

文章浏览阅读379次。相关知识点可选参数Optional (参数)=False:参数默认值是FalseIsMissing(a):判断一个可选参数a是否提供,没有提供就返回True,否则返回False,可选参数必须是变体类型,不能是默认值(没有默认值的变体类型)MsgBox“参数1”,参数2,参数3:参数2为0,只有确定按钮,默认;1,确定取消;是4,是否双按钮;是64,带有信息警告标志的对话框;参..._vba 可以回传的参数

python爬取图片(正则、bs4、Xpath三种方法)_爬出图片-程序员宅基地

文章浏览阅读3.3k次。本文给出爬取三个图片网站的案例,分别用到了正则表达式、bs4、Xpath三种解析方式。目录案例一:正则表达式解析案例二: bs4解析案例三: Xpath解析案例一:正则表达式解析 需求:爬取挖好图网”唯美分类“中的图片 详细代码如下:# coding=gbkimport requestsimport reimport os#需求:爬取挖好图唯美图片#网址:'https://www.wahaotu.com/weim..._爬出图片