zoukankan      html  css  js  c++  java
  • 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 层




    注重细节——关注底层——注重细节——关注底层——注重细节——关注底层——注重细节——关注底层——注重细节——关注底层
  • 相关阅读:
    poj 3243 Clever Y(BabyStep GiantStep)
    poj 2417 Discrete Logging
    poj 3481 Double Queue
    hdu 4046 Panda
    hdu 2896 病毒侵袭
    poj 1442 Black Box
    hdu 2815 Mod Tree
    hdu 3065 病毒侵袭持续中
    hdu 1576 A/B
    所有控件
  • 原文地址:https://www.cnblogs.com/PJG20/p/13215714.html
Copyright © 2011-2022 走看看