Dockerfile参考文档,Dockerfile教程,Dockerfile基础语法,备忘清单

Dockerfile参考文档,Dockerfile教程,Dockerfile基础语法,备忘清单

继承

默认 Dockerfile 位于上下文的根目录中。

Docker 备忘清单 (github.io)

docker build -f /path/to/a/Dockerfile .

使用 -f 指向文件系统中任何位置的 Dockerfile。

继承

FROM [--platform=] [AS ]

示例

FROM ruby:3.3.0

FROM golang:1.20-alpine3.16 AS build-env

变量 ENV

ENV = ...

ENV APP_HOME /myapp

RUN mkdir $APP_HOME

ENV MY_NAME="John Doe" MY_DOG=Rex\ The\ Dog \

MY_CAT=fluffy

初始化

RUN bundle install

WORKDIR 指令为任何 RUN、CMD、ENTRYPOINT、COPY 和 ADD 指令设置工作目录。

WORKDIR /myapp

VOLUME 指令创建一个具有指定名称的挂载点,并将其标记为保存来自本机主机或其他容器的外部挂载卷。

VOLUME ["/data"]

# 安装点规范

ADD file.xyz /file.xyz

# 复制

COPY --chown=user:group host_file.xyz /path/container_file.xyz

Onbuild

ONBUILD RUN bundle install

# 与另一个文件一起使用时

ONBUILD ADD . /app/src

ONBUILD RUN /usr/local/bin/python-build --dir /app/src

指令将触发指令添加到镜像中,以便稍后执行,此时镜像用作另一个构建的基础。

在严格的 shell 中运行命令

ENV my_var

SHELL ["/bin/bash", "-euo", "pipefail", "-c"]

# 使用严格模式:

RUN false # ails 像使用 && 一样构建

RUN echo "$myvar" # 由于拼写错误会抛出错误

RUN true | false # 将脱离管道

使用 shell 将为 shell 命令打开严格模式。

命令 CMD

:--CMD ["executable","param1","param2"](exec 形式,这是首选形式)CMD ["param1","param2"](作为 ENTRYPOINT 的默认参数)CMD command param1 param2(shell形式)

EXPOSE 5900

CMD ["bundle", "exec", "rails", "server"]

入口点 ENTRYPOINT

ENTRYPOINT ["executable", "param1", "param2"]

ENTRYPOINT command param1 param2

配置将作为可执行文件运行的容器。

ENTRYPOINT exec top -b

这将使用 shell 处理来替换 shell 变量,并将忽略任何 CMD 或 docker run 命令行参数。

元数据 LABEL

LABEL version="1.0"

LABEL "com.example.vendor"="ACME Incorporated"

LABEL com.example.label-with-value="foo"

LABEL version="1.0"

LABEL description="本文说明\

标签值可以跨越多行。"

LABEL multi.label1="value1" \

multi.label2="value2" \

other="value3"

ARG

ARG [=]

指令定义了一个变量,在构建时通过 docker build 命令使用 --build-arg = 标志将其传递给构建器。

FROM busybox

# user1 默认值为 someuser

ARG user1=someuser

ARG buildno=1

.dockerignore 文件

# 注释说明

*/temp*

*/*/temp*

temp?

:--# comment忽略*/temp*在根的任何直接子目录中排除名称以 temp 开头的文件和目录*/*/temp*从根以下两级的任何子目录中排除以 temp 开头的文件和目录temp?排除根目录中名称为 temp 的单字符扩展名的文件和目录

如果此文件存在,排除与其中的模式匹配的文件和目录,有利于避免 ADD 或 COPY 将敏感文件添加到镜像中。匹配是使用 Go 的 filepath.Match 规则完成的。

主要命令

命令说明FROM image构建的基础镜像MAINTAINER email(已弃用)维护者的名字COPY [--chown=:] ... 将上下文中的路径复制到位置 dest 的容器中ADD [--chown=:] ... 与 COPY 相同,但解压缩存档并接受 http url。RUN 在容器内运行任意命令。USER [:]设置默认用户名。WORKDIR /path/to/workdir设置默认工作目录。CMD command param1 param2设置默认命令ENV = ...设置环境变量EXPOSE [/...]运行时侦听指定的网络端口

相关推荐

坦克世界 军功中心升级维护公告
和365一样好的平台有什么

坦克世界 军功中心升级维护公告

08-14 👁️ 8818
陆羽《茶经》之四:茶之器
28365-365.com

陆羽《茶经》之四:茶之器

08-20 👁️ 932