[toc]
dockerfile自动构建docker镜像
1.dockerfile
1.1 dockerfile说明
dockerfile定义
- dockerfile类似ansible的剧本
dockerfile特点
-
1.更适合传输,文件体积小
-
2.实现更加定制化
dockerfile主要组成部分
-
基础镜像信息 FROM centos:6.9
-
制作镜像操作指令 RUN yum -y install httpd
-
容器启动时执行指令 CMD ["/bin/bash"]
1.2 dockerfile常用指令
指令 | 含义 |
---|---|
FROM | 指定基础镜像,基于哪个镜像 |
MAINTAINER | 构建者信息(不是必须,只是对构建的镜像做一个说明) |
RUN | 指定运行命令 |
ADD | 将宿主机文件拷贝到容器中,会自动解压;可以拷贝远程主机文件 |
COPY | 复制文件 |
WORKDIR | 指定工作目录 |
VOLUME | 设卷,挂载宿主 机目录 |
EXPOSE | 指定对外的端口 |
CMD | 容器启动后要运行的命令,容易被替换 |
ENV | 环境变量 |
ENTRYPOINT | 容器启动后执行的命令(无法被替换,启动容器的时候指定的命令,会被当成参数) |
1.2.1 dockerfile常用指令 FROM
用来指定基础镜像
# 指定基础镜像为centos7.8
FROM centos:7.8
.....
FROM中有一个特殊的镜像 scratch
表明这是一个空白镜像
FROM scratch
......
1.2.2 dockerfile常用指令 RUN
指定镜像中运行的命令
shell 格式:RUN <命令>
RUN echo 'Hello, Docker!' > /usr/share/nginx/html/index.html
exec 格式:RUN ["可执行文件", "参数1", "参数2"]
,不常用
⚠️RUN指令应该尽量写成一条,以减少镜像提及
# 每一个RUN都会生成一层镜像
RUN nginx -t
RUN nginx -s reload
# 应该写成一条
RUN nginx -t && nginx -s reload
1.2.3 dockerfile常用指令 ADD
将本机或远程文件拷贝到镜像中,如果是压缩文件则会自动解压
- exec 格式用法:
ADD ["<src>",... "<dest>"]
,特别适合路径中带有空格的情况。 - shell 格式用法:
ADD <src>... <dest>
# 拷贝远程地址中的文件到镜像中的/opt下
ADD http://www.baidu.com/baidu.tar.gz /opt
⚠️需要注意的是对于从远程 URL 获取资源的情况,由于 ADD 指令不支持认证,如果从远程获取资源需要认证,则只能使用RUN wget
或 RUN curl
替代了