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
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/ 中发布即可
因篇幅问题不能全部显示,请点此查看更多更全内容