zoukankan      html  css  js  c++  java
  • 1-4dockerfile基本使用

    1.创建一个文件夹

     mkdir mynginx
     cd mynginx
     touch Dockerfile
    [root@VM_0_10_centos mynginx]# cat Dockerfile 
    FROM nginx:1.17   #第一次镜像
    
    RUN echo  echo '<h1>Hello, zjy!</h1>' > /usr/share/nginx/html/index.html
    

    1-1、如果说没有第一层镜像,是空白镜像scratch

    FROM scratch
    ...
    

    1-2、dockerfile  最大镜像层数有限制

    Union FS 是有最⼤层数限制的,⽐如 AUFS,曾经是最⼤不得超过 42 层,现在是不得超过 127层。
    Dockerfile 正确的写法应该是这样:
    
    FROM debian:jessie
    RUN buildDeps='gcc libc6-dev make' 
    && apt-get update 
    && apt-get install -y $buildDeps 
    && wget -O redis.tar.gz "http://download.redis.io/releases/redis-3.2.5.tar.gz" 
    && mkdir -p /usr/src/redis 
    && tar -xzf redis.tar.gz -C /usr/src/redis --strip-components=1 
    && make -C /usr/src/redis 
    && make -C /usr/src/redis install 
    Dockerfile 定制镜像
    27
    && rm -rf /var/lib/apt/lists/* 
    && rm redis.tar.gz 
    && rm -r /usr/src/redis 
    && apt-get purge -y --auto-remove $buildDeps
    
    #而不是这样怎写的
    FROM debian:jessie
    RUN apt-get update
    RUN apt-get install -y gcc libc6-dev make
    RUN wget -O redis.tar.gz "http://download.redis.io/releases/redis-3.2.5.tar.gz"
    RUN mkdir -p /usr/src/redis
    RUN tar -xzf redis.tar.gz -C /usr/src/redis --strip-components=1
    RUN make -C /usr/src/redis
    RUN make -C /usr/src/redis install
    

    2.制作镜像 

    docker build -t nginx:v3 .
    

     

     3、dockerfile 构建会有上下文

    如果注意,会看到 docker build 命令最后有 一个  .   ,  . 表示当前目录, Dockerfile 就在当前目录。

    当执行COCP指令时会把当前目录打包放在镜像中,如果把dockerfile放在根目录下,打包可能一个镜像会几十G,那样就尴尬了

    COPY ./package.json /app/
    
    #  ./package.jso  
    #所有打包的或者拷贝的全都放到dockerfile 所在目录中,这样才正确
    
    应该会将 Dockerfile 置于一个空目录下,或者项目根目录下。
    实际上 Dockerfile 的件名并不要求必须为 Dockerfile,而且并不要求必须位于上下目录 -f ../Dockerfile.php 参数指定某个文件作为 Dockerfile
    

    4、镜像的迁移

    Docker 还提供了 docker load 和 docker save 命令,以将镜像保存为一个 tar 文件,然后传输到另一个位置上,再加载进来。这是在没有 Docker Registry 时的做法,现在已经不推荐,镜像迁移应该直接使 Docker Registry,无论是直接使用Docker Hub 还是使内内网私有 Registry 都可以。 
    [root@VM_0_10_centos mynginx]# docker images 
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    nginx               v3                  1af39fd25fb3        29 minutes ago      126MB
    nginx               v2                  7d3e771ab88b        5 hours ago         126MB
    nginx               1.17                f949e7d76d63        38 hours ago        126MB
    ubuntu              16.04               657d80a6401d        7 days ago          121MB
    [root@VM_0_10_centos mynginx]# docker save nginx:v3|gzip > nginx_v3.tar.gz
    [root@VM_0_10_centos mynginx]# ls
    Dockerfile  nginx_v3.tar.gz
    [root@VM_0_10_centos mynginx]# du -sh nginx_v3.tar.gz 
    47M	nginx_v3.tar.gz
    [root@VM_0_10_centos mynginx]# docker rmi 1af39fd25fb3
    Untagged: nginx:v3
    Deleted: sha256:1af39fd25fb3616ea2efd24d00e0f77309c6a8c6af4ab527678a6adea1250991
    Deleted: sha256:d2549ea8e90863f679a50fd3378bd9c06fd766107565f53435134d40470c7799
    
    [root@VM_0_10_centos mynginx]# docker load -i  nginx_v3.tar.gz
    44d9a80fe7fc: Loading layer [==================================================>]  4.096kB/4.096kB
    Loaded image: nginx:v3
    [root@VM_0_10_centos mynginx]# docker im
    image   images  import  
    [root@VM_0_10_centos mynginx]# docker images 
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    nginx               v3                  1af39fd25fb3        30 minutes ago      126MB
    nginx               v2                  7d3e771ab88b        5 hours ago         126MB
    nginx               1.17                f949e7d76d63        38 hours ago        126MB
    ubuntu              16.04               657d80a6401d        7 days ago          121MB

     

     

  • 相关阅读:
    gcc 编译
    UltraEdit 添加到右键菜单
    linux 编译错误:undefined reference to `__gxx_personality_v0'
    UltraEdit 取消生成.bak文件
    容器
    Windows CEvent事件
    Windows _beginthreadex 线程类与线程池
    C++ 工厂模式
    Mutex linux线程锁
    windows CRITICAL_SECTION 线程锁
  • 原文地址:https://www.cnblogs.com/zhaojingyu/p/11594650.html
Copyright © 2011-2022 走看看