0%

使用dockerfile创建镜像

Dockerfile

Dockerfile分为四个部分: 基础镜像信息、维护者信息、镜像操作指令和容器启动指令。
即FROM、MAINTAINER、RUN、CMD四个部分

指令说明

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
FROM         指定所创建镜像的基础镜像
MAINTAINER 制定维护者信息
RUN 运行命令
CMD 容器启动是默认执行的命令
LABEL 指定生成镜像的元数据标签信息
EXPOSE 声明镜像内服务所监听的端口
ENV 指定环境变量
ADD 复制指定src路径的内容到容器的dest路径下,如果src为tar文件,则自动解压到dest路径下
copy 复制指定src路径的内容到镜像的dest路径下
ENTERPOINT 指定镜像的默认入口
VOLUME 创建数据卷挂载点
USER 指定运行容器是的用户名或UID
WORKDIR 配置工作目录
ARG 指定镜像内使用的参数
ONBUILD 配置当所创建的镜像作为其他镜像的基础镜像时,所执行创建操作指令
STOPSIGAL 容器退出信号值
HEALTHCHECK 如何进行健康检查
SHELL 指定使用shell的默认shell类型

nginx-dockerfile示例

vim Dockerfile

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
FROM centos:7.2.1511

ENV TZ=Asia/Shanghai

RUN yum -y install epel* \
yum -y install gcc openssl openssl-devel pcre-devel zlib-devel

ADD nginx-1.14.0.tar.gz /opt/

WORKDIR /opt/nginx-1.14.0

RUN ./configure --prefix=/opt/nginx --http-log-path=/opt/nginx/logs/access.log --error-log-path=/opt/nginx/logs/error.log --http-client-body-temp-path=/opt/nginx/client/ --http-proxy-temp-path=/opt/nginx/proxy/ --with-http_stub_status_module --with-file-aio --with-http_flv_module --with-http_gzip_static_module --with-stream --with-threads --user=www --group=www
RUN make && make install
RUN groupadd www && useradd -g www www
WORKDIR /opt/nginx
RUN rm -rf /opt/nginx-1.14.0

ENV NGINX_HOME=/opt/nginx
ENV PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/nginx/sbin

EXPOSE 80 443

CMD ["nginx", "-g", "daemon off;"]

需要先下载nginx-1.14.0.tar.gz在Dockerfile同级目录下,然后执行如下命令
docker build -t nginx_image ./Dockerfile


tomcat-dockerfile示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
FROM centos:7.4.1708

ADD jdk-8u171-linux-x64.tar.gz /usr/local/
ADD apache-tomcat-7.0.88.tar.gz /usr/local/

WORKDIR /usr/local/

RUN mv jdk1.8.0_171 jdk && mv apache-tomcat-7.0.88 tomcat

ENV JAVA_HOME=/usr/local/jdk
ENV CLASS_PATH=$JAVA_HOME/lib:$JAVA_HOME/jre/lib
ENV PATH=$JAVA_HOME/bin:$PATH
ENV CATALINA_HOME /usr/local/tomcat

EXPOSE 8080

CMD /usr/local/tomcat/bin/catalina.sh run

需要先下载jdk和tomcat在dockerfile的同级目录下,然后执行如下命令
docker build -t tomcat_image ./Dockerfile,

使用.dockerignore文件

可以通过.dockerigore文件(每一行添加一条匹配模式)来让Docker忽略匹配模式路径的目录和文件。例如

1
2
3
4
5
# commit
*/tmep*
*/*/tmp*
tmp?
~*