Dockerfile文件构建镜像

释放双眼,带上耳机,听听看~!

Dockerfile文件构建镜像
(1)使用Dockerfile制作镜像,能够清晰的了解镜像制作的每一步操作,相对使用者更安全
(2)方便复用
Dockerfile指令:
FROM:以什么镜像为基础镜像
格式:FROM <image> 或 FROM <image>:<tag>
Dockerfie中第一条指令必须为FROM命令,并且,如果同一个Dockerfile中创建多个镜像时,
可以使用多个FROM指令
LABEL : 标识作者信息
格式:LABEL key=”值”
例: LABEL maintainer=”NGINX Docker Maintainers <docker-maint@nginx.com>”
WORKDIR:指定工作目录
格式:WORKDIR <工作目录路径>
作用:为后续的RUN、CMD、ENTRYPOINT指令来配置工作目录
可以使用多个WORKDIR指令,后续的指令如果参数是相对路径,则会基于之前的命令指定路径
如:
FROM centos
WORKDIR /AA
WORKDIR BB
WORKDIR CC
RUN pwd
构建结果输出/AA/BB/CC
USER:指定当前用户
格式:USER <用户名>
指定运行容器是的用户名或UID,后续的指令RUN也会使用指定用户。
注:如果需要临时使用管理员权限可以使用gosu,而不需要使用sudo

ENV:设置容器中环境变量,例:ENV name zhangsan 设置环境变量,名称为name值为zhangsan
COPY:复制文件,从构建上下文目录中<源路径>的文件/目录复制到新的一层的镜像内的<目标路径>位置。
*注意 源文件只能在构建目录下,不能为构建目录的父目录文件,构建路径相当于复制时的根路径
格式:
COPY <源路径>… <目标路径>
COPY [“<源路径>” “<目标路径>”]
(1)目标路径可以是容器的相对路径,也可以是相对于
工作目录的相对路径(工作目录可以永WORKDIR指令来指定)。
(2)会将源文件的所有元数据都保留并复制。
(3)当源文件为多个文件时,目标文件必须是目录并且目录名必须以”/”结束
ADD:更高级的复制文件
格式:同COPY
ADD指令和COPY的格式和性质基本一致,区别:
(1)源路径可以是一个URL,会把URL中文件下载并复制到目标路径
(2)自动解压压缩文件
注:单纯的进行文件的复制操作,建议使用COPY,如果想进行一些文档的解压缩复制可以使用ADD

RUN:制作镜像时在中间容器运行的命令
格式:RUN <command> #在shell终端中运行的命令
RUN [“exec”,”参数1″,”参数2″] #通过使用exec去执行
EXPOSE:声明容器端口
CMD:容器启动命令
格式:
shell 格式:CMD 命令 参数1 参数2 # 在/bin/sh中执行,提供交互式方式
exec 格式:CMD [“exec”,”参数1″,”参数2″ ] #推荐使用
CMD [“参数1″,”参数2”] #提供参数给ENTRYPOINT指令
CMD命令可以被docker run替换。
指定启动容器是执行的命令,每个Dockerfile文件中只能有一个CMD命令,当指定多个命令时,
只有最后一条生效。
ENTRYPOINT:入口点
格式:
shell 格式:ENTRYPOINT 命令 参数1 参数2 # 在/bin/sh中执行,提供交互式方式
exec 格式:ENTRYPOINT [“exec”,”参数1″,”参数2″ ] #推荐使用
(1)指定容器启动后执行的命令,并且不可被docker run提供的参数进行覆盖
(2)每个Dockerfile文件中只能有一个ENTRYPOINT,当指定多个时,只有最后一个生效
(3)当同时存在CMD指令时,CMD的参数会被当作ENTRYPOINT参数执行,当存在多个CMD时,会使用最后一个CMD的参数当作ENTRYPOINT参数
(4)同时使用了ENTRYPOINT、CMD时,docker run 提供的参数会覆盖CMD参数
(5)可以使用–entrypoint 命令,覆盖ENTRYPOINT指令
(6)使用ENTRYPOINT可以执行脚本,并且使用运行镜像时设置的参数,根据参数修改容器内的内容,执行脚本,必须在最后一行添加exec “$@”才可以接收CMD参数并运行

ONBUILD
格式:ONBUILD [指令]
配置当所创建的镜像作为其他新创建的镜像的基础镜像,所执行的操作指令

VOLUME
格式:VOLUME [“容器内挂载点路径1″,”路径2”]
使用VOLUME指令无法手动指定数据卷路径,当有多个路径时,会在docker默认数据目录下生成多个数据卷目录并依次挂载,如果挂载路径目录不存在,会在容器内自动创建

下面写一个简单的nginx例子

Dockerfile文件构建镜像

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

给TA打赏
共{{data.count}}人
人已打赏
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索