docker(5):Dockerfile

Dockerfile介绍

Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明,每条指令都会创建一个新的镜像层并对镜像进行提交。

Dockerfile 一般分为四部分:基础镜像信息、维护者信息、镜像操作指令和容器启动时执行指令,’#’ 为 Dockerfile 中的注释。

docker build命令用于从Dockerfile构建映像。可以在docker build命令中使用-f标志指向文件系统中任何位置的Dockerfile。

docker build -f /path/to/a/Dockerfile

Dockerfile常用指令

在这里插入图片描述

  1. FROM

指定基础镜像,必须为第一个命令

  1. MAINTAINER

镜像时谁写的,姓名+邮箱

  1. RUN

容器构建时需要运行的命令,即在docker build时运行。

有shell格式(如RUN yum -y install vim)和exec格式(RUN [“可执行文件”, “参数1”, “参数2”])两种。

  1. ADD

添加内容,将宿主机的目录文件拷贝到镜像,会自动处理URL和解压tar压缩包。

  1. WORKDIR

指定进入容器后的工作目录

  1. VOLUME

挂载目录

  1. EXPOSE

暴露端口

  1. CMD

指定容器启动的时候默认运行的命令,即CMD是在docker run 时运行。

Dockerfile 中可以有多个 CMD 指令,但只有最后一个生效。

CMD 会被 docker run 之后的参数替换(相当于指定了容器启动的时候运行的命令,不再使用CMD提供的命令了)。

  1. ENTRYPOINT

也是指定容器启动的时候运行的命令。可以追加命令。

ENTRYPOINT不会被docker run后面的命令覆盖,且docker run后面的命令行参数会被当作参数送给 ENTRYPOINT 指令指定的程序。

注意:当指定了ENTRYPOINT后,CMD的含义就发生了变化,不再是直接运行其命令而是将CMD的内容作为参数传递给ENTRYPOINT指令,他两个组合会变成<ENTRYPOINT> "<CMD>"

如下:

FROM nginx

ENTRYPOINT ["nginx", "-c"]
CMD ["/etc/nginx/nginx.conf"]

则实际运行命令会变成nginx -c /etc/nginx/nginx.conf

如果使用上面的dockerfile构建镜像,执行如下run命令时,

docker run  nginx:test -c /etc/nginx/new.conf

实际是运行命令会变成nginx -c /etc/nginx/new.conf

  1. COPY

类似ADD,将文件拷贝到镜像中,不会自动解压。

  1. ENV

构建时设置环境变量,后面的run命令可以直接引用

案例:构建tomcat镜像

示例:使用Dockerfile构建tomcat

编写Dockerfile

FROM centos
MAINTAINER cys<cys@163.com>

COPY readme.txt /usr/local/readme.txt
# jdk-8u11-linux-x64.tar.gz和apache-tomcat-9.0.22.tar.gz都在当前Dockerfile所在文件夹
ADD jdk-8u11-linux-x64.tar.gz /usr/local/
ADD apache-tomcat-9.0.22.tar.gz /usr/local/

# 安装vim
RUN yum -y install vim

ENV MYPATH /usr/local
WORKDIR $MYPATH

ENV JAVA_HOME /usr/local/jdk1.8.0_11
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.22
ENV CATALINA_BASH /usr/local/apache-tomcat-9.0.22
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:CATALINA_HOME/bin

EXPOSE 8080

# 启动容器后启动tomcat
CMD /usr/local/apache-tomcat-9.0.22/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.22/bin/logs/catalina.out

构建镜像

docker build -t diytomcat

然后运行镜像,启动容器

参考:https://www.cnblogs.com/panwenbin-logs/p/8007348.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ethan-running

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值