From 2d29a6c38d06aaa8f4f112247474c2460caa1990 Mon Sep 17 00:00:00 2001 From: jaywcjlove Date: Sat, 1 Oct 2022 13:21:03 +0000 Subject: [PATCH] doc: Update `docker.md` `dockerfile` cheatsheet. f7f71e507041347916ebb3f4856358fcb712bee3 --- docs/docker.html | 1 + docs/dockerfile.html | 97 ++++++++++++++++++++++++++++++++++++++------ index.html | 4 +- 3 files changed, 88 insertions(+), 14 deletions(-) diff --git a/docs/docker.html b/docs/docker.html index 3082e135..2a1f9cc5 100644 --- a/docs/docker.html +++ b/docs/docker.html @@ -409,6 +409,7 @@ diff --git a/docs/dockerfile.html b/docs/dockerfile.html index 1aca6cee..1385c382 100644 --- a/docs/dockerfile.html +++ b/docs/dockerfile.html @@ -52,7 +52,7 @@
FROM ruby:2.2.2
 FROM golang:1.19-alpine3.16 AS build-env
 
-

变量

+

变量 ENV

ENV <key>=<value> ...
 
ENV APP_HOME /myapp
@@ -64,32 +64,61 @@
 

初始化

RUN bundle install
 
+

WORKDIR 指令为任何 RUNCMDENTRYPOINTCOPYADD 指令设置工作目录。

WORKDIR /myapp
 
+

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

VOLUME ["/data"]
 # 安装点规范
 
ADD file.xyz /file.xyz
-COPY --chown=user:group host_file.xyz /path/container_file.xyz
+# 复制
+COPY --chown=user:group host_file.xyz /path/container_file.xyz
 

Onbuild

-
ONBUILD RUN bundle install
+
ONBUILD RUN bundle install
 # 与另一个文件一起使用时
-
-

命令

-
EXPOSE 5900
-CMD ["bundle", "exec", "rails", "server"]
-
+ +ONBUILD ADD . /app/src +ONBUILD RUN /usr/local/bin/python-build --dir /app/src +
+

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

在严格的 shell 中运行命令

ENV my_var
 SHELL ["/bin/bash", "-euo", "pipefail", "-c"]
-# With strict mode:
+# 使用严格模式:
 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
 
@@ -97,7 +126,7 @@
ENTRYPOINT exec top -b
 

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

-

元数据

+

元数据 LABEL

LABEL version="1.0"
 
LABEL "com.example.vendor"="ACME Incorporated"
@@ -110,6 +139,49 @@
       multi.label2="value2" \
       other="value3"
 
+

ARG

+
ARG <name>[=<default value>]
+
+

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

+
FROM busybox
+# user1 默认值为 someuser
+ARG user1=someuser
+ARG buildno=1
+
+

.dockerignore 文件

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

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

主要命令

@@ -161,7 +233,7 @@
-

服务静态网站的最小 Docker 镜像

+

服务静态网站的最小 Docker 镜像

FROM lipanski/docker-static-website:latest
 # 使用 .dockerignore 文件来控制图像中的内容!
 # 复制当前目录内容,到容器中
@@ -178,6 +250,7 @@
 
 
 
diff --git a/index.html b/index.html index cf3f6481..c4d5504a 100644 --- a/index.html +++ b/index.html @@ -61,9 +61,9 @@ TOML - + -Markdown +Markdown