DockerFile
dockerfile 是用来构建docker镜像的文件!命令参数脚本!
构建步骤:
1、编写一个 dockerfile文件
2、docker build 构建成为一个镜像
3、docker run 运行镜像
4、docker push 发布镜像(DockerHub,阿里云镜像仓库)
DockerFile构建过程
基础知识
- 每个保留关键字(指令)都是必须是大写字母
- 执行从上到下顺序执行
表示注释
- 每一个指令都会创建提交一个i虚拟的镜像层,并提交
dockerfile 是面向开发的,我们以后要发布项目,做镜像,就需要编写dockerfile 文件,这个文件十分简单
DockerFile:构建文件,定义了一切的步骤,源代码
DockerImages:通过 DockerFile 构建生成的镜像,最终发布和运行的产品,
Docker 容器:容器就是镜像运行起来提供服务的
DockerFile 的指令
以前是使用别人的,现在自己写一个镜像
FROM #基础镜像,一切从这里开始构建
MAINTAINER #镜像是谁写的,姓名+邮箱
RUN # 镜像构建的时候需要运行的命令
ADD #步骤:tomcat镜像,这个 tomcat压缩包 添加内容
WORKDIR #镜像的工作目录
VOLUME #挂载的目录
EXPOSE #指定暴露端口
CMD #指定这个容器启动的时候需要运行的命令 只有最后一个会生效,可被替代
ENTRYPOINT #指定这个容器启动的时候需要运行的命令
ONBUILD #当构建一个被继承 DockerFile 这个时间就会被运行 ONBUILD 的指令,触发指令
COPY #类似 ADD 将我们的文件拷贝到镜像中
ENV #构建的时候设置环境变量
实战测试
#1. 编写 dockerfile 的文件
[root@vdevops dockerfile]# vim mydockerfile
[root@vdevops dockerfile]# cat mydockerfile
FROM centos
MAINTAINER sssy 213131@qq.com
ENV MYPATH /usr/local
WORKDIR $MYPATH
RUN yum -y install vim
RUN yum -y install net-tools
EXPOSE 80
CMD echo $MYPATH
CMD echo "------end-----"
CMD /bin/bash
#2、 通过文件构建镜像
[root@vdevops dockerfile]# docker build -f mydockerfile -t mycentos:0.1 .
Successfully built 7a601c0d208e
Successfully tagged mycentos:0.1
#3、测试运行
对比:
增加之后的镜像
可以列出变更的历史
ENTRYPOINT 和 ONBUILD 区别
CMD #指定这个容器启动的时候需要运行的命令 只有最后一个会生效,可被替代
ENTRYPOINT #指定这个容器启动的时候需要运行的命令
测试cmd
# 编写 dockerfile 文件
[root@vdevops dockerfile]# vim dockerfile-cmd-test
FROM centos
CMD ["is","-a"]
#构建镜像
[root@vdevops dockerfile]# docker build -f dockerfile-cmd-test .
# run 运行 -a 命令生效
[root@vdevops dockerfile]# docker run 767eb92e284f
#项追加一个 命令
#cmd 的情况下 -l 替换了 CMD ["is","-a"] -l 不是命令 所以报错
测试ENTRYPOINT 我们追加的命令 是直接拼接在ENTRYPOINT 命令后面
实战: Tomcat 镜像
1、准备镜像文件 tomcat 压缩包 jdk的压缩包
2、编写dockerfile文件
FROM centos
MAINTAINER SYYY
COPY readme.txt /usr/local/readme.txt
ADD jdk-8u311-linux-x64.tar.gz /usr/lcoal/
ADD apache-tomcat-9.0.56.tar.gz /usr/lcoal/
RUN yum -y install vim
ENV MYPATH /usr/local
WORKDIR $MYPATH
ENV JAVA_HOME /usr/local/jdk1.8.0_311
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.56
ENV CATALINA_BASH /usr/local/apache-tomcat-9.0.56
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
EXPOSE 8080
CMD /usr/local/apache-tomcat-9.0.56/startup.sh && tail -F /url/local/apache-tomcat-9.0.56/bin/logs/catalina.out
3、构建镜像
# docker build -t diytomcat .
4、启动镜像
5、访问测试
6、发布项目
发布自己的镜像
1、地址
2、确定账户密码
3、在我们服务器上提交自己的镜像
4、登录之后就可以提交了, docker push