• Docker --Dockerfile(制作镜像)


    Dockerfile

    Dockerfile 是一个文本格式的配置文件,用户可以使用 Dockerfile 快速创建自定义的镜像

    Dockerfile 常用指令

    FROM

    作用:指定基础镜像,Dockerfile中FROM是必备指令,且必须是第一条指令;
    格式:FROM <image>:[tag]

    FROM busybox
    

    LABEL

    作用:设定元数据
    格式:LABEL <key>=<vlaue> <key>=<value> ...
    其中:LABEL指令将元数据以多个键值对方式指定

    LABEL auther="du"
    

    COPY

    作用:将工作目录中的文件复制到所做得镜像的文件系统中
    格式:COPY <src><src>... <dest>

    COPY index.html  /usr/share/nginx/html/
    

    其中:

    • <src>必须用相对路径,<dest>一般用绝对路径
    • 源文件必须在工作目录或工作目录的子目录(相对路径可以找到)
    • 支持通配符
    • <dest>可以不存在,会自动创建
    • <src>是一个目录,会自动复制目录下的文件到目标位置,
    • 如果复制多个文件,或者<src>中使用了通配符,那么<dest>必须以/结尾

    ADD

    格式:ADD <src><src>... <dest>
    作用:复制指定的 <src> 到容器中的 <dest>
    其中: <src> 可以是 Dockerfile 所在目录的一个相对路径(文件或目录);也可以是一个 URL;还可以是一个 tar 文件(自动解压)

    ADD https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/at-sysvinit-3.1.13-24.el7.x86_64.rpm ./
    

    WORKDIR

    作用:相当于cd命令;指定工作目录;可以使用多个 WORKDIR 指令
    格式:WORKDIR PSTH

    WORKDIR /pack/nginx/
    

    VOLUME

    作用:创建并指定数据卷挂载点
    格式:VOLUME ["/data1","/data2"]

    VOLUME  /webroom
    

    EXPOSE

    作用:设置Docker容器内部暴露的端口号
    格式:EXPOSE port port ...

    EXPOSE 22 80 
    

    ENV

    作用:设置环境变量
    格式:ENV var1=value1 var2=value2 ...

    ENV path=/usr/share/nginx/html/
    

    ARG

    作用:定义变量
    格式:ARG key=value key=value
    其中:ARG构建参数和 ENV 的效果一样,都是设置环境变量。所不同的是, ARG 所设置的构建的环境变量,在将来容器运行时是不会存在这些环境变量的

    RUN

    作用:基于镜像构建容器时运行命令
    格式:RUN cmd && com

    RUN touch testnginx
    

    CMD

    作用:定义容器启动以后要默认运行的程序,pid为1的程序
    格式:CMD ["命令","参数","参数"]

    CMD ["-g","daemon off;"]
    

    其中:指定启动容器时执行的命令,每个 Dockerfile 只能有一条 CMD 命令。如果指定了多条 CMD 命令,只有最后一条会被执行。如果用户在启动容器时指定了要运行的命令,则会覆盖掉 CMD 指定的命令。

    ENTRYPOINT

    作用:配置容器启动后执行的命令和参数,类似CMD
    区别:运行时CMD不能添加参数,而ENTRYPOINT可以添加参数 eg:docker run DockerFile -i

    https://www.cnblogs.com/reachos/p/8609025.html

    USER

    作用:指定运行容器时的用户名和UID,
    格式:USER username|uid

    USER du
    

    ONBUILD

    作用:定义触发器,当本镜像被指定为基础镜像时触发
    格式:ONBUILD cmd

    ...
    ONBUILD ADD . /app/src
    ONBUILD RUN /usr/local/bin/python-build –dir /app/src
    ...
    

    创建镜像

    第一步:编写dockerfile

    ╭─root@du-z ~  
    ╰─➤   mkdir /nginx
    ╭─root@du-z ~  
    ╰─➤   cd /nginx
    ╭─root@du-z /nginx  
    ╰─➤   vim Dockerfile
    FROM docker.io/nginx:latest
    LABEL author=du
    COPY ./passwd /data/
    WORKDIR /pack/nginx/
    ENV  pkgname=nginx-1.14.0.tar.gz  root=/data/mysql/mysql3306/data/
    COPY nginx-1.14.0.tar.gz $root
    VOLUME $root
    EXPOSE 80/tcp
    RUN tar xf $root$pkgname
    CMD nginx -g "daemon off;"
    

    第二步:构建镜像

    ╭─root@du-z /nginx  
    ╰─➤  docker build -t nginx:v1 .
    

    第三步:查看

    # docker image ls
    # docker history nginx:v1
    

  • 相关阅读:
    ubuntu16.04使用anaconda创建python虚拟环境
    Ubuntu16.04里安装anaconda3后将python第三方包安装到指定目录下
    conda把包安装到当前激活的环境中
    ubuntu修改环境变量
    conda安装tensorflow
    ASP VNext 开源服务容错处理库Polly
    EntityFramework实现指定字段的通用赋值
    NET流行高性能JSON框架-Json.NET
    .NET网站国际化策略
    软件开发工作流-GitFlow
  • 原文地址:https://www.cnblogs.com/du-z/p/11357120.html
Copyright © 2020-2023  润新知