Dockerfile 是一个文本文件, 其内包含了一条条的 指令(Instruction), 每一条指令构建一层, 因此每一条指令的内容, 就是描述该层应当如何构建。
项目1:
在一个空白目录中, 建立一个文本文件, 并命名为 Dockerfile
mkdir mynginx
cd mynginx
touch Dockerfile
其内容为:
FROM nginx
RUN echo '<h1>hello nginx</h1>' /usr/share/nginx/html/index.html
说明:
-
FROM 指定基础镜像
所谓定制镜像, 那一定是以一个镜像为基础, 在其上进行定制。 就像我们之前运行了一个 nginx 镜像的容器, 再进行修改一样, 基础镜像是必须指定的。 而FROM 就是指定 基础镜像, 因此一个 Dockerfile 中 FROM 是必备的指令,并且必须是第一条指令。 -
RUN 执行命令
RUN 指令是用来执行命令行命令的。 由于命令行的强大能力, RUN 指令在定制镜像时是最常用的指令之一。常用的两种用法如下:
shell 格式: RUN <命令> , 就像直接在命令行中输入的命令一样。 刚才写的Dockerfile 中的 RUN 指令就是这种格式。RUN echo '<h1>Hello, Docker!</h1>' > /usr/share/nginx/html/index .html
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/redi s-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
FROM debian:stretch RUN buildDeps='gcc libc6-dev make wget' \ && apt-get update \ && apt-get install -y $buildDeps \ && wget -O redis.tar.gz "http://download.redis.io/releases/r edis-5.0.3.tar.gz" \ && mkdir -p /usr/src/redis \ && tar -xzf redis.tar.gz -C /usr/src/redis --strip-component s=1 \ && make -C /usr/src/redis \ && make -C /usr/src/redis install \ && rm -rf /var/lib/apt/lists/* \ && rm redis.tar.gz \ && rm -r /usr/src/redis \ && apt-get purge -y --auto-remove $buildDeps
构建镜像
docker build -t nginx:v3 .