微信招聘网站建设,网络课程教学平台有哪些,新手学建设网站,电子商务的网站建设设计书Dockerfile制作镜像
Dockerfile介绍
dockerfile 是一个用来构建镜像的文本文件#xff0c;文本内容包含了一条条构建镜像所需的指令和说明。 dockerfile仅仅是用来制作镜像的源码文件#xff0c;是构建容器过程中的指令#xff0c;docker能够读取dockerfile的指定进行自动…Dockerfile制作镜像
Dockerfile介绍
dockerfile 是一个用来构建镜像的文本文件文本内容包含了一条条构建镜像所需的指令和说明。 dockerfile仅仅是用来制作镜像的源码文件是构建容器过程中的指令docker能够读取dockerfile的指定进行自动构建容器基于dockerfile制作镜像每一个指令都会创建一个镜像层即镜像都是多层叠加而成因此层越多效率越低创建镜像层越少越好。因此能在一个指令完成的动作尽量通过一个指令定义。 使用docker build命令用户可以创建基于基础镜像的自定义镜像。
Dockerfile指令
FROM 指定基础镜像Dockerfile的第一条命令
格式 FROM FROM :
若使用第一种格式则基础镜像的tag为latest MAINTAINER 镜像维护者信息
格式 MAINTAINER RUN 构建镜像时在镜像中运行的shell命令
格式 RUN RUN [“executable”, “param1”, “param2”]
第一种格式(shell形式)默认使用/bin/sh -c 执行命令推荐使用第一种格式 第二种格式(exec形式)使用exec执行命令
若想使用其他shell类型执行命令请使用第二种格式即 RUN [“/bin/bash”,“-c”,“command”]
多条RUN命令可以合并如: RUN command1 command2 command3 ENV 设置镜像的环境变量
格式 ENV ENV …
第一种格式一次只能设置一个环境变量 第二种可以设置多个环境变量若需换行使用反斜杠() EXPOSE 设置启动镜像时要暴露的端口用于与外界交互
格式 EXPOSE […]
VOLUME 申明容器挂载点
格式 VOLUME [“/path1/to/dir1”“/path2/to/dir2”] USER 指定启动镜像时运行用户
格式: USER [:] USER [:]
使用用户之前请确保镜像中有该用户创建用户可以 RUN groupadd -r 用户 useradd -u uid -r -g 用户组 用户 使用USER指定用户后通过docker run运行容器时可以通过-u参数来覆盖所指定的用户 WORKDIR 设置进入容器的默认目录
格式 WORKDIR /path/to/workdir ADD 拷贝本地文件或目录到镜像中
格式 ADD ADD [“”, “”] 用于支持包含空格的路径
src是Dockerfile文件所在的同一级目录或者同级目录的子目录路径 tar类型的文件会自动解压到dest目录下
注意 1.src是个文件且dest以 / 结尾 则docker会把dest当作目录会把src文件拷贝到dest目录下。 如果dest不存在则会自动创建 2.src是个文件且dest不以 / 结尾则docker会把dest当作文件会把dest文件替换为src文件。 如果dest不存在则创建名为src的文件 3.src是个目录且dest不存在则docker会自动以dest创建一个目录把src目录下的文件拷贝进来。 如果dest是个已经存在的目录则docker会把src目录下的文件拷贝到dest下
COPY 拷贝本地文件或目录到镜像中
格式 COPY
与ADD功能相似但是不能解压tar类型的文件 CMD 启动容器时执行的shell命令
格式 CMD [“executable”,“param1”,“param2”] (exec形式执行可执行文件优先) CMD command param1 param2 (shell形式执行命令)
Dockerfile中只能有一条CMD命令,如果指定多条,只有最后一条生效,推荐使用第一种格式 第二种格式默认使用/bin/sh -c 执行命令 若要改变shell类型请使用第一种格式即 CMD [“/bin/bash”,“-c”,“command”,“param1”,“param2”] CMD会被docker run命令行指定的参数所覆盖
ENTRYPOINT 启动容器时执行的shell命令
格式 ENTRYPOINT [“executable”,“param1”,“param2”] (exec形式执行可执行文件优先) ENTRYPOINT command param1 param2 (shell形式执行命令)
第二种格式默认使用/bin/sh -c 执行命令 Dockerfile文件中也可以存在多个ENTRYPOINT指令但仅有最后一个会生效 同CMD类似但是不会被docker run命令行指定的参数所覆盖可以被docker run --entrypoint 覆盖 若Dockerfile中既有CMD(通常位置会在ENTRYPOINT之后)又有ENTRYPOINT则CMD会被当做参数传递给ENTRYPOINT
ARG 构建镜像时指定变量
格式: ARG ARG
第一种格式:变量值可以在docker build --build-arg namevalue时指定
制作镜像
制作镜像的基础命令 Dockerfile在当前目录下: docker build -t 镜像名:tag .
Dockerfile不在当前目录下(-f 指定Dockerfile文件路径,xxx/为构建docker镜像时的上下文路径即该目录下的文件可以在Dockerfile中COPY/ADD): docker build -t 镜像名:tag -f xx/Dockerfile xxx/