• Docker——Dockerfile指令


     1.FROM 指定基础镜像
    
        所谓定制镜像,那一定是以一个镜像为基础,在其上进行定制。
      就像我们之前运行了一个redis镜像的容器,再进行修改一样,基础镜像是必须指定的。
      而 FROM 就是指定基础镜像,因此一个 Dockerfile 中 FROM 是必备的指令,并且必须是第一条指令。 在 Docker Store 上有非常多的高质量的官方镜像,有可以直接拿来使用的服务类的镜像,如nginx 、 redis 、 mongo 、 mysql 、 httpd 、 php 、 tomcat 等;
      如果没有找到对应服务的镜像,官方镜像中还提供了一些更为基础的操作系统镜像, 如ubuntu 、 debian 、 centos、 alpine 等这些操作系统的软件库 2、RUN 执行命令 RUN 指令是用来执行命令行命令的。 格式:
        RUN <command> (类似/bin/sh -cshell格式)
    
          RUN ["executable", "param1", "param2"] (exec格式)
    类似shell脚本风格的:
         FROM alpine
            RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
            RUN apk add  gcc g++ libc-dev  wget vim  openssl-dev make  linux-headers 
            RUN mkdir -p /usr/src/redis
            RUN cd /usr/src/redis
            RUN wget -O redis-4.0.11.tar.gz  "http://download.redis.io/releases/redis-4.0.11.tar.gz"
            RUN tar -xzf redis-4.0.11.tar.gz -C /usr/src/redis
            RUN cd /usr/src/redis/redis-4.0.11 &&  make && make PREFIX=/usr/local/redis install
    之前说过,Dockerfile 中每一个指令都会建立一层, RUN 也不例外。
    每一个 RUN 的行为,就和刚才我们手工建立镜像的过程一样:新建立一层,
    在其上执行这些命令,执行结束后, commit这一层的修改,构成新的镜像。使用 Dockerfile 定制镜像 而上面的这种写法,创建了很多层镜像。
    这是完全没有意义的,而且很多运行时不需要的东西,都被装进了镜像里,比如编译环境、更新的软件包等等。
    结果就是产生非常臃肿、非常多层的镜像,不仅仅增加了构建部署的时间,也很容易出错。 这是很多初学 Docker 的人常犯的一个错误。
    Union FS是有最大层数限制的,比如 AUFS,曾经是最大不得超过 42 层,现在是不得超过 127 层




    注重细节——关注底层——注重细节——关注底层——注重细节——关注底层——注重细节——关注底层——注重细节——关注底层
  • 相关阅读:
    前端 整理的待学习技术点
    为Xamarin更好的开发而改写的库
    C#函数式编程之可选值
    C#函数式编程之序列
    C#函数式编程之标准高阶函数
    C#函数式编程之递归调用
    C#函数式编程之缓存技术
    C#函数式编程之惰性求值
    C#函数式编程之部分应用
    Xamarin.Android之动画
  • 原文地址:https://www.cnblogs.com/PJG20/p/13215714.html
Copyright © 2020-2023  润新知