docker第五期 DockerFile讲解

DockerFile

DockerFile 介绍

Dockerfile是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。

DockerFile 构建过程

docker第五期 DockerFile讲解

DockerFile的指令

FROM: 指定基础镜像,Dockerfile第一个命令

FROM:定制的镜像都是基于FROM的镜像。比如下图的php就是定制需要的基础镜像,后续操作都是基于php。	
FROM php

格式:
	FROM <image>
	FROM <image>:<tag>
	FROM <image>@<digest>

ps: tag或digest是可选的,tag不选默认为latest 最新版本

MAINTAINER:维护者/创作者

格式:
MAINTAINER <名字>

RUN: 构建镜像时执行的命令

RUN: 用于执行后面跟着的命令行命令。有两种格式:

shell 格式命令:
RUN ./test.php dev offline


其实就是在终端操作shell命令;
RUN command


拓展默认说明:
linux:/bin/sh -c
windows: cmd /s /c

exec格式:
RUN ["./test.php",“dev”,“offline”] // 等价于 RUN ./test.php dev offline


RUN [“可执行文件”, “参数1”, “参数2”]
说明:可将 ./test.php理解为可执行的文件,后面就是两个参数

注意:
多行命令不要写多个RUN,因为Dockerfile中每一个指令都会建一层。多少个RUN就构建多少层镜像,会造成镜像的臃肿、多层,不仅仅增加了部署的时间,还容易出错。例如下面

root@VM-8-11-ubuntu:/home/docker# cat Dockerfile 
FROM php:7.4

RUN apt-get update

RUN pecl install redis-5.1.1

RUN pecl install xdebug-2.8.1

RUN docker-php-ext-enable redis xdebug
root@VM-8-11-ubuntu:/home/docker# docker build -t myphp/php .
Sending build context to Docker daemon  2.048kB
Step 1/5 : FROM php:7.4

以上执行会创建额外4个镜像,可以简化为以下的格式

root@VM-8-11-ubuntu:/home/docker# cat Dockerfile 
FROM php:7.4

RUN apt-get update \
    && pecl install redis-5.1.1 \
    && pecl install xdebug-2.8.1 \ 
    && docker-php-ext-enable redis xdebug

如上,以&&符号连接命令,这样执行后,只会创建一层镜像。我们在查看执行步骤时可以看到

root@VM-8-11-ubuntu:/home/docker# docker build -t myphp/php .
Sending build context to Docker daemon  2.048kB
Step 1/2 : FROM php:7.4

build 构建镜像命令

在Dockerfile文件的存放目录下,执行构建动作:
注: 最后的点如果后面没有接路径,则表示的是当前目录下的Dockerfile文件

$ docker build -t myphp/php:v1 .   // v1 代表版本号

Successfully built cc4f99ce42bb
Successfully tagged myphp/php:v1
// 输出上面这个表示成功了。

ADD

将本地文件添加到容器中,tar类型文件会自动解压,可以访问网络资源,类似wget
格式:

格式:
    ADD <src>... <dest>
    ADD ["<src>",... "<dest>"] 用于支持包含空格的路径
示例:
    ADD home/index.php /home/www          # index.php 到 /home/www下
    ADD *.php /home/www        # ? 替代一个单字符,例如:"*.txt"
    ADD index.php relativeDir/     # 添加 "index.php" 到 `WORKDIR`/relativeDir/ 工作目录下

更多详细的命令可以查看文档链接: docker命令

上一篇:Docker从入门到精通(五)——Dockerfile


下一篇:2021全国职业院校技能大赛--基于Kubernetes 编排部署GPmall