五、 Dockerfile 文件制作镜像

编写的Dockerfile文件越少越好,要用尽量少的命令完成

docker build -t bushttpd:v0.1-1 ./     把当前文件编译成镜像bushttpd:v0.1-1

FROM 指令是最重要的一个且必须为Dockerfile文件开篇的第一个非注释行,用于为映像文件构建过程指定基准镜像,后续的指令运行的指令运行于此基准镜像所提供的运行环境

ENV 用于为镜像定义所需的环境变量,并可被Dockerfile文件中位于其他(如ENV、ADD、COPY等)所调用,支持设置默认参数${var:-word}

MAINANIER 用于让Dockerfile制作者提供本人的详细信息

LABEL 为镜像提供一些元数据,以<key>=<value>形式配置

COPY 用于从Docker主机复制文件至创建的新映像文件,如果源文件是目录,目录本身不会被复制,只会复制目录里面的文件

ADD 指令类似于COPY指令,ADD支持使用TAR文件和URL路径

WORKDIR 用于为Dockerfile中所有的RUN/CMD/ENTRYPOINT/COPY和ADD指定设定工作目录,设定镜像中当前目录./

VOLUME 用于在image中创建一个挂载点目录,以挂载Docker host 上的卷或其它容器上的卷,如果挂载点有文件存在,会将文件复制到新挂载点中。

EXPOSE 用于为容器打开指定要监听的端口以实现与外部通信,运行容器时需要加 -P参数才能生效,如果需要指定开放映射端口还需要使用-p

RUN  构建镜像时要执行的命令,在build过程中执行

CMD 镜像文件起动为容器时,默认要运行的程序, 只能运行一个

ENTRYPOINT   类似CMD指令的功能,用于为容器指定默认运行程序,从而使得容器像是一个单独的可执行程序,与CMD不同的是,由ENTRYPOINT 启动的程序不会被docker run命令行指定的参数所覆盖,而且,这些命令行参数会被作参数传递给ENTRYPOINT指定的程序

docker run 命令传入的命令参数会覆盖CMD指令的内容并且附加到ENTRYPOINT命令最后做为其参数使用

USER 用于指定运行image时的或运行Dockerfile中运行任何RUN、CMD、或ENTRYPOINT指令指定程序时的用户名或UID

1、实例一

FROM busybox:latest
LABEL maintainer="ceingling"
ENV DOC_ROOT=/data/html/ \
    WEB_SERVER_PACKAGE="nginx-1.15.2"
VOLUME /data/html/
WORKDIR /usr/local/
#ADD http://nginx.org/download/nginx-1.15.2.tar.gz    ./src/
COPY  ${WEB_SERVER_PACKAGE}.tar.gz ./src/

COPY index.html ${DOC_ROOT:-/data/html/}
EXPOSE 80/tcp

RUN cd ./src/ && tar xf ${WEB_SERVER_PACKAGE}.tar.gz

2、实例二

FROM nginx:1.15-alpine
LABEL maintainer="ceiling"

ENV NGX_DOC_ROOT='/data/html/'

ADD index.html ${NGX_DOC_ROOT}
ADD entrypoint.sh /bin/
RUN chmod +x /bin/entrypoint.sh

CMD ["/usr/sbin/nginx","-g","daemon off;"]

ENTRYPOINT ["/bin/entrypoint.sh"]

entrypoint.sh 脚本

#!/bin/sh

cat> /etc/nginx/conf.d/www.conf << EOF
server {
server_name ${HOSTNAME};
listen ${IP:-0.0.0.0}:${PORT:-80};
root ${NGX_DOC_ROOT:-/usr/share/nginx/html};
}
EOF

exec "$@"

#执行docker run

docker run --name myweb2 --rm -e "PORT=8080" -P myweb:v0.1-2  #-e 传递参数给容器

3、实例三 tomcat安装

FROM centos:7
WORKDIR /usr/local/
COPY apache-tomcat-8.5.35.tar.gz ./src/
COPY jdk-8u191-linux-x64.tar.gz ./src/
ADD entrypoint.sh /entrypoint.sh
RUN cd ./src && tar xf apache-tomcat-8.5.35.tar.gz
RUN cd ./src && tar xf jdk-8u191-linux-x64.tar.gz
RUN cd ./src/apache-tomcat-8.5.35/webapps/ROOT && rm -rf ./*
ENTRYPOINT /entrypoint.sh

entrypoint.sh 脚本

#!/bin/bash
export JAVA_HOME=/usr/local/src/jdk1.8.0_191/
export CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/jar/tools.jar:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
sh /usr/local/src/apache-tomcat-8.5.35/bin/catalina.sh run

编译镜像:

docker build . -t ceilnglinux/tomcat_test:v1

启动容器:

docker run -d -p8080:8080 -v /data/tomcat/:/usr/local/src/apache-tomcat-8.5.35/webapps/ROOT ceilnglinux /tomcat_test:v1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值