• Dockerfile


    DockerFile

    DockerFile介绍

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

    构建步骤

    1. 编写一个dockerfile文件
    2. docker build 构建成为一个镜像
    3. docker run 运行镜像
    4. docker push 发布镜像(DockerHub, 阿里云镜像)

    查看官方是怎么做
    dockerfile官方手册
    dockerfile官方手册2

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

    DockerFile构建过程

    DockerFile基础知识

    1. 每个保留关键字(指令)都是必须是大写字母
    2. 指令是从上到下顺序执行的
    3. # 比哦啊哈斯注释
    4. 每个指令都会创建提交一个新的镜像层,并提交

    dockerfile镜像层

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

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

    DockerFile指令

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

    dockerfile指令

    实战测试

    Docker Hub 中99%镜像都是从这个基础镜像过来的 FROM scratch, 然后配置需要的软件和配置来进行的构建

    dockerfile实战

    创建一个自己的Centos

    1. 编写DockerFile文件
      dockerfile编写

    2. 通过 docker build 构建镜像
      dockerfile构建

    命令格式:docker build -f dockerfile文件 -t 目标镜像名:版本号 .

    1. 启动 docker 容器
      dockerfile启动容器

    可以发现增加的VIM,net-tools都可以使用
    还可以通过docker history 镜像id 查看镜像是怎么生成的

    CMD 和 ENTRYPOINT 的区别

    测试CMD

    # 编写 dockerfile 文件
    FROM centos
    CMD ["ls", "-a"]
    
    # 构建镜像
     sudo docker build -f dockerfile-cmd-test -t mycentos:0.2 .
    
    # run运行,发现 ls -a生效了,但是只有最后一个CMD生效
    sudo docker run mycentos:0.2
    
    

    测试 ENTRYPOINT

    # 编写 dockerfile 文件
    FROM centos
    ENTRYPOINT ["ls", "-a"]
    
    # 构建镜像
     sudo docker build -f dockerfile-cmd-test -t mycentos:0.2 .
    
    # run运行,发现 ls -a生效了,但是只有最后一个CMD生效
    sudo docker run mycentos:0.2
    
    # 区别,我们追加的命令,直接添加到ENTRYPOINT命令后面
    ubuntu@VM-0-13-ubuntu:/home/dockerfile$ sudo docker run mycentos:0.3 -l
    total 56
    drwxr-xr-x   1 root root 4096 Jan  9 07:22 .
    drwxr-xr-x   1 root root 4096 Jan  9 07:22 ..
    -rwxr-xr-x   1 root root    0 Jan  9 07:22 .dockerenv
    lrwxrwxrwx   1 root root    7 Nov  3 15:22 bin -> usr/bin
    drwxr-xr-x   5 root root  340 Jan  9 07:22 dev
    drwxr-xr-x   1 root root 4096 Jan  9 07:22 etc
    drwxr-xr-x   2 root root 4096 Nov  3 15:22 home
    lrwxrwxrwx   1 root root    7 Nov  3 15:22 lib -> usr/lib
    lrwxrwxrwx   1 root root    9 Nov  3 15:22 lib64 -> usr/lib64
    drwx------   2 root root 4096 Dec  4 17:37 lost+found
    drwxr-xr-x   2 root root 4096 Nov  3 15:22 media
    drwxr-xr-x   2 root root 4096 Nov  3 15:22 mnt
    drwxr-xr-x   2 root root 4096 Nov  3 15:22 opt
    dr-xr-xr-x 113 root root    0 Jan  9 07:22 proc
    dr-xr-x---   2 root root 4096 Dec  4 17:37 root
    drwxr-xr-x  11 root root 4096 Dec  4 17:37 run
    lrwxrwxrwx   1 root root    8 Nov  3 15:22 sbin -> usr/sbin
    drwxr-xr-x   2 root root 4096 Nov  3 15:22 srv
    dr-xr-xr-x  13 root root    0 Jan  8 12:29 sys
    drwxrwxrwt   7 root root 4096 Dec  4 17:37 tmp
    drwxr-xr-x  12 root root 4096 Dec  4 17:37 usr
    drwxr-xr-x  20 root root 4096 Dec  4 17:37 var
    
    
    

    实战Tomcat

    1. 准备镜像文件Tomcat压缩包,jdk的压缩包

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

    FROM centos
    MAINTAINER lxl<3419066024@qq.com>
    
    COPY readme.txt /usr/local/readme.txt
    
    ADD jdk-8u162-linux-x64.tar.gz /usr/local
    ADD apache-tomcat-9.0.41.tar.gz /usr/local
    
    RUN  yum -y install vim
    
    ENV MYPATH /usr/local
    WORKDIR $MYPATH
    
    ENV JAVA_HOME /usr/local/jdk1.8.0_162
    ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.41
    ENV CATALINA_BASH $CATALINA_HOME
    ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
    
    EXPOSE 8080
    
    CMD /usr/local/apache-tomcat-9.0.41/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.41/bin/logs/catatlina.out
    
    
    1. 构建镜像
    sudo docker build -t diytomcat .
    
    1. 启动容器
    docker run -d -p 3344:8080 --name lxltomcat -v /home/ubuntu/tomcat/test:/usr/local/apache-tomcat-9.0.41/webapps/test -v /home/ubuntu/tomcat/tomcatlogs/:/usr/local/apache-tomcat-9.0.41/logs diytomcat
    
    1. 发布项目

    在本地的挂载目录上可以上传自己的文件

    发布镜像

    DockerHub

    1. 要注册自己的账号
    2. 确定这个账号可以登录
    3. 使用 docker push

    发布到阿里云

    DockerFile小结

    docker全流程

  • 相关阅读:
    flexbox子盒子order属性
    将页面中表格数据导出excel格式的文件(vue)
    vue.js生命周期钩子函数及缓存
    js获取n分钟(或n小时或n个月)后(或前)的时间(日期)
    微信小程序之模版的使用(template)
    微信小程序导出当前画布指定区域的内容并生成图片保存到本地相册(canvas)
    关于UUID
    关于axios及其在vue中的配置
    Vue.js之下拉列表及选中触发事件
    基于iview的后台管理
  • 原文地址:https://www.cnblogs.com/lxlhelloworld/p/14286490.html
Copyright © 2020-2023  润新知