Docker学习三:Dockerfile

摘自B站UP主狂神的学习笔记,欢迎大家去看原视频学习:BV1og4y1q7M4

DockerFIle

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

构建步骤:

  1. 编写一个dockerfile文件
  2. docker build 构建一个镜像
  3. docker run运行镜像
  4. docker push 发布镜像

image-20200524184455841

很多官方的镜像都是基础包,很多功能都没有。通常会自己搭建镜像

DockerFile的脚本构建

基础知识:

1、每个保留字都必须是大写字母

1、每个保留字都是大写

2、执行从上到下顺序执行

3、# 表示注释

4、每一个指令都会创建提交一个新的镜像层,并提交

image-20200524184921514

dockerfile是面向开发的,以后要发布项目,做镜像,就需要编写dockerfile文件。

Docker镜像逐渐成为企业交付的标准

名称 作用
DockerFile 构建文件,定义了一切的步骤
DockerImages 通过DockerFile构建生成的镜像,最终发布和运行的产品
Docker容器 容器就是镜像运行起来提供服务器

DockerFile指令

image-20200524185946876

FROM # 基础镜像,一切从这里开始构建 
MAINTAINER   # 镜像是谁写的 姓名+邮箱
RUN   # 镜像构建的时候需要运行的命令
ADD   # 步骤:tomcat镜像,这个tomcat的压缩包,就是要添加的内容
WORKDIR     # 镜像的工作目录
VOLUME    # 容器的挂载目录
EXPOSE    # 指定对外的端口配置
CMD       # 指定这个容器启动的时候要运行的命令。只有最后一个会生效,可被替代
ENTRYPOINT #  指定这个容器启动的时候要运行的命令。可以追加命令
ONBUILD    # 当构建一个被继承 DockerFile这个时候就会运行ONBUILD指令。触发指令
COPY       # 类似ADD,将我们文件拷贝到镜像中
ENV       # 构建的时候设置环境变量

配置实战

先从FROM scratch开始

编写一个自己的centos

root@dennis-1:/home/dockerfile# vim mydockerfile-centos
root@dennis-1:/home/dockerfile# cat mydockerfile-centos 
FROM centosr
MAINTAINER dennis<[email protected]>

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

# 通过这个文件构建镜像
docker build -f mydockerfile-centos -t mycentos:0.1 .
# build --构建镜像
# -f 指定构建的文件名
# -t 指定生成的镜像名
# 最后有一个点 .

我们还可以通过docker history [容器ID]来查看一个容器的构建历史:image-20200524192539074

CMD 和 ENTRYPOINT的区别

  • 测试cmd

image-20200524192804594

如果想要追加一个命令 -l --> ls -al

cmd的情况下会报错。

  • 测试ENTRYPOINT

image-20200524193502674

这一次在构建完毕后,在末尾执行了一个-l,被加到了前面,形成了“ls -la”

编写一个Tomcat

  1. 准备镜像文件,tomcat和jdk的tar.gz压缩包

  2. 编写dockerfile文件名,官方命名 Dockerfile,build会自动寻找这个文件,就不需要-f指定

FROM centos
MAINTAINER dennis<[email protected]>

# 添加的tar会自动解压到指定的目录下
ADD jdk-linux-x64.tar.gz /usr/local/
ADD apache-tomcat-9.0.35.tar.gz /usr/local/

RUN yum -y install vim

ENV MYPATH /usr/local
WORKDIR $MYPATH

ENV JAVA_HOME /usr/local/jdk1.8.0_131
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.35
ENV CATALINA_BASE /usr/local/apache-tomcat-9.0.35
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin

EXPOSE 8080

CMD /usr/local/apache-tomcat-9.0.35/bin/startup.sh && tail -F /url/local/apache-tomcat-9.0.35/catalina.out
  1. 构建自己的镜像

  2. 启动镜像

  3. 访问测试

  4. 发布项目

发布镜像

  1. 登录镜像网址

     docker login [opetions] [server]
    # -p --password
    # -u --username
    
  2. 登录完成过后,发布镜像

docker push dennis/diytomcat:1.0

image-20200524201501897

直接上传镜像一般会被拒绝,需要加上作者信息,版本信息 – 通过docker tag添加

# 自己发布的镜像,尽量要带版本号
docker tag 187a2cd663cf dennis/diytomcat:1.0

发布到阿里云镜像服务上

– 没有买,暂时空着

小结

Docker的执行流程:

image-20200524202937874

猜你喜欢

转载自blog.csdn.net/qq_41989109/article/details/106320573
今日推荐