Docker Dockerfile
无聊的我又来造轮子了
什么是 Dockerfile?
Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说使用
Dockerfile 定制镜像
这里仅讲解如何运行 Dockerfile 文件来定制一个镜像。
镜像的定制实际上就是定制每一层所添加的配置、文件。如果我们可以把每一层修改、安装、构建、操作的命令都写入一个脚本,用这个脚本来构建、定制镜像,那么之前提及的无法重复的问题、镜像构建透明性的问题、体积的问题就都会解决。这个脚本就是 Dockerfile。为啥我感觉有点shell脚本的意思。
Dockerfile 是一个文本文件,其内包含了一条条的 指令(Instruction),每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建。
好家伙这不就是,精心编制的shell脚本嘛
用nginx镜像为例,这次我们使用dockerfile来定制
首先在空白目录中,建立一个文本文件,并命名为dockerfile:
mkdir mynginx
cd mynginx
touch dockerfile
FROM 指定基础镜像
FROM nginx
RUN echo '
Hello, Docker!
' > /usr/share/nginx/html/index.htmlrun执行命令
shell 格式:RUN <命令>
,就像直接在命令行中输入的命令一样。刚才写的 Dockerfile 中的 RUN
指令就是这种格式。
exec 格式:RUN ["可执行文件", "参数1", "参数2"]
,这更像是函数调用中的格式。
FROM debian:stretch
RUN apt-get update
RUN apt-get install -y gcc libc6-dev make wget
RUN wget -O redis.tar.gz "http://download.redis.io/releases/redis-5.0.3.tar.gz"
RUN mkdir -p /usr/src/redis
RUN tar -xzf redis.tar.gz -C /usr/src/redis --strip-components=1
RUN make -C /usr/src/redis
RUN make -C /usr/src/redis install
大概流程
参考文章
https://yeasy.gitbook.io/docker_practice/image/build
https://www.runoob.com/docker/docker-dockerfile.html
https://docs.docker.com/engine/reference/builder/#usage
进阶
https://docs.docker.com/develop/develop-images/dockerfile_best-practices/