Dockerfile如何编写

本文详细介绍了Dockerfile的用途和构建过程,包括编写规范、常用指令如FROM、MAINTAINER、RUN、EXPOSE等。通过一个实例展示了如何在CentOS基础上安装JDK和Tomcat,配置环境变量并启动服务,最后通过dockerbuild和dockerrun命令创建和运行镜像。
摘要由CSDN通过智能技术生成

Dockerfile的作用

它是用来将容器构建成一个镜像的构建文件,是一系列的命令和参数构成的脚本;

构建三步骤

  • 编写Dockerfile文件
  • docker build
  • docker run

编写Dockerfile规范

每条保留字必须为大写,且后面至少要有一个参数;

指令按照从上到下,顺序执行;

#表示注释

每条指令都会创建一个新的镜像层,并对镜像进行提交;

保留字指令

FROM

基础镜像,当前这个要编写的镜像是基于哪一个镜像

MAINTAINER

作者加作者邮箱

RUN

容器构建的时候需要运行的命令

EXPOSE

暴露出的端口号

WORKDIR

容器运行后,登陆进来的时候是哪一个目录,就是落脚点,默认是根目录

ENV

设置环境变量,设置好后可以在任何RUN指令中使用

ADD

拷贝加解压缩,把一个压缩包放进镜像中

COPY

类似ADD但不解压,写法:COPY src dest

VOLUME

建立容器数据卷

CMD

指定容器启动时要运行的命令,可以存在多个CMD,但只有最后一个生效

ENTRYPOINT

功能和CMD一样,但是使用ENTRYPOINT后,可以在docker frun追加命令

ONBUILD

父镜像如果写了ONBUILD,子镜像build的时候会执行ONBUILD

案例

  • 准备工作: 下载centos镜像,在宿主机/usr/local/test/下,准备jdk.rpm和tomcat.tar.gz
docker pull centos

在这里插入图片描述

  • 在/usr/local/test/下编写Dockerfile
# tomcat案例
FROM centos

# 作者信息
MAINTAINER linjiu<linjava@163.com>

# 将test目录下的jdk拷贝到新镜像的/usr/local下
COPY jdk-8u181-linux-x64.rpm /usr/local/

# 使用rpm命令安装jdk
RUN rpm -ivh /usr/local/jdk-8u181-linux-x64.rpm

# 添加tomcat包并自动解压
ADD apache-tomcat-8.5.33.tar.gz /usr/local/

# 部署登陆后的落脚点
ENV MYPATH /usr/local/
WORKDIR $MYPATH

# 配置JAVA和tomcat环境变量
ENV JAVA_HOME /usr/java/jdk1.8.0_181-amd64
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVAHOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-8.5.33
ENV CATALINA_BASE /usr/local/apache-tomcat-8.5.33
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin

# 容器运行时监听的端口
EXPOSE 9099

# 启动时运行tomcat
# ENTRYPOINT ["/usr/local/apache-tomcat-8.5.33/bin/startup.sh"]
# CMD ["/usr/local/apache-tomcat-8.5.33/bin/catalina.sh","run"]
CMD /usr/local/apache-tomcat-8.5.33/bin/startup.sh && tail -F usr/local/apache-tomcat-8.5.33/bin/logs/catalina.out

  • 根据Dockerfile创建镜像
docker build -f /usr/local/test/Dockerfile -t lp/tomcat:1.0 .
  • 启动该镜像的容器,配置对外端口,共享数据卷
docker run -d -p 9099:8080 --name mytomcat -v /usr/local/volume/:/usr/local/volume/ 880d75764ecc
  • 如果要重新进入交互页面查看日志等,可使用命令
docker exec -it 0900b104aee8 /bin/bash
  • 页面查看
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值