搜索
您的当前位置:首页正文

4、Dockerfile(进阶)

来源:筏尚旅游网

dockerfile是用来构建docker镜像的文件,里面写的是命令参数脚本。
构建步骤:

1、编写一个dockerfile文件
2、docker build 构建成为一个镜像
3、docker run 运行镜像
4、docker push 发布镜像到远程仓库(DockerHub、阿里云镜像仓库)

DockerFile构建过程
基础知识:

1、保留关键字(指令)都必须是大写字母
2、执行顺序为从上到下顺叙执行
3、#表示注释
4、每个指令都会创建提交一个新的镜像曾
dockerfile是面向开发的,我们项目交付时需要构建成镜像,提交交付。(全栈)
# DockerFile指令
FROM            #基础镜像
MAINTAINER      #镜像的作者
RUN             #镜像构建时需要运行的命令
ADD             #添加启动需要的依赖,如JDK、TOMCAT等,添加的是压缩包,构建时会自动解压
WORKDIR         #镜像的工作目录
VOLUME          #挂载卷目录
EXPOSE          #暴露端口
CMD             #指定这个容器启动时需要运行的命令
ENTRYPOINT      #指定这个容器启动时需要运行的命令,可追加
ONBUILD         #当构建一个被继承的DockerFile,就会运行ONBUILD命令,触发指令。如volums-from
COPY            #将我们的文件拷贝到镜像中

实战测试,创建一个自己的centos

FROM centos
MAINTAINER dongzy<*********@qq.com>
ENV MYPATH /usr/local
WORKDIR $MYPATH
RUN yum -y install vim
RUN yum -y install net-tools
EXPOSE 88
CMD echo $MYPATH
CMD echo "---success---"
CMD /bin/bash

构建

docker build -f dockerfile02 -t dongzy/mycentos:1.0 . #构建镜像
docker images                           #查看镜像
docker run -it dongzy/mycentos:1.0      #运行
docker history dongzy/mycentos:1.0      #查看构建历史

CMD与ENTRYPOINT的区别
编写dockerfile

FROM centos
CMD ["ls -a"]

生成镜像,并运行容器

docker build -f dockerfile03 -t dongzy/cmd-commandtest .    #构建镜像
docker run dongzy/cmd-commandtest                           #运行容器,输出了当前全部的目录
docker run dongzy/cmd-commandtest -l                        #不会追加执行 ls -al

编写entrypoint,dockerfile

FROM centos
ENTRYPOINT ["ls -a"]

构建镜像,并运行容器

docker build -f dockerfile03 -t dongzy/entrypoint-commandtest .    #构建镜像
docker run dongzy/entrypoint-commandtest                           #运行容器,输出了当前全部的目录
docker run dongzy/entrypoint-commandtest -l                        #会追加执行 ls -al

实战测试,构建自己的tomcat

  1. 准备镜像文件,tomcat、jdk的压缩包
  2. 编写Dockerfile文件,官方命名Dockerfile,构建时不需要再指定
FROM centos                                 #基层镜像
MAINTAINER dongzy<*********@qq.com>         #作者
COPY readme.txt /usr/local/readme.txt       #拷贝readme到镜像中
ADD jdk-8ull-linux-x64.tar.gz /usr/local/   #添加tomcat依赖包
ADD apache-tomcat-9.0.22.tar.gz /usr/local/ #添加jdk依赖包
RUN yum -y install vim                      #构建时安装vim
RUN yum -y install net-tools                #构建时安装net tools
ENV MYPATH /usr/local                       #配置环境变量
WORKDIR $MYPATH                             #配置工作目录

ENV JAVA_HOME /usr/local/jdk1.8.0_11        #配置Java home
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar#配置class path

ENV CATALINA_HOME /usr/local/appache-tomcat-9.0.22  #配置Catalina home
ENV CATALINA_BASE /usr/local/apache-tomcat-9.0.22
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin:$CATALINA_HOME/lib
EXPOSE 8080                                 #暴露端口
CMD /usr/local/apache-tomcat-9.0.22/bin/startup.sh && tail -F /usr/localapache-tomcat-9.0.22/bin/logs/catalina.out    #容器启动时执行的命令

构建镜像

docker build -t dongzy/tomcat .
docker run -d -p 8080:8080 --name dongzy-tomcat -v /home/dongzy/build/tomcat/:/usr/local/apache-tomcat-9.0.22/webapps -v /home/dongzy/build/tomcat/logs/:/usr/local/apache-tomcat-9.0.22/logs dongzy/tomcat    #注意这里的--name 参数需要卸载-p等参数的后面,否的启动会失败

发布项目

因为已经做了卷挂载,只需要在本地文件/home/ongzy/build/tomcat/ 中发布即可

因篇幅问题不能全部显示,请点此查看更多更全内容

Top