Dockerfile 简介

1、介绍

创建docker 镜像有两种方法

1 是通过commit命令 形成一个新的镜像

2 就是通过dockerfile,通过build 构建最终的镜像文件。

在实际环境中,变量很多,不能说修改一次commit一次,很麻烦,此时我们就可以通过dockerfile来创建镜像,一次搞定。

dockerfile 文件:

从上到下执行,关键保留字都要大写。

每次运行一行都相当于创建了一个新的镜像,commit一次,之后在创建出一个容器,在容器内在执行下一条命令,直到命令全部运行完形成最终的镜像。

Dockerfile 简介_第1张图片

2、Dockerfile保留字简介

官网 dockerfile

2.1 FROM

from是指基础镜像,当前新镜像是基于哪一个镜像的,指定一个已存在的镜像作为模板。

2.2 MAINTAINER

是镜像维护者 指当前的镜像是由谁编写的 加上姓名和邮箱。

2.3 RUN

run是在docker built 时运行的,他有两种格式

1、 是 shell格式 比如 RUN apt-get -y install vim  (更常用)

2、是exec格式  RUN ['可执行文件',‘参数1’,‘参数2’]

比如 RUN['./text.php','dev','offline'] 就相当于 RUN ./text.php dev offline

2.4 EXPOSE

当前容器对外暴露出的端口,就比如我们的-p

2.5 WORKDIR

指定在我们的容器创建后,默认进入的工作目录,一个落脚点

2.6 USER(一般不用)

指定镜像以什么样的用户去执行,如果不指定,就是root 

2.7 ENV

用于在构建镜像的过程中 设置环境变量。

Dockerfile 简介_第2张图片

2.8 VOLUME

容器卷 即-v

2.9 ADD

ADD 是COPY+解压

2.10 COPY

COPY 没有解压功能

COPY是将宿主机的文件或目录 复制到我们镜像中

命令:

Dockerfile 简介_第3张图片

类似于 docker cp....

2.11 CMD

Dockerfile 简介_第4张图片

Dockerfile 简介_第5张图片

注意:

Dockerfile 可以有多个CMD命令,但是最终只会有最后一个生效,并且 CMD 命令会被docker run后边的参数所取代。

比如 tomcat  Dockerfilw 最后是 CMD ['catalina.sh',‘run’]

当我们启动一个tomcat容器时,会自动执行该命令 ,且如果访问8080端口,会访问成功。

但是如果我们写了 docker run -d tomcat /bin/bash 

则会用bin/bash 代替 原始的CMD 此时在访问 8080端口就会失败。

2.12 ENTRYPOINT

可以和CMD 一起使用,一般是变参的话才会只用CMD,此时CMD等于是在给ENTRYPOINT传参,而不是run时要使用的命令。

Dockerfile 简介_第6张图片

Dockerfile 简介_第7张图片

CMD也会被run后参数取代

2.13 Dockerfile小案例

通过Dockerfile 在ubuntu上添加一个vim功能 生成一个新的镜像。

Dockerfile 简介_第8张图片

Dockerfile 简介_第9张图片

使用docker built -t 镜像名 [:tag] .

记得最后有一个 空格加一个点

已生成

Dockerfile 简介_第10张图片

3、虚悬镜像 

仓库名和tag 都为None

Dockerfile 内容:

Dockerfile 简介_第11张图片

第一次有个错误:即 我写成了 FROM Ubuntu 仓库第一个字母大写了

创建

Dockerfile 简介_第12张图片

docker image ls -f dangling=True 查找本地所有的虚悬镜像

docker image prune 删除虚悬镜像

Dockerfile 简介_第13张图片

你可能感兴趣的:(docker,docker)