当前位置 博文首页 > 文章内容

    dockerfile 详解

    作者: 栏目:未分类 时间:2020-07-29 11:01:05

    本站于2023年9月4日。收到“大连君*****咨询有限公司”通知
    说我们IIS7站长博客,有一篇博文用了他们的图片。
    要求我们给他们一张图片6000元。要不然法院告我们

    为避免不必要的麻烦,IIS7站长博客,全站内容图片下架、并积极应诉
    博文内容全部不再显示,请需要相关资讯的站长朋友到必应搜索。谢谢!

    另祝:版权碰瓷诈骗团伙,早日弃暗投明。

    相关新闻:借版权之名、行诈骗之实,周某因犯诈骗罪被判处有期徒刑十一年六个月

    叹!百花齐放的时代,渐行渐远!



    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/
    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”](卷)

    对数据有持久化的功能

    (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

    1. 5.ONBUILD

    ONBUILD [INSTRUCTION]

    为镜像添加触发器

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

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