zoukankan      html  css  js  c++  java
  • DockerFile体系构建(保留字指令)

    保留字指令

    FROM       --基础镜像,当前镜像是基于那个镜像的

    MAINTAINER    --镜像维护者的名字和邮件地址

    RUN        --容器构建时需要运行的命令

    EXPOSE      --当前容器对外暴露的端口

    WORKDR       --指定在创建容器后,终端默认登录的进来工作目录,一个落脚点

    ENV             --用来构建镜像过程中设置环境变量

    ADD        --将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tae压缩包

    COPY        --类似ADD,拷贝文件和目录到镜像。将从构建上下文目录<源路径>的文件/目录复制到新的一层的镜像内的<目标路径>位置

    VOLUME     --容器数据卷,用于数据保存和持久化的命令

    CMD            --指定一个容器启动时要运行的命令。DockerFile中可以有多个CMD指令,但只有最后一个生效,CMD会被docker run 之后的参数替换

    ENTRYPOINT   --指定一个容器启动时要运行的命令。ENTRYPOINT和CMD一样,都是在指定容器启动程序及参数

    ONBUILD     --当构建一个被继承的DockerFile运行命令,父镜像在被继承后父镜像的onbuild被触发

     案例1

    Base 镜像(scratch)

    Docker Hub中 99%的镜像都是通过在base镜像中安装和配置需要的软件构建出来的

    自定义镜像mycentos

    官网拉下来的 centos 默认路径是 / ,不支持 vim 不支持 ifconfig

    目标:

    我们自定义 mycentos目的使我们自己的镜像具备如下:

      登录后的默认路径

      vim编辑器

      查看网络配置ifconfig支持

    1.编写

    准备Dockerfile文件

    mycentos内容Dockerfile

    FROM centos
    MAINTAINER sw<sw@126.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 "success--------------ok"
    CMD /bin/bash

    2.构建

    docker build -f DockerFile -t 新镜像名字:TAG .

     查看一下我们制作的镜像

    docker images

    3.运行

    docker run -it mycentos:1.3

    注; 我们可以看到,自定义的镜像 默认路径发生了改变,并且支持 vim 与 ifconfig

    4.列出镜像的变更历史

    docker history 6d493064c6ca

     案例2

    制作CMD版可以查询IP信息的容器

    1.编写

    准备Dockerfile文件

    mycentos01内容Dockerfile

    FROM centos
    RUN yum install -y curl
    CMD ["curl", "-s", "https://ip.cn"]

    2.构建

    docker build -f ./mycentos01 -t myip .

    3.运行

    docker run -it myip

     如果我们要添加一个参数

    这时我们就需要使用 ENTRYPOINT 而不能使用 CMD

    1.编写

    重新编写DockerFile 文件

    FROM centos
    RUN yum install -y curl
    ENTRYPOINT  ["curl", "-s", "https://ip.cn"]

    2.构建与运行

  • 相关阅读:
    mysql 主键、复合主键等
    win7 增加edit with vim右键菜单
    设计模式学习1:简单工厂模式实现加减乘除等运算
    C#练习笔记3:分部类分部方法,索引结合异常的使用
    C#练习笔记4:枚举和数组练习
    C#练习笔记2:dll的编写与引用
    C#练习笔记1:自定义的类型转换和操作符的重载
    学习杂记1:c#,顺序泛型栈,泛型委托,Lambda,拓展方法
    数据结构学习日记3:顺序栈的实现(两种不同的方法)
    Unity中字幕的一个简单实现方式小结
  • 原文地址:https://www.cnblogs.com/shangwei/p/15588635.html
Copyright © 2011-2022 走看看