首页 > 其他 > 详细

dockerfile解析

时间:2020-07-02 10:00:50      阅读:63      评论:0      收藏:0      [点我收藏+]

dockerfile是用来构建docker镜像的构建文件,由一系列命令和参数构成

docker语法

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

docker执行dockerfile的流程

  • docker从基础镜像运行一个容器
  • 执行一条指令并对容器进行修改
  • 执行类似docker commit的操作提交一个新的镜像层
  • docker再基于刚提交的镜像运行一个新的容器
  • 执行dockerfile中的下一个指令直到所有指令都执行完成

dockerfile保留字指令

FROM:基础镜像,当前镜像是基于哪个镜像的

MAINTAINER:镜像维护者的姓名和邮箱地址

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

EXPOSE:容器对外暴露的端口

WORKDIR:指定在创建容器后,终端登录进来的工作目录

ENV:用来构建镜像过程中设置变量

ADD:将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar压缩包

COPY:拷贝文件和目录到镜像中

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

CMD:指定一个容器启动时要运行的命令,可以有多个CMD,但只有最后一个生效,CMD会被docker run之后的参数替换

ENTRYPOINT:指定一个容器启动时要运行的命令,docker run之后的参数会追加到ENTRYPOINT命令上

ONBUILD:当构建一个被继承的dockerfile时运行命令,父镜像在被继承后触发

举例

阿里云下载的centos镜像,工作目录为/,没有安装ifconfig

技术分享图片

?

在/docker目录下,准备jdk和tomcat源码包

创建一个a.txt文件,两个空目录

编写dockerfile文件

WORKDIR $MYPATH

?

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

RUN yum -y install net-tools

?

#ADD:将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar压缩包

ADD jdk-8u251-linux-x64.tar.gz /usr/local/

ADD apache-tomcat-7.0.104.tar.gz /usr/local/

?

#配置java与tomcat环境变量

ENV JAVA_HOME /usr/local/jdk1.8.0_251

ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

ENV CATALINA_HOME /usr/local/apache-tomcat-7.0.104

ENV CATALINA_BASE /usr/local/apache-tomcat-7.0.104

ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin

?

#COPY:拷贝文件和目录到镜像中

COPY a.txt /usr/local/cincontainer.txt

?

#EXPOSE 容器对外暴露的端口

EXPOSE 8080

?

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

CMD /usr/local/apache-tomcat-7.0.104/bin/startup.sh && tail -F /usr/local/apache-tomcat-7.0.104/bin/logs/catalina.out

?

技术分享图片

?

dockerfile如下:

根据dockerfile构建镜像

[root@localhost docker]# docker build -f /docker/dockerfile -t tomcat:myself .

技术分享图片

技术分享图片

[root@localhost docker]# docker images 查看已生成的镜像

技术分享图片

[root@localhost docker]# docker history 4a62900fa1ef 查看镜像历史

技术分享图片

运行镜像并查看

docker run -d -p 8888:8080 --name mytomcat

-v /docker/test/:/usr/local/apache-tomcat-7.0.104/webapps/test

-v /docker/tomcatlogs/:/usr/local/apache-tomcat-7.0.104/logs tomcat:myself

?

技术分享图片

?

验证:????

1、端口映射正确,服务可以访问

技术分享图片

2、登录进容器,工作目录为/usr/lcoal

技术分享图片

3、验证ifconfig

技术分享图片

4、ADD与copy添加的文件

技术分享图片

5、容器卷共享

在宿主机/docker/test下写入一个文件

[root@localhost docker]# echo "hello world" >test/hello.html

宿主机浏览器访问

技术分享图片

技术分享图片

log目录的共享验证

技术分享图片

dockerfile解析

原文:https://www.cnblogs.com/jeancheng/p/13222445.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!