当前位置: 首页 > news >正文

网站平台开发与应用面试全自动推广软件

网站平台开发与应用面试,全自动推广软件,做全屏轮播的网站有哪些,空间链接制作网站目录 一、Docker镜像的创建 1、基于已有镜像创建 2、基于本地模板创建 3、基于dockerfile创建 3.1 dockerfile结构 3.2 构建镜像命令 二、镜像分层的原理 1、联合文件系统(UnionFS) 2、镜像加载的原理 三、Dockerfile 操作常用的指令 案例实验…

目录

一、Docker镜像的创建

1、基于已有镜像创建

2、基于本地模板创建

3、基于dockerfile创建

3.1 dockerfile结构

3.2 构建镜像命令

二、镜像分层的原理

1、联合文件系统(UnionFS)

2、镜像加载的原理

三、Dockerfile 操作常用的指令

案例实验

总结:

一、Docker镜像的创建

镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。

创建镜像有三种方法,分别为基于已有镜像创建、基于本地模板创建以及基于Dockerfile创建。

1、基于已有镜像创建

原理:将容器里面运行的程序及运行环境打包生成新的镜像

docker commit 【选项】 【容器id】 仓库名:标签

常用选项

选项描述
-m说明信息
-a作者信息
-p生成过程中停止容器的运行

基于已有镜像创建案例

2、基于本地模板创建

原理:通过导入操作系统模板文件生成新的镜像

wget http://download.openvz.org/template/precreated/debian-7.0-x86-minimal.tar.gz
#使用wget命令导入为本地镜像docker import debian-7.0-x86-minimal.tar.gz -- debian:v1
或
cat debian-7.0-x86-minimal.tar.gz |docker import - debian:v1
#生成镜像docker images
#查看镜像docker run -itd debian:v1 bash
#创建并启动容器

3、基于dockerfile创建

Dockerfile 是一个文本文件,文件中包含了一条条的指令(instruction),用于构建镜像。每一条指定构建一层镜像,因此每一条指令的内容,就是描述该层镜像应当如何构建。

  • dockerfile是 自定义镜像 的一个脚本,每条指令对应 Linux 中的一条命令
  • dockerfile每行支持一条指令,每条指定可携带多个参数,一条指令可以用&&方式,去写多条指令
  • dockerfile支持以“ # ”为开头的注释

3.1 dockerfile结构

  • 基于镜像信息 (linux发行版:比如 centos 、ubuntu、suse、debian、alpine、redhat)
  • 维护者信息 (docker search 可查看)
  • 镜像操作指令 (tar yum make)
  • 容器启动时执行指令 ( cmd [“/root/run/sh”]、entrypoint、都是系统启动时,第一个加载的程序/脚本/命令)

3.2 构建镜像命令

可以在构建镜像时指定资源限制

在编写Dockerfile时,需要遵守严格的格式:

  • 第一行必须使用 FROM 指令指明所基于的镜像名称
  • 之后使用 MAINTAINER 指令说明维护该镜像的用户信息
  • 然后是镜像操作相关指令,如 RUN 指令。每一条指令,都会给基础镜像添加新的一层。
  • 最后使用 CMD 指令指定启动容器时,要运行的命令操作

二、镜像分层的原理

Docker 镜像结构的分层

镜像不是一个单一的文件,而是有多层构成。容器其实是在镜像的最上面加了一层读写层,在运行容器里做的任何文件改动,都会写到这个读写层。如果删除了容器,也就删除了其最上面的读写层,文件改动也就丢失了。Docker使用存储驱动管理镜像每层内容及可读写层的容器层。

  • Dockerfile中的每一个指令都会创建一个新的镜像层(是一个临时的容器,执行完后将不再存在,再往后进行重新的创建与操作)
  • 镜像层将被缓存和复用(后续的镜像层将基于前面的每一层,每一层都会有下几层的缓存)
  • 当Dockerfile的指令修改了,复制的文件变化了,或构件镜像时指定的变量不同了,那么对应的镜像层缓存就会失效(因为后续的操作必然更改前面的镜像层)
  • 某一层的镜像缓存失效了之后,它之后的镜像层缓存就都会失效(第一层不成功,那么第二层也会失效)
  • 容器的修改并不会影响镜像,如果在某一层中添加一个文件,在下一层中删除它,镜像中依然会包含该文件。

1、联合文件系统(UnionFS)

UnionFS(联合文件系统):Union文件系统(UnionFS)是一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下。AUFS、OverlayFS 及 Devicemapper 都是一种 UnionFS。
Union文件系统是Docker镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。

特性:
一次同时加载多个文件系统,但从外面看起来,只能看到一个文件系统,联合加载会把各层文件系统叠加起来,这样最终的文件系统会包含所有底层的文件和目录。

从仓库下载时, 我们下看到的一层层的就是联合文件系统

2、镜像加载的原理

  • Docker的镜像实际上由一层一层的文件系统组成,这种层级的文件系统就是UnionFS。
  • bootfs主要包含bootloader和kernel,bootloader主要是引导加载kernel,Linux刚启动时会加载bootfs文件系统。
  • 在Docker镜像的最底层是bootfs,这一层与我们典型的Linux/Unix系统是一样的,包含boot加载器和内核。当boot加载完成之后整个内核就都在内存中,此时内存的使用权已由bootfs转交给内核,此时系统也会卸载bootfs.
  • rootfs在bootfs之上。包含的就是典型Linux系统中的/dev,/proc,/bin,/etc等标准目录和文件。rootfs就是各种不同的操作系统发行版,比如Ubuntu,Centos等等。

  • 我们可以理解成一开始内核里什么都没有, ① 操作一个命令下载debian,这是就会在内核上面加一层基础镜像; ② 再安装一个emacs,会在基础镜像上叠加一层image;接着再安装一个apache,又会在images.上面叠加一层image。最后它们看起来就像一个文件系统即容器的rootfs。 在Docker的体系里把这些rootfs叫做Docker的镜像。 ③ 但是,此时的每一层rootfs都是read-only的,我们此时还不能对其进行操作。当我们创建一个容器,也就是将Docker镜像进行实例化,系统会在一层或是多层read-only的rootfs之上分配一层空的read-write的rootfs

问:为什么Docker里的centos的大小才200M?

因为对于精简的OS,rootfs可以很小,只需要包含最基本的命令、工具和程序库就可以了,因为底层直接用宿主机的kernel,自己只需要提供rootfs就可以了。由此可见对于不同的linux发行版,bootfs基本是一致的,rootfs会有差别,因此不同的发行版可以公用bootfs。

三、Dockerfile 操作常用的指令

指令含义
FROM指定新镜像所基于的镜像。 第一条指令必须为FROM指令,每创建一个镜像就需要一条FROM指令
MAINTAINER说明新镜像的维护人信息(可写可不写)
RUN命令每一条RUN后面跟一条命令 ,在所基于的镜像上执行命令,并提交到新的镜像中, RUN必须大写。
CMD [“要运行的程序”,“参数1”,“参数2”]指定启动容器时需要运行的命令或脚本, Dockerfile只能有一条CMD命令, 如果指定多条则只能执行最后一条,“/bin/bash”也是一条CMD,并且会覆盖images镜像里面的cmd
ENTRYPOINT [“要运行的程序”,“参数1”,“参数2”]设定容器启动时第一个运行的命令及其参数。可以通过使用命令:docker run --entrypoint 来覆盖镜像中的ENTRYPOINT指令的内容
EXPOSE [端口号]指定新镜像加载到Docker时要开启的端口 “暴露端口”,就是这个容器暴露出去的端口号。
ENV [环境变量] [变量值]设置一个 “ 环境变量 ”的值,会被后面的RUN使用,容器可以根据自己的需求创建时传入环境变量,镜像不可以
ADD [源文件/目录] [目标文件/目录]①将源文件复制到目标文件, 源文件要与Dockerfile位于相同目录中。 ②或者时一个URL。 ③若源文件时压缩包的则会将其解压。
COPY [源文件/目录] [目标文件/目录]将本地主机上的文件/目录复制达到目标地点,源文件/目录要与Dockerfile在相同的目录中, copy只能用于复制,add复制的同时,还可以将对象解压, copy比add节省资源
VOLUME [“目录”]在容器中创建一个挂载点,简单来说就是 -v,指定镜像的目录挂载到宿主机上。
USER [用户名/UID]指定运行容器的用户
WORKDIR [路径]为后续的RUN、CMD、ENTRYPOINT指定工作目录, 相当于一个临时的“CD ” ,否则需要使用绝对路径,例如 workdir /opt ,移动到opt目录下, 后续执行的指令都是在/opt下面操作
ONBUILD [命令]指定所生成的镜像作为一个基础镜像时所要运行的命令 “(是一种优化)”
HEALTHCHECK健康检查

案例实验

构建apache服务

mkdir /opt/apache
cd /opt/apachevim DockerfileFROM centos:7
#基于的基础镜像MAINTAINER this is apacher iamge <ydq>
#维护镜像的用户信息RUN yum -y update
#在基于镜像(centos:7)上执行更新yum仓库RUN yum -y install httpd 
#镜像操作指令安装apache软件EXPOSE 80
#开启80端口ADD index.html /var/www/html/index.html
#FUZHI Dockerfile所在目录下的index.html文件到容器中的/var/www/html目录下//方法一:需要些脚本
ADD run.sh /run.sh
#复制Dockerfile文件所在目录下的run.sh文件到容器中的根目录下
RUN chmod +x /run.sh
#在基于镜像上为根目录下的run.sh文件到容器中的根目录
CMD ["/run.sh"]
#启动容器时运行容器根目录下的run.sh文件//方法二:
ENTRYPOINT ["/usr/sbin/apachectl"]
CMD ["-D","FOREGROUND"]

echo "this is ydq" > index.html
#指定页面内容vim run.sh
#!/bin/bash
rm -rf /run/httpd/*   #删除原有的apache缓存
exec /usr/sbin/apachectl -D FOREGROUND   #开启apache服务,并开启守护进程

docker build -t httpd:centos7 .
#在Dockerfile所在目录下构建新镜像 httpd:centos7docker images
#查看镜像docker run -d -p 1234:80 httpd:centos7
#后台运行容器,并暴露端口1234

总结:

创建镜像:

①基于现有镜像创建

docker run #创建并启动容器
docker commit #提交创建新的镜像

②基于本地模板创建

从网上下载现有的镜像模板,或使用 docker export 导入本地容器快照模板

docker import 将快照导入成本地镜像

③dockerfile 构建镜像的创建

先用FROM指定基础镜像;

再用MAINTAINER 指定维护人信息;

然后用RUN EXPOSE ADD ENV USER WORKDIR 等指定编写构建镜像的过程;

最后使用CMD/ENTPYPONT 命令启动容器时的执行命令

ENTPYPONT和CMD 区别:

容器启动时执行命令的优先级:

  1. docker run --entpypont=命令  镜像  选项  参数
  2. ENTPYPONT  [ "命令",“选项,“参数” ]
  3. docker run 镜像 命令 选项 参数
  4. CMD  [ "命令",“选项,“参数” ]

如果在同一个dockerfile 文件中存在ENTPYPONT和CMD,ENTPYPONT会覆盖CMD运行命令,CMD为ENTPYPONT提供选项和参数

ADD和COPY区别:

都可以复制本地文件/目录;

ADD可通过URL路径下载文件并复制到镜像,还可以把本地的tar压缩包进行解压,并复制到镜像中;

COPY还支持配合 --from=选项实现多阶段构建

如何缩小docker构建的镜像体积大小?

  • 尽可能减少指令的数量,比如把RUN 的Linux 指令进行合并
  • 尽可能使用最简洁的基础镜像,比如centos7
  • 使用多阶段(多级)构建dockerfile
http://www.shuangfujiaoyu.com/news/29320.html

相关文章:

  • 沈阳定制网站制作seo优化网
  • 济南高端网站建设公司seo是什么职务
  • 太原做app网站建设网络推广方法大全
  • 上海门户网站建设方案优化关键词的步骤
  • 如何做家具网站百度网址大全下载
  • 网站建设与维护高职郑州网
  • 118论坛网址之家班级优化大师下载安装最新版
  • 李沧做网站站长之家域名查询官网
  • 动态ip做网站影响seo吗如何优化培训体系
  • wordpress调试工具seo软文推广工具
  • 企业门户平台登录郑州seo优化大师
  • 天津河北做网站的公司排名百度网站域名注册
  • 泉州seo网站关键词优关键词快速优化排名软件
  • 九江网站建设水果网络营销策划方案
  • 珠宝类网站建设北京已感染上千万人
  • Wordpress 数据10万东莞营销网站建设优化
  • wordpress评论采集发布佛山seo优化
  • 国外红色企业网站百度推广怎么找客户
  • 专门做钻石国外网站外链发布平台有哪些
  • 定制网站制作费用百度手机助手app官方下载
  • 惠州公司注册手机游戏性能优化软件
  • 郑州建网站哪个公司好快速排名优化seo
  • 招聘wordpress网站高手兼职网站推广策划方案
  • 企业网站如何做架构图公司网站怎么优化
  • 宁波网站建设公司哪个好卡一卡二卡三入口2021
  • 网站常见故障seo岗位是什么意思
  • 免费ppt模板下载手机seo学校培训
  • 武义建设工程网站新站seo外包
  • 微信上怎么做网站链接企业查询
  • 做网站激励语重庆seo推广公司