zoukankan      html  css  js  c++  java
  • docker~Dockerfile优化程序的部署

    回到目录

    一些理论

    我们都知道docker这个容器工具可以帮助我们快速进行环境的部署,这对于运营人员来说,无疑是个福音,而这个工作大叔认为不应该是运营人员干的,而是由开发人员来做,因为只有你知道你干的是什么,你干了它,就应该要部署它,或者把部署的过程写成一个脚本,让运营人员去执行,就可以了,这也许就是docker产生的原因吧!

    Dockerfile是为快速构建docker image而设计的,当你使用docker build 命令的时候,docker 会读取当前目录下的命名为Dockerfile(首字母大写)的纯文本文件并执行里面的指令构建出一个docker image。

    Dockerfile的组合可以用一张图来表示

    Dockerfile的一些命令

    Dockerfile是将一组脚本组合在一个文件中,然后它让批量执行,而脚本中最重要的就是FROM,它告诉docker要启动哪个镜像,然后后观的动作都是针对这个image来执行——我们要想执行一个Dockerfile文件,可以使用下面的代码:

    $ docker build -f /path/to/a/Dockerfile .

    下面是从eshoponcontainer中截取的一个Dockerfile文件的内容,我们可以学习一下

    FROM microsoft/aspnetcore:1.1.2
    ARG source
    WORKDIR /app
    EXPOSE 80
    COPY ${source:-obj/Docker/publish} .
    ENTRYPOINT ["dotnet", "Basket.API.dll"]

    从上面代码中,我们看到Dockerfile有几个命令,下面具体说明一下

    FROM
    基于哪个镜像
    RUN
    安装软件用
    MAINTAINER
    镜像创建者
    CMD
    Container启动时执行的命令,但是一个Dockerfile中只能有一条CMD命令,多条则只执行最后一条CMD.
    CMD主要用于container时启动指定的服务,当Docker run command的命令匹配到CMD command时,会替换CMD执行的命令。
    ENTRYPOINT
    container启动时执行的命令,但是一个Dockerfile中只能有一条ENTRYPOINT命令,如果多条,则只执行最后一条
    ENTRYPOINT没有CMD的可替换特性
    USER
    使用哪个用户跑container
    EXPOSE
    container内部服务开启的端口。主机上要用还得在启动container时,做host-container的端口映射:
    ADD
    将文件<src>拷贝到container的文件系统对应的路径<dest>
    所有拷贝到container中的文件和文件夹权限为0755,uid和gid为0
    如果文件是可识别的压缩格式,则docker会帮忙解压缩

    如果要ADD本地文件,则本地文件必须在 docker build <PATH>,指定的<PATH>目录下

    如果要ADD远程文件,则远程文件必须在 docker build <PATH>,指定的<PATH>目录下。
     注意:使用docker build - < somefile方式进行build,是不能直接将本地文件ADD到container中。只能ADD    url file.
    ADD只有在build镜像的时候运行一次,后面运行container的时候不会再重新加载了。
    VOLUME
    可以将本地文件夹或者其他container的文件夹挂载到container中。

    WORKDIR
    切换目录用,可以多次切换(相当于cd命令),对RUN,CMD,ENTRYPOINT生效
    ONBUILD
    ONBUILD 指定的命令在构建镜像时并不执行,而是在它的子镜像中执行

    好了,今天就说这么多,总之我们要知道,Dockerfile主要用来快速生成image和快速部署应用环境的!

    回到目录

  • 相关阅读:
    身体终于好了 敢大声说话 没事了
    网名 关于网名
    opencv学习20初探基本类型数据
    SQL语句精典收藏
    CodeSimth Update存储过程
    动态sql语句基本语法
    CodeSmith下载与生成存储过程的一个模板
    SQL SERVER的数据类型
    SQL语句精典收藏
    CodeSmith入门教程之编写数据库模板
  • 原文地址:https://www.cnblogs.com/lori/p/7056638.html
Copyright © 2011-2022 走看看