摘要:Dockerfile 以前一直想看看是怎么写的,但是总忘。前一阵子在给实验室的服务器配环境,突然想起来用 dokcer 给每个同学开个虚拟环境,于是就研究了一下。这篇帖子就是总结一下我学到了什么些玩意。

Dockerfile 的构成。

以下写一些主要会用到的。

  • FROM:镜像从哪里来

    比如想拉一个 tensorflow 的官方镜像,就可以这样写:

1
FROM tensorflow/tensorflow:latest-gpu
  • MAINTAINER:镜像维护者信息

    虽然我也没搞明白这个具体有什么用,但是似乎是这样写的:

1
MAINTAINER <name>
  • RUN:构建镜像执行的命令,每一次RUN都会构建一层

    这个应该属于重中之重了。语法比较简单,直接写 shell 命令就可。需要注意的是,比较好的习惯应该是一层 RUN 中执行很多条命令,而不是每条命令都在独立的一层 RUN 中。

    可以用 \ 作为结尾,在下一行开头使用 && 来实现多个命令的执行。

1
2
RUN apt-get update \
&& apt-get install vim
  • CMD:容器启动的命令,如果有多个则以最后一个为准,也可以为ENTRYPOINT提供参数

  • ENV:变量属性值,容器内部也会起作用

1
2
ENV <key> <value>
ENV <key1>=<value1> <key2>=<value2>...
  • ADD:添加文件,如果是压缩文件也解压

  • COPY:添加文件,以复制的形式