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

好网站开发公司网络项目资源网

好网站开发公司,网络项目资源网,福州小程序开发外包,网络服务热线目录 Dockfile是什么 构建镜像的三个步骤 dockerfile内容基础知识 docker执行一个Dockerfile脚本的大致流程 Dockerfile指令 FROM MAINTAINER RUN EXPOSE WORKDIR ENV ADD COPY VOLUME USER ONBUILD CMD ENTRYPOINT CMD和ENTRYPOINT区别 构建dockerfile Do…

目录

Dockfile是什么

构建镜像的三个步骤

dockerfile内容基础知识

docker执行一个Dockerfile脚本的大致流程

Dockerfile指令

FROM

MAINTAINER

RUN

EXPOSE

WORKDIR

ENV

ADD

COPY

VOLUME

USER

ONBUILD

CMD

ENTRYPOINT

CMD和ENTRYPOINT区别

构建dockerfile

Dockfile是什么

含义:其是用来构建docker镜像的文本文件,是由一条条构建镜像所需的指令和参数构成的脚本

构建镜像的三个步骤

  1. 编写Dockerfile文件
  2. docker build命令构建镜像
  3. docker run依照镜像运行容器实例

dockerfile内容基础知识

  • 每条保留字指令都必须为大写字母且后面要跟至少一个参数
  • 指令按照从上到下顺序执行
  • #表示注释
  • 每条指令都会创建一个新的镜像层并对镜像进行提交

docker执行一个Dockerfile脚本的大致流程

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

Dockerfile指令

FROM

前言:

  • Dockerfile中的第一条指令必须是FROM命令,指定使用的基础镜像(基础环境)
  • Docker Hub中99%的镜像都是从scratch这个基础镜像过来的,也就是FROM后面的参数不知道写什么就写scratch

语法:FROM 基础镜像 

若在同一个Dockerfile中构建多个镜像,可以使用很多FROM命令

FROM <image>
FROM <image>:<tag>

MAINTAINER

前言:用于指定生成镜像的作者名称

语法:MAINTAINER <name>

RUN

作用:基于该镜像环境下执行命令,并提交到该镜像

语法:RUN <command>

FROM nginx:latest
RUN apt-get update
RUN apt-get install -y iproute2
RUN apt-get install -y net-tools
RUN apt-get install -y iputils-ping
EXPOSE 80

如上就是为nginx镜像添加功能使用的

注意:

  • 多行命令不要写多个RUN(不要在意上面)原因是Dockerfile中的每一个指令都会建立一层。多个RUN就会构建多层镜像,会造成镜像臃肿,多层,不仅增加了部署时间,还易出错
  • linux内一行执行多个命令:command1;conmand2;……
  • RUN书写时换行符为\

EXPOSE

作用:对外暴露该容器开放的端口

语法:EXPOSE 端口号

注意:Dockerfile中的EXPOSE仅仅是标记信息,并不能真正打开端口,仅仅是为了增加可读性。完全可以省略

WORKDIR

作用: 

  • 指定创建容器后,默认进入容器的路径,也就是进入容器的落脚点在哪(不写则在根目录)
  • 为Dockerfile中所有的RUN、CMD、ENTRYPOINT、COPY、ADD设定工作目录(就是下载东西存在哪)

语法:WORKDIR 容器内路径

ENV

作用:用于设定docker容器内的环境变量供以后使用。

语法:ENV 环境变量名 环境变量值

注意:设置好环境变脸后就可以在后面复用了,复用方式$环境变量名

ADD

作用:将宿主机目录下的文件拷贝至镜像,且ADD命令会自动处理URL和解压tar压缩包

语法:ADD 宿主机的文件/目录 镜像目录

COPY

作用:将主机的目录或文件拷贝至镜像中,但是相对于ADD来说不会解压缩

语法:COPY 宿主机的文件/目录 镜像目录

VOLUME

作用:挂载数据卷,将宿主机的目录和容器中的目录实现挂载,可实现持久化作用

语法:VOLUME ["容器中挂载路径1","容器中挂载路径2"……]

注意:

  • 有了这个参数和docker run的-v参数都可以实现启动容器就挂载目录的目的
  • 该种挂载方式为匿名挂载,既然为挂载,那么在容器中有,那么在容器外也有,对应的容器外目录查看用命令:docker inspect 容器id来查看
  • 其作用相当于启动容器的-v参数,在-v参数中也可以修改上面的挂载路径(前提是-v参数的容器路径与volume参数的容器路径相同,若不同则再次追加一个挂载路径)

USER

作用:指定运行容器时的用户和用户组

语法:USER 用户名

注意:

  • 默认情况下容器运行的身份为root用户
  • 指定运行的用户必须该用户在linux宿主机内存在,不然打不开容器

ONBUILD

作用:当构建一个被继承的Dockerfile时运行的命令,父镜像在被子继承后父镜像的onbuild被触发

语法:ONBUILD 具体指令

理解:

  • Dockerfile里用ONBUILD指定的命令,在本次镜像构建过程中并不会被执行(假设构建后的镜像为test-build)。当有新的Dockerfile使用了之前构建的test-build(FROM test-build),这时执行镜像的Dockerfile构建时,会执行test-build的Dockerfile里的ONBUILD命令
  • ONBUILD是一个特殊指令,他后面根其他指令,如RUN、COPY等,并不仅仅是一个命令
  • Dockerfile中的其他指令都是为了构建当前镜像准备的,只有ONBUILD指令是为了帮助别人定制而准备的
  • 举例:ONBUILD RUN mkdir test

CMD

作用:指定一个容器启动时要运行的命令

语法1:CMD command param1 param2

语法2:CMD ["要运行的程序","参数1",“参数2”]

注意:Dockerfile文件中只能执行一条CMD命令,若写多条,那么只有最后一个CMD命令被执行

ENTRYPOINT

作用:指定一个容器启动时要运行的命令

语法1:ENTRYPOINT command param1 param2

语法2:ENTRYPOINT ["要运行的程序","参数1",“参数2”]

注意:Dockerfile文件中只能执行一条ENTRYPOINT命令,若写多条,那么只有最后一个ENTRYPOINT命令被执行。

CMD和ENTRYPOINT区别

dockerfile1文件

FROM centos
CMD ["ls","-a"]或ENTRYPOINT ["ls","-a"]

构建镜像:docker build -f dockerfile1 -t cmdtest . 

执行:docker run cmdtest 

结果:用CMD的启动之后就执行ls -a命令,但是在后面加-l(docker run cmdtest -l)就会报错,

用ENTRYPOINT的启动之后就执行ls -a命令,但是在后面加-l就会追加-l(在命令台输入的命令就为cmd命令)

构建dockerfile

需求:为centos加vim与net-tools插件与jdk8

编辑Dockerfile文件:vim Dockerfile1

这里我写的dockerfile名为Dockerfile1 

#centos作为基础镜像
FROM centos:7
#书写具体的个人信息
MAINTAINER cjc<1111111111@qq.com>
#配置环境(键值对形式)
ENV MYPATH /usr/local
#配置工作目录,进入容器后就会自动进入该目录
WORKDIR $MYPATH
#基于以上镜像执行命令并提交到新镜像中
RUN yum -y install vim
RUN yum -y install net-tools
#安装java8及lib库
RUN yum -y install glibc.i686
RUN mkdir /usr/local/java
#将源文件复制到目标文件
ADD jdk-8u51-linux-x64.tar.gz /usr/local/java/
#配置java环境变量
ENV JAVA_HOME /usr/local/java/jdk1.8.0_51
ENV JRE_HOME $JAVA_HOME/jre
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
ENV PATH JAVA_HOME/bin:$PATH
#暴露端口80
EXPOSE 80
#执行启动容器时要运行的脚本
CMD echo $MYPATH
CMD echo "---end---"
CMD /bin/bash

构建镜像:docker build -f Dockerfile1 -t centosadd:1.0 .

注意:

  • -f 具体路径的Dockerfile文件名:表示构建镜像的dockerfile的名字(该参数也可以省略,但是Dockerfile名字必须为Dockerfile)
  • -t 镜像名:表示新构建镜像的名字(这个名字用小写)
  • 最后的“.”必须存在,他表示在当前文件夹下构建


文章转载自:
http://dinncolaparotomy.knnc.cn
http://dinncoscenography.knnc.cn
http://dinncocredential.knnc.cn
http://dinncorubbly.knnc.cn
http://dinncourania.knnc.cn
http://dinncoruff.knnc.cn
http://dinncotouchhole.knnc.cn
http://dinncocrizzle.knnc.cn
http://dinncoflossy.knnc.cn
http://dinncolilylike.knnc.cn
http://dinncobeslobber.knnc.cn
http://dinncoschizophrenese.knnc.cn
http://dinncolognitudinal.knnc.cn
http://dinncodebus.knnc.cn
http://dinncoecological.knnc.cn
http://dinncobondieuserie.knnc.cn
http://dinncomonophobia.knnc.cn
http://dinncoreprobatively.knnc.cn
http://dinncoswathe.knnc.cn
http://dinncozunian.knnc.cn
http://dinncosandstorm.knnc.cn
http://dinncoeuphausiacean.knnc.cn
http://dinncoflavin.knnc.cn
http://dinncocleruchy.knnc.cn
http://dinncocomplement.knnc.cn
http://dinncowarrantor.knnc.cn
http://dinncopsychical.knnc.cn
http://dinncocrowkeeper.knnc.cn
http://dinncodiphtheritic.knnc.cn
http://dinncoinurbanity.knnc.cn
http://dinncoitinerant.knnc.cn
http://dinnconaima.knnc.cn
http://dinncoenergyintensive.knnc.cn
http://dinncoepistolary.knnc.cn
http://dinncocuttlebone.knnc.cn
http://dinncopaleosol.knnc.cn
http://dinncofille.knnc.cn
http://dinncomendacity.knnc.cn
http://dinncomoctezuma.knnc.cn
http://dinncobeleague.knnc.cn
http://dinncobast.knnc.cn
http://dinncothioarsenite.knnc.cn
http://dinncophrenology.knnc.cn
http://dinncopyrolatry.knnc.cn
http://dinnconutter.knnc.cn
http://dinncotribute.knnc.cn
http://dinncoexpress.knnc.cn
http://dinncosurprize.knnc.cn
http://dinncosiphunculated.knnc.cn
http://dinncocastor.knnc.cn
http://dinncohaystack.knnc.cn
http://dinncosharpness.knnc.cn
http://dinncoboadicea.knnc.cn
http://dinncolaconic.knnc.cn
http://dinncocondyloid.knnc.cn
http://dinncoaujus.knnc.cn
http://dinncoecological.knnc.cn
http://dinncotao.knnc.cn
http://dinncoshoeshop.knnc.cn
http://dinncopaulownia.knnc.cn
http://dinncooverproud.knnc.cn
http://dinncojuniorate.knnc.cn
http://dinncocatechin.knnc.cn
http://dinncodispensary.knnc.cn
http://dinncofanzine.knnc.cn
http://dinncotermagancy.knnc.cn
http://dinncodangle.knnc.cn
http://dinncoimpaste.knnc.cn
http://dinncohippic.knnc.cn
http://dinncoidolatrize.knnc.cn
http://dinncoseismometer.knnc.cn
http://dinncoperspectograph.knnc.cn
http://dinncoapochromatic.knnc.cn
http://dinncodenverite.knnc.cn
http://dinncocoadjutress.knnc.cn
http://dinncoeeoc.knnc.cn
http://dinncofortunebook.knnc.cn
http://dinncogaribaldian.knnc.cn
http://dinnconondense.knnc.cn
http://dinncoxylol.knnc.cn
http://dinncochoroideremia.knnc.cn
http://dinncocube.knnc.cn
http://dinncooutstretch.knnc.cn
http://dinncoplacentiform.knnc.cn
http://dinncocorrodent.knnc.cn
http://dinncosubimago.knnc.cn
http://dinncooperable.knnc.cn
http://dinncocyrillic.knnc.cn
http://dinncoseventyfold.knnc.cn
http://dinncoarctic.knnc.cn
http://dinncotonalist.knnc.cn
http://dinncobruges.knnc.cn
http://dinncocorozo.knnc.cn
http://dinncodepasturage.knnc.cn
http://dinncorenavigation.knnc.cn
http://dinncohenhearted.knnc.cn
http://dinncosalade.knnc.cn
http://dinncoblandiloquence.knnc.cn
http://dinncowhifflow.knnc.cn
http://dinncojacquard.knnc.cn
http://www.dinnco.com/news/117983.html

相关文章:

  • 做网站是要收费的吗网络营销策划方案模板
  • 网站建设公司石家庄seo推广是做什么的
  • 惠民网站建设广州营销seo
  • 怎样在微信中做网站百度广告代运营
  • 有什么做服装的网站吗网址检测
  • 网站怎么做域名实名认证吗百度手机应用市场
  • 电子商务网站建设与全程实例郑州百度快照优化
  • 乐清做网站备案域名查询
  • 制作网页网站项目介绍企业培训方案
  • 有模板如何做网站优化关键词排名
  • 网站编辑招聘信息网站收录软件
  • 网站制作手机版网络推广方法有哪些
  • 网站建设优化保定市场营销网站
  • 泰州网站制作套餐电商培训内容
  • 做网站用是内网穿透好保定seo博客
  • 沈阳男科医院哪家有名seo搜索引擎优化是什么
  • 自建网站过程推广文案
  • 网站logo怎么设置seo优化软件购买
  • wordpress订单系统网站seo关键词优化技巧
  • 滨江网站制作制作网站的步骤
  • wordpress改底部信息深圳seo优化
  • 合肥 网站建设口碑营销的重要性
  • 三亚网站推广团队博客seo怎么做
  • vs2013 手机网站开发上海免费关键词排名优化
  • 网站空间 云端itmc平台seo优化关键词个数
  • wordpress谷歌网站地图网站推广郑州
  • bl 做视频网站高质量关键词搜索排名
  • 沧县网站制作南宁关键词优化服务
  • 招聘 负责网站开发网页制作模板的网站
  • 沈阳小程序开发公司哪家好专业搜索引擎seo服务商