首页 > 应用开发 > IT综合 > Docker Dockerfile
一般来说,用户主要使用Dockerfile和dockers build命令来完成一个新镜像的创建。
命令格式如下: docker build PATH|URL
PATH或URL所指向的文件成为context(上下文),PATH通常是一个含有Dockerfile文件的目录,URL可以是一个Github的地址。
如:docker build -t 镜像名称 目录
Dockerfile描述了组装镜像的步骤,其中每条指令都是单独执行的。除了FROM指令,其他每一天指令都会在上一条指令所生成镜像的基础上执行,执行完成后生成一个新的镜像层,新的镜像层覆盖在原来的镜像之上从而形成了新的镜像。Dockerfile所生成的最终镜像就是在基础镜像上面叠加一层层的镜像层组建的。
为了提高镜像构建的速度,Docker daemon会缓存构建过程中的中间镜像。
三:Dockerfile指令
在Dockerfile中,指令不区分大小写,但是为了与参数区分,推荐大写。Docker会顺序执行Dockerfile中的指令。在Dockerfile中以#开头的行是注释,而在其他位置出现的#会被当成参数。
1. 第一条指令必须是FROM指令,它用于指定构建镜像的基础镜像。
2. MAINTAINER
维护者 通常放到FROM后面
3. ADD
ADD命令有两个参数,源和目标。它的基本作用是从源系统的文件系统上复制文件到目标容器的文件系统。如果源是一个URL,那该URL的内容将被下载并复制到容器中。
如:ADD /my_app_folder /my_app_folder
4. CMD
和RUN命令相似,CMD可以用于执行特定的命令。和RUN不同的是,这些命令不是在镜像构建的过程中执行的,而是在用镜像构建容器后被调用。
Dockerfile.中只能有一个CMD指令。 如果你指定了多个,那么最后个CMD指令是生效的。
CMD application "argument", "argument"
如:CMD "echo" "Hello docker!"
5. ENTRYPOINT
配置容器启动后执行的命令,并且不可被 docker run 提供的参数覆盖。
每个 Dockerfile 中只能有一个 ENTRYPOINT,当指定多个时,只有最后一个起效。
ENTRYPOINT 帮助你配置一个容器使之可执行化,如果你结合CMD命令和ENTRYPOINT命令,你可以从CMD命令中移除“application”而仅仅保留参数,参数将传递给ENTRYPOINT命令。
# Usage: ENTRYPOINT application "argument", "argument", ..
# Remember: arguments are optional. They can be provided by CMD
# or during the creation of a container.
ENTRYPOINT echo
# Usage example with CMD:
# Arguments set with CMD can be overridden during *run*
CMD "Hello docker!"
ENTRYPOINT echo
6. ENV
ENV命令用于设置环境变量。这些变量以”KEY=VALUE”的形式存在,并可以在容器内被脚本或者程序调用。这个机制给在容器中运行应用带来了极大的便利。
如:ENV SERVER_WORKS 4
7. EXPOSE
EXPOSE用来指定端口,使容器内的应用可以通过端口和外界交互。
如:EXPOSE 8080
8. RUN
RUN命令是Dockerfile执行命令的核心部分。它接受命令作为参数并用于创建镜像。不像CMD命令,RUN命令用于创建镜像(在之前COMMIT的层之上形成新的层)。
# Usage: RUN [command]
RUN aptitude INSTALL -Y riak
9. USER
USER命令用于设置运行容器的UID。
# Usage: USER [UID]
USER 751
10. VOLUME
VOLUME命令用于让你的容器访问宿主机上的目录。通过 VOLUME 指令创建的挂载点,无法指定主机上对应的目录,是自动生成的。
# Usage: VOLUME ["/dir_1", "/dir_2" ..]
VOLUME ["/my_files"]
11. WORKDIR
WORKDIR命令用于设置CMD指明的命令的运行目录。
# Usage: WORKDIR /path
WORKDIR ~/
12. COPY
COPY
复制本地所指向的文件或目录,将它添加到新镜像中。
13. LABEL
定义一个镜像标签
点击(此处)折叠或打开

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/28624388/viewspace-2146118/ ,如需转载,请注明出处,否则将追究法律责任。