一、使用dockerfile构建镜像,并挂载数据卷

1、DockerFile就是用来构建docker镜像的脚本文件。

2、如何自己建造一个镜像?

(1)使用vim编写一个脚本,名称建议使用dockerfilexxx。

Dockerfile基本知识_Docker

 

 

 

(2)使用buil指令创建一个镜像

  指令:

    docker build -f /home/docker-test-home/dockerfile1 -t xiami/centos:1.0 .

  Dockerfile基本知识_docker_02

 

 

   创建镜像的过程,即按照脚本中的命令行逐步编译,即相当于镜像的分层过程。

 

(3)查看生成的镜像

 

Dockerfile基本知识_数据_03

 

 

 

 

 

 

 

  已经生成镜像。

3、使用自己制造的镜像运行容器

(1)

  Dockerfile基本知识_docker_04

 

 

   运行成功

  

  目录下有挂载的两个数据卷。

  Dockerfile基本知识_数据_05

 

 

  查看详细的挂载信息

Dockerfile基本知识_docker_06

 

 

 

(2)脚本中 ["volume01","volume02"] 的方式挂载而定数据卷是一种匿名挂载的方式。

 

3、通过上述方式可以发现,使用dockerfile的方式可以构建镜像,也可以通过dockerfile的方式挂载数据卷。

  如果构建镜像的时候没有挂载卷,需要手动挂载镜像,即 “ -v 卷名:容器内路径 ”  的方式

 

二、DockerFile详解

1、使用DockerFile构建镜像的步骤

(1)编写一个dockerfile文件

(2)docker build构建成为一个镜像

(3)docker run运行镜像

(4)docker push发布镜像(可发布到DockerHub、阿里云镜像仓库等)

2、很多官方的镜像都是基础包,很多功能都没有,所有需要自己使用DockerFile添加。

3、基础知识

(1)dockerfile的每个保留关键字(指令)都必须是大写

(2)执行是从上到下顺序执行

(3)#表示注释

(4)每一个指令都会创建一个新的镜像层,并提交。

  一个简单的实例:dockerfile的每一个指令都是在原基础上添加一层。

Dockerfile基本知识_centos_07

 

 

4、dockerfile是面向开发的,每次需要发布项目,做镜像,就需要编写dockerfile文件,docker镜像逐渐成为企业交付的标准,必须掌握。

5、镜像、容器、dockerfile之间的关系

  DockerFile:构建文件,定义了一切的步骤和源代码。

  DockerImages:通过DockerFile构建生成的镜像,即最终发布的产品。

  DockerContainer:容器就是镜像运行起来提供的服务。

6、DockerFIle的指令。参考文末。

 

 

 

*-*本篇的指令*-*

1、
  mkdir 文件夹名称 #创建一个文件夹

2、创建一个镜像
  docker build -f /home/docker-test-home/dockerfile1 -t xiami/centos:1.0 .
  
  -f:用于创建镜像的脚本所在目录
  -t:生成镜像的版本信息
  . :生成在当前目录

3、DockerFile的基本指令
(1)FROM #基础镜像。
(2)MAINTAINER #镜像的作者
(3)RUN #运行镜像
(4)ADD #添加依赖的文件,即copy文件,会自动解压
(5)WORKDIR #设置当前工作目录,镜像的工作目录
(6)VOLUME #挂载的目录
(7)EXPOSE #暴露端口,指定对外的端口
(8)CMD #指定容器启动的时候要运行的指令,只有最后一分会生效,可被替代。
(9)ENTRYPOINT #指定容器启动的时候要运行的指令,可以追加命令。
(10)ONBUILD #当构建一个被继承的DOckerFIle时,就会运行ONBUILD的指令。触发指令
(11)COPY #类似ADD,将文件拷贝到镜像中。
(12)ENV #构建的时候设置环境变量。