Dockerfile

1、是什么

Dockerfile是用来构建Docker镜像的构建文件,是由一系列命令和参数构成的脚本。

2、Dockerfile基础知识

  1. 每条保留字指令都必须为大写字母且后面跟至少一个参数
  2. 指令按照从上到下,顺序执行
  3. 每条指令都会创建一个新的镜像层,并对镜像层进行提交

3、docker执行Dockerfile的流程

  1. docker从基础镜像运行一个容器
  2. 执行一条指令并对容器作出修改
  3. 执行列斯docker commit的操作提交一个新的镜像层
  4. docker再基于刚 提交的镜像运行一个新容器
  5. 执行dockerfile中的下体条指令直到所有指令都执行完成

4、DockerFile体系结构(保留字指令)

1、FROM

基础镜像,当前新镜像是基于哪个镜像的,必须放在第一行。

scratch镜像是所有镜像的根镜像,类似与java的Object类,但是是一个空镜像。

2、MAINTAINER

镜像创建者的姓名和邮箱

3、RUN

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

4、EXPOSE

当前容器对外暴露的端口

5、WORKDIR

指定创建容器后,终端默认登录进来的工作目录

6、ENV

用来在构建镜像过程中设置环境变量,这些变量以”key=value”的形式存在,并可以在容器内被脚本或者程序调用

7、ADD

将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar压缩包,它有两个参数,源和目标,如果源是一个URL,那该URL的内容将被下载并复制到容器中

8、COPY

类似ADD,拷贝文件和目录,但没ADD强大

9、VOLUME

容器数据卷,用于数据保存和持久化工作

10、CMD

指定一个容器启动时要运行的命令

Dockerfile中可以有多个CMD指令,但只有最后一个生效,CMD会被docker run之后的参数替换掉

11、ENTRYPOINT

指定一个容器启动时要运行的命令,和CMD不同的是它不会被docker run之后的参数所覆盖

12、ONBUILD

当构建一个被继承的Docckerfile时运行命令,父镜像在被子镜像继承后父镜像的onbuild被触发

例子:构建一个tomcat

编写Dockerfile

FROM    centos
MAINTAINER  bw<bw@xxx.com>
#把宿主机当前上下文的c.txt拷贝到容器/usr/local下并重命名为cincointainer.txt
COPY c.txt /usr/local/cincointainer.txt
#把java与tomcat添加到容器中
ADD apache-tomcat-9.0.10.tar.gz /usr/local/
ADD jdk-8u181-linux-x64.tar.gz /usr/local/
#安装vim编辑器
RUN yum -y install vim 
ENV MYPATH /usr/local
#设置工作访问时候的WORKDIR路径
WORKDIR $MYPATH
#配置java与tomcat环境变量
ENV JAVA_HOME /usr/local/jdk1.8.0_181
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/libtools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.10
ENV CATALINA_BASE /usr/local/apache-tomcat-9.0.10
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
#设置数据卷
VOLUME /usr/local/data
#容器运行时监听并对外暴露的端口
EXPOSE 8080
#启动并运行tomcat 下面几种方式都可以
# ENIRYPOINT ["/usr/local/apache-tomcat-9.0.10/bin/startup.sh"]
# CMD ["/usr/local/apache-tomcat-9.0.10/bin/startup.sh","run"]
CMD /usr/local/apache-tomcat-9.0.10/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.10/logs/catalina.out

构建Dockerfile

//运行命令时就在Dockerfile所在目录可以这样,可以通过-f制定Dockerfile路径
[root@localhost tomcat9]# docker build -t bwtomcat .
[root@localhost tomcat9]# docker images
REPOSITORY      TAG             IMAGE ID          CREATED           VIRTUAL SIZE
bwtomcat       latest          2ce845153889     16 minutes ago        737.4 MB
//运行此镜像
docker run --name "tomcat" -it -p 8080:8080 -v /opt/data:/usr/local/data bwtomcat
//进入到容器中
[root@localhost ~]# docker exec -t b01c196de9e1 /bin/bash
//当前落脚的目录就是在Dockerfile中WORKDIR设置的目录
[root@bf9b80c997db local]#
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值