首页 > 代码库 > dockerfile
dockerfile
Dockfile
参考资料:http://www.docker.org.cn/article/114.html
http://www.cnblogs.com/sparkdev/p/6357614.html
http://cloud.51cto.com/art/201411/457338.htm
http://blog.csdn.net/allocator/article/details/70490218
1、 FROM必须是 Dockerfile 中非注释行的第一个指令,即一个 Dockerfile 从FROM语句开始;如果FROM语句没有指定镜像标签,则默认使用latest标签
2、CMD指定在 Dockerfile 中只能使用一次,如果有多个,则只有最后一个会生效。
CMD的目的是为了在启动容器时提供一个默认的命令执行选项。如果用户启动容器时指定了运行的命令,则会覆盖掉CMD指定的命令。
3、 CMD会在启动容器的时候执行,build 时不执行,而RUN只是在构建镜像的时候执行,后续镜像构建完成之后,启动容器就与RUN无关了
4、 每个 Dockerfile 中只能有一个ENTRYPOINT,当指定多个时,只有最后一个生效。ENTRYPOINT配置容器启动后执行的命令,并且不可被 docker run 提供的参数覆盖,而CMD是可以被覆盖的。如果需要覆盖,则可以使用docker run --entrypoint选项。
5、 Export告诉 Docker 服务端容器对外映射的本地端口,需要在 docker run 的时候使用-p或者-P选项生效。
6、 Env指定一个环节变量,会被后续RUN指令使用,并在容器运行时保留.
7、 ADD <src> <dest> 将复制指定的 <src> 到容器中的 <dest>。其中 <src> 可以是 Dockerfile 所在目录的一个相对路径(文件或目录);也可以是一个 URL;还可以是一个 tar 文件(自动解压为目录)。当使用本地目录为源目录时,推荐使用 COPY
8、 COPY用法同ADD,唯一的不同是不能指定远程文件 URLS。
9、 Valume 创建一个可以从本地主机或其他容器挂载的挂载点
10、 使用一个.dockerignore文件用来排除构建镜像时不需要的文件或目录
11、 在大多数情况下,一个容器应该只单独跑一个程序。使其更容易横向扩展和重用
12、 为保持可读性、方便理解、可维护性,把长或者复杂的RUN语句使用\分隔符分成多行
13、 镜像构建过程中会按照Dockerfile的顺序依次执行,每执行一次指令 Docker 会寻找是否有存在的镜像缓存可复用,如果没有则创建新的镜像。如果不想使用缓存,则可以在docker build时添加--no-cache=true选项
14、 为了有效地利用缓存,你需要保持你的 Dockerfile 一致,并且尽量在末尾修改。
15、 Dockerfile 的第一条指令必须为 FROM 指令。并且,如果在同一个 Dockerfile 中创建多个镜像时,可以使用多个 FROM 指令
16、 Docker build命令将读取指定路径下(包括子目录)的 Dockerfile ,并将该路径下所有内容发送给 docker 服务端,由服务端来创建镜像。因此一般建议放置 Dockerfile 的目录为空目录。
17、 可以通过 .dockerignore 文件来让 docker 忽略路径下的目录和文件
18、
指定 Dockerfile 所在路径为 /tmp/docker_builder/,并且希望生成镜像标签为 build_repo/first_image
19、 "docker build -t nginx-centos:6.7 ." 其中.表示在当前目录下搜索Dockerfile文件,-t参数指定镜像名称和tag
20、 myTest
21、
dockerfile