zoukankan      html  css  js  c++  java
  • dockerfile定制镜像的使用

      就是写个docker的脚本然后依次运行,有点类似于gitlab中持续化集成的一系列步骤的自动部署和程序的顺序执行。

    以tomcat为例 ,通常我们在

    usr/local/
    目录下

    创建文件夹tomcat mkdir tomcat

    然后需要创建一个大小写敏感的Dockerfile文件 可以vi 可以vim可以touch Dockerfile

    然后编辑Dockerfile文件

    第一行:from 镜像名 指定一个基础镜像 类似于Java类中的指定父类 这里from tomcat 

    接下来就能进行其他的一些操作 比如新建文件,执行其他命令,甚至你能够进入某个目录下执行一些命令

    COPY 和run或者其他如volume指定数据卷 

    数据卷:容器内和容器寄生者两者共享文件夹 比如指定的一些数据文件如data logs之类的,因为如果启动容器时有指定 -rm的话关闭容器意味着删除该容器(那就当然包括了其中的文件)所以通常不建议在容器中存储数据。但可以存储在volume中

    指定volume:

    VOLUME 宿主机目录  容器目录

    CMD 容器启动执行命令 和ENTRYPOINT作用用法一样:通常都是执行某个.sh文件 如tomcat的shutdown.sh 或zookeeper的zkServer.sh之类的

    二者区别:

      首先二者都是作为容器启动时执行的命令:但是CMD命令会被docker run中的参数覆盖 而ENTRYPOINT不会

    也就是只要你在ENTRYPOINT中指定的内容,它总是会被执行,而cmd中则不会。所以在cmd中设置建议内容 ENTRYPOINT中设置强制内容。

    我觉得在docker compose中更好。。。

    copy就是复制

    EXPOSE 8080 暴露端口 可以暴露多个要写多个EXPOSE 不能直接跟要不然你自己都不清楚

    run:就普通的执行shell命令 执行shell脚本 

    这里还有必要提一下 一些Run命令如果需要在指定的目录下进行的话不要cd后执行run,在run之前使用workdir指定下工作目录,否则run的命令可能会很奇怪,而者一点都不奇怪。。。

    ENTRYPOINT

    其他的就正常根据需求即可。

    WORKDIR 指定接下来的命令指定的工作区(直到下一个WORKDIR改变或者cd改变目录)

    可参照

    FROM tomcat8
    
    ENV CATALINA_HOME /usr/local/tomcat
    ENV PATH $CATALINA_HOME/bin:$PATH
    RUN mkdir -p "$CATALINA_HOME"
    WORKDIR $CATALINA_HOME
    ENV TOMCAT_NATIVE_LIBDIR $CATALINA_HOME/native-jni-lib
    ENV LD_LIBRARY_PATH ${LD_LIBRARY_PATH:+$LD_LIBRARY_PATH:}$TOMCAT_NATIVE_LIBDIR
    ENV OPENSSL_VERSION 1.1.0f-3+deb9u2
    RUN.。。。。。。。一些乱七八糟的操作

    编辑好Dockerfile后保存 esc :wq

    准备构建镜像:

    docker build 后接参数 . 当在存在Dockerfile的目录下执行时可以不指定Dockerfile的目录 其他的话指定Dockerfile使用(默认使用Dockerfile作为其docker的Dockerfile) docker build -f 接目录文件名。指定构建的镜像的名称: -t 后接镜像名

    执行上条语句 当镜像不存在时 docker从网上拉取,并依次执行你设置的一系列内容。 '.'上面这个点代表着context 指定当前目录有Dockerfile  如果没有Dockerfile的话请在 -f后面指定

    查看镜像是否构建成功:docker images 只要不是虚悬的有是成功了

    然后启动镜像 :

    docker run --name 接镜像名称  接其他参数
  • 相关阅读:
    urllib2使用总结
    Scrapy简介
    python3使用多代理访问网站
    ISO9000 质量管理和质量保证系列国际标准
    怎样花两年时间去面试一个人
    Robot Framework 快速入门_中文版
    PMP项目经理认证
    Scrapy安装介绍
    批处理写的俄罗斯方块
    TL9000 电信业质量体系管理标准
  • 原文地址:https://www.cnblogs.com/notably/p/10888990.html
Copyright © 2011-2022 走看看