zoukankan      html  css  js  c++  java
  • dockerfile 详解

    dockerfile指令

    mkdir -p /root/dockerfile/nginx
    cd /root/dockerfile/nginx
    echo "Hellow Docker" > index.html
    vim dockerfile
    FROM centos:7
    MAINTAINER faberbeta "565441850@qq.com"
    RUN yum install net-tools epel-release -y
    RUN yum install nginx -y
    COPY index.html /usr/share/nginx/html/
    VOLUME ["/usr/local/nginx/html/","/usr/local/nginx/logs/"]
    EXPOSE 80
    ENTRYPOINT ["/usr/sbin/nginx","-g","daemon off;"]

    根据/root/dockerfile/nginx中的dockerfile构建新镜像harbor.zhufunin.com:1443/common/nginx:simple

    新的镜像名称是新镜像harbor.zhufunin.com:1443/common/nginx:simple 为什么弄的这么复杂?

    因为是为了push到仓库harbor.zhufunin.com:1443/common/方便,具体的自建仓库知识,请参考https://www.cnblogs.com/faberbeta/p/12861032.html

    docker build -t "harbor.zhufunin.com:1443/common/nginx:simple" /root/dockerfile/nginx

    后台启动docker

    docker run --name=hello_nginx -d -P nginx:simple

    进入docker

    docker ps -a | grep hello_nginx
    docker exec -it hello_nginx /bin/bash

    (1)FROM

    基础镜像,必须是可以下载下来的

    (2)MAINTAINER

    指定镜像的作者信息

    (3)RUN:指定在当前镜像构建过程中运行的命令

    包含两种模式

    1.shell模式

    RUN <command> (shell模式,这个是最常用的,需要记住)

    RUN /bin/sh -c command

    RUN echo hello

    2.exec模式

    RUN ["executable", "param1", "param2"](exec模式)

    RUN ["/bin/bash","-c","echo hello"]

    (4)EXPOSE指令

    指定运行该镜像容器使用的端口,可以是一个或者多个端口,也可以指定多个EXPOSE

    运行的时候加-P,系统会自动分配一个随机的对外端口

     (5) CMD(该指令是在容器运行时执行的命令,docker run 启动的时候如果指定参数,则会覆盖dockerfile中的CMD后面的内容的)

    CMD["executable","param1","param2"](exec模式)

    CMD command param1 param2 (shell模式)

    CMD ["param1","param2"](作为ENTRYPOINT指令的默认参数)

     (6) ENTERYPOINT

    ENTERYPOINT ["executable","param1","param2"](exec模式)

    ENTERYPOINT command param1 param2 (shell模式)

     

    ENTRYPOINT和CMD区别

    使用ENTRYPOINT,docker run运行时如果指定参数不会覆盖dockerfile中ENTRYPOINT后面的内容

    使用CMD,docker run运行时如果指定参数会覆盖dockerfile中CMD后面的内容

     (7) ADD (很少用)

    如果ADD的是一个压缩包,会自动解压到目的地

    ADD <src>...<dest>

    ADD [“<src>”...“<dest>”]

     (8) COPY

    COPY<src>..<dest>

    COPY[“<src>”...“<dest>”]

     

    ADD vs COPY

    ADD包含类似tar的解压功能

    如果单纯复制文件,docker推荐使用COPY

    (9)VOLUME

    在镜像系统中添加新的文件夹

    VOLUME ["/data","/data2"]

    对数据有持久化的功能

    (10)WORKDIR(填写绝对路径)

    WORKDIR /path/to/workdir

    (11)ENV

    设置环境变量

    ENV <key><value>

    ENV <key>=<value>...

    (12)USER

    USER daemon

    USER nginx

    USER user       

    USER uid

    USER user:group 

    USER uid:gid

    USER user:gid    

    USER uid:group

    (13)ONBUILD

    ONBUILD [INSTRUCTION]

    为镜像添加触发器

    当一个镜像被其他镜像作为基础镜像时需要写上OBNBUILD

    会在构建时插入触发器指令

     

     

  • 相关阅读:
    软件工程概论通读第二章
    软件工程概论通读第一章
    mac 下安装mongodb
    angular5 ng-content使用方法
    angular5 @viewChild @ContentChild ElementRef renderer2
    关于日期的一篇很好的文章
    angular5 组件之间监听传值变化
    angular5 ng-bootstrap和ngx-bootstrap区别
    angular5表单验证问题
    angular5 路由变化监听
  • 原文地址:https://www.cnblogs.com/faberbeta/p/13395832.html
Copyright © 2011-2022 走看看