Dockerd自定义镜像——Dockerfile

た 入场券 2023-10-11 11:11 105阅读 0赞

一、**Dockerfile**自定义镜像:

  Dockerfile 是一个文本文件,其内包含了一条条的**指令(Instruction);

二、**Dockerfile**创建:

  1)在一个空白目录中,建立一个文本文件,并命名为 `Dockerfile`:

  2)在Dockerfile文件内写指令;

三、构建镜像:

  docker build [选项] <上下文路径/URL/->

   1**Docker上下文构建:docker build -t MyImage .**

    //最后一个.点表示当前目录,用于指定上下文(Context)

    上下文:该目录会打包发给docker服务器,docker文件内的操作只能是./当前文件形式,不能是../或者/等;

  2)Git repo构建:docker build https://github.com/twang2218/gitlab-ce-zh.git\#:8.14

  3)tar压缩包构建:docker build http://server/context.tar.gz

三、**Dockerfile**指令:

  1**FROM:**指定基础镜像;

    //scratch:FROM scratch;表示一个空白镜像;

  2**)RUN:**

    1)shell格式:RUN <命令>;

    2)exec格式:RUN [“可执行文件”, “参数1”, “参数2”];

      //Dockerfile中每一个指令都会建立一层,则需要把多行合并:

      每句语句用/反斜杠结尾,第二局开始用&&符号开头;

     1651677-20190811233802805-926103554.png

  3**COPY:**复制;

    COPY 源路径 目标路径

    <源路径>:可以是多个,甚至可以是通配符;//COPY home* /mydir/

    <目标路径>:

      (1)容器内的绝对路径;

      (2)工作目录的相对路径;//用WORKDIR指令设置工作路径;

    //copy指令会把各种源数据保留;

  4**ADD:**

    ADD指令和`COPY`的格式和性质基本一致。

    但是在 `COPY` 基础上增加自动解压tar压缩包的功能。

  5**ENV:**环境变量;

    1)ENV

    2)ENV = =

    使用变量:$key

  6**)EXPOSE:**声明端口;

    EXPOSE <端口1> [<端口2>…]

    docker run -P:会自动随机映射EXPOSE的端口;

    -p <宿主端口>:<容器端口>和EXPOSE不同:

      -p是暴露端口给外界访问;

      EXPOSE仅仅是声明容器打算使用什么端口,并不会自动在宿主进行端口映射。

  7**)VOLUME:**指定数据卷

    //数据卷的作用就是将一些动态的数据和本地文件/文件夹进行绑定,在读写时使用的是本地的文件/文件夹。

    docker run -p 80:8080 -d -v /home/ROOT:/usr/local/tomcat/webapps/ROOT/ tomcat

    docker run -v 绝对路径的文件夹:要挂载到的容器内的文件夹/ 镜像名

  8**)WORKDIR:**

    WORKDIR <工作目录路径>

    //dockerfile中cd无效,需要指定工作目录;

  9**CMD:**

    运行一个文件,并传入参数;

    CMD [“catalina.sh”, “run”]:运行catalina.sh文件并传入参数run;

  10**)ENTRYPOINT:**

    同cmd类似,但是cmd只能执行一次,entrypoint可以执行多次;

转载于:https://www.cnblogs.com/Tractors/p/11337313.html

发表评论

表情:
评论列表 (有 0 条评论,105人围观)

还没有评论,来说两句吧...

相关阅读