06 DockerFile

DockerFile

dockerfile 是用来构建docker镜像的文件!命令参数脚本!

构建步骤:

1、编写一个 dockerfile文件

2、docker build 构建成为一个镜像

3、docker run 运行镜像

4、docker push 发布镜像(DockerHub,阿里云镜像仓库)

DockerFile构建过程

基础知识

  1. 每个保留关键字(指令)都是必须是大写字母
  2. 执行从上到下顺序执行
  3. 表示注释

  4. 每一个指令都会创建提交一个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、地址 https://login.docker.com/

2、确定账户密码

3、在我们服务器上提交自己的镜像

4、登录之后就可以提交了, docker push

posted @   flypiggg  阅读(36)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示