zoukankan      html  css  js  c++  java
  • Dockerfile 关键字

    1.FROM: 文件的开始

      FROM scratch   # 从头开始制作一个最简的

      FROM centos    # 使用centos作为系统,若本地没有,则从网上拉取

      FROM centos:7.0   # 指定系统 + 版本号

    2. LABEL: 相当于注释或者说明信息

      LABEL version="1.0"

      LABEL author="无名"

      LABEL description="你好呀"

      1. LABEL 是关键字,后面的内容可以随便写,例如上面version,author,description 不是关键字,可以随便写

    3. RUN: 执行命令(Linux的命令),每执行一条RUN,就会多一层,通常用于安装应用和软件包,或者给文件权限

      RUN yum -y update

      RUN yum -y install lrzsz

      1.尽量把命令写在一行上,因为每执行一条run,就会多一层,当然,这样写,可读性不好

      RUN yum -y upate && yum -y install lrzsz net-tools 

    4. WORKDIR: 进入或创建目录(没有就创建)

      WORKDIR /root   # 进入 /root 目录

      WORKDIR /test   # 进入 /test 目录,可能没有这个目录,就会新建

      WORKDIR hello   # 进入当前目录下的 hello目录

    5.AND and COPY: 将本地文件,添加到镜像里面

      1. AND: 可以解压缩文件

      AND hello /   # 把本地的hello,添加到根目录下

      AND xxx.tar.gz /  # 把本地的xxx.tar.gz,解压到根目录下

      2.COPY: 只是复制文件

      COPY hello /  # 把本地的hello,复制到根目录下

    6.ENV: 定义变量

     ENV MYSQL_VERSION 5.6   # 定义一个变量名MYSQL_VERSION,值是 5.6

     RUN apt-get -y install mysql-server="${MYSQL_VERSION}"   # 调用变量的时候,要加个$

    7.CMD and ENTRYPOINT: 执行命令

      1. 两种方式指定 RUN、CMD 和 ENTRYPOINT 要运行的命令:Shell 格式和 Exec 格式:

    • Shell格式:<instruction> <command>。例如:apt-get install python3
    • Exec格式:<instruction> ["executable", "param1", "param2", ...]。例如: ["apt-get", "install", "python3"]

      CMD 和 ENTRYPOINT 推荐使用 Exec 格式,因为指令可读性更强,更容易理解。RUN 则两种格式都可以。

      2. CMD 指令允许用户指定容器的默认执行的命令。此命令会在容器启动且 docker run 没有指定其他命令时运行。

      例如:Dockerfile 文件内容是这样

    1 CMD echo "Hello world"

      运行容器 docker run -it [image] 将输出:

    Hello world

      如果后面加上一个命令,比如 docker run -it [image] /bin/bash,CMD 会被忽略掉,命令 bash 将被执行:

    root@30a52dc7c5c5:/#

      3. ENTRYPOINT 的 Exec 格式用于设置容器启动时要执行的命令及其参数,同时可通过CMD命令或者命令行参数提供额外的参数。ENTRYPOINT 中的参数始终会被使用,这是与CMD命令不同的一点。

      例如:Dockerfile 文件内容是这样

    1 ENTRYPOINT ["/bin/echo", "Hello"]  

      当容器通过 docker run -it [image] 启动时,输出为:  

    1 Hello

      如果通过 docker run -it [image] Docker 启动,则输出为:

    1 Hello Docker

      如果Dockerfile的内容是这样:

    1 ENTRYPOINT ["/bin/echo", "Hello"]  
    2 CMD ["world"]

      当容器通过 docker run -it [image] 启动时,输出为:

    1 Hello world

      而如果通过 docker run -it [image] Docker 启动,输出依旧为:

    1 Hello Docker

      也就是说,ENTRYPOINT 中的参数始终会被使用,而 CMD 的额外参数可以在容器启动时动态替换掉。

     8.技巧

    1.改版本号,把其他版本标记为最新

    docker tag mysql:5.5 mysql:latest

  • 相关阅读:
    Oracle Dataguard管理命令(logical standby)
    RAC 主库配置单实例ADG
    基于参数shared_pool_reserved_size进一步理解共享池shared pool原理
    线性表的本质和操作
    类族结构的进化
    顶层父类的创建
    异常类的构建——5个子类构建
    异常类的构建——顶层父类Exception的实现
    智能指针示例
    泛型编程简介
  • 原文地址:https://www.cnblogs.com/python-boy/p/13091973.html
Copyright © 2011-2022 走看看