From 80a64ac0a4e7b37fd40cc5b048bc4fd8825d343f Mon Sep 17 00:00:00 2001 From: gerryke <25449006@qq.com> Date: Thu, 9 Feb 2017 17:12:26 +0800 Subject: [PATCH 1/5] =?UTF-8?q?=E4=BF=AE=E6=94=B9Entrypoint=E4=BB=8B?= =?UTF-8?q?=E7=BB=8D=E7=AB=A0=E8=8A=82=E4=B8=AD=E9=94=99=E5=88=AB=E5=AD=97?= =?UTF-8?q?=E2=80=9C=E8=BF=9C=E4=BA=86=E2=80=9D=E4=B8=BA=E2=80=9C=E5=8E=9F?= =?UTF-8?q?=E6=9D=A5=E2=80=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- image/dockerfile/entrypoint.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/image/dockerfile/entrypoint.md b/image/dockerfile/entrypoint.md index c652de7..1dc7b70 100644 --- a/image/dockerfile/entrypoint.md +++ b/image/dockerfile/entrypoint.md @@ -38,7 +38,7 @@ $ docker run myip -i docker: Error response from daemon: invalid header field value "oci runtime error: container_linux.go:247: starting container process caused \"exec: \\\"-i\\\": executable file not found in $PATH\"\n". ``` -我们可以看到可执行文件找不到的报错,`executable file not found`。之前我们说过,跟在镜像名后面的是 `command`,运行时会替换 `CMD` 的默认值。因此这里的 `-i` 替换了远了的 `CMD`,而不是添加在原来的 `curl -s http://ip.cn` 后面。而 `-i` 根本不是命令,所以自然找不到。 +我们可以看到可执行文件找不到的报错,`executable file not found`。之前我们说过,跟在镜像名后面的是 `command`,运行时会替换 `CMD` 的默认值。因此这里的 `-i` 替换了原来的 `CMD`,而不是添加在原来的 `curl -s http://ip.cn` 后面。而 `-i` 根本不是命令,所以自然找不到。 那么如果我们希望加入 `-i` 这参数,我们就必须重新完整的输入这个命令: From ef6583229122b975380d22efd91c155ae36f12d3 Mon Sep 17 00:00:00 2001 From: Tao Wang Date: Thu, 16 Feb 2017 14:11:24 +1100 Subject: [PATCH 2/5] Fix basic concept chapter's typo, make it clearer Signed-off-by: Tao Wang --- basic_concept/repository.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/basic_concept/repository.md b/basic_concept/repository.md index cdfb602..dfbfbc0 100644 --- a/basic_concept/repository.md +++ b/basic_concept/repository.md @@ -4,7 +4,7 @@ 一个 **Docker Registry** 中可以包含多个**仓库**(Repository);每个仓库可以包含多个**标签**(Tag);每个标签对应一个镜像。 -一般而言,一个仓库包含的是同一个软件的不同版本的镜像,而标签则用于对应于软件的的不同版本。我们可以通过 `<仓库名>:<标签>` 的格式来指定具体是哪个版本的镜像。如果不给出标签,将以 `latest` 作为默认标签。 +通常,一个仓库会包含同一个软件不同版本的镜像,而标签就常用于对应该软件的各个版本。我们可以通过 `<仓库名>:<标签>` 的格式来指定具体是这个软件哪个版本的镜像。如果不给出标签,将以 `latest` 作为默认标签。 以 [Ubuntu 镜像](https://hub.docker.com/_/ubuntu/) 为例,`ubuntu` 是仓库的名字,其内包含有不同的版本标签,如,`14.04`, `16.04`。我们可以通过 `ubuntu:14.04`,或者 `ubuntu:16.04` 来具体指定所需哪个版本的镜像。如果忽略了标签,比如 `ubuntu`,那将视为 `ubuntu:latest`。 From f4bb30b9f44ea6233c12514c8c9ca82251bbcfd0 Mon Sep 17 00:00:00 2001 From: Jason <374632897@qq.com> Date: Sat, 18 Feb 2017 14:35:44 +0800 Subject: [PATCH 3/5] =?UTF-8?q?=E8=87=B3=E4=BA=8E=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E4=B8=BA=E7=BD=AE=E4=BA=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- image/build.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/image/build.md b/image/build.md index 8faf5a2..11a0aca 100644 --- a/image/build.md +++ b/image/build.md @@ -164,7 +164,7 @@ Sending build context to Docker daemon 2.048 kB 理解构建上下文对于镜像构建是很重要的,避免犯一些不应该的错误。比如有些初学者在发现 `COPY /opt/xxxx /app` 不工作后,于是干脆将 `Dockerfile` 放到了硬盘根目录去构建,结果发现 `docker build` 执行后,在发送一个几十 GB 的东西,极为缓慢而且很容易构建失败。那是因为这种做法是在让 `docker build` 打包整个硬盘,这显然是使用错误。 -一般来说,应该会将 `Dockerfile` 至于一个空目录下,或者项目根目录下。如果该目录下没有所需文件,那么应该把所需文件复制一份过来。如果目录下有些东西确实不希望构建时传给 Docker 引擎,那么可以用 `.gitignore` 一样的语法写一个 `.dockerignore`,该文件是用于剔除不需要作为上下文传递给 Docker 引擎的。 +一般来说,应该会将 `Dockerfile` 置于一个空目录下,或者项目根目录下。如果该目录下没有所需文件,那么应该把所需文件复制一份过来。如果目录下有些东西确实不希望构建时传给 Docker 引擎,那么可以用 `.gitignore` 一样的语法写一个 `.dockerignore`,该文件是用于剔除不需要作为上下文传递给 Docker 引擎的。 那么为什么会有人误以为 `.` 是指定 `Dockerfile` 所在目录呢?这是因为在默认情况下,如果不额外指定 `Dockerfile` 的话,会将上下文目录下的名为 `Dockerfile` 的文件作为 Dockerfile。 From aee43fea12b9edd71938ab680321e24216b6e18c Mon Sep 17 00:00:00 2001 From: Jason <374632897@qq.com> Date: Sat, 18 Feb 2017 21:02:39 +0800 Subject: [PATCH 4/5] =?UTF-8?q?=E6=98=AF=E7=94=A8=20->=20=E4=BD=BF?= =?UTF-8?q?=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- image/dockerfile/arg.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/image/dockerfile/arg.md b/image/dockerfile/arg.md index c203bd2..fb7be3d 100644 --- a/image/dockerfile/arg.md +++ b/image/dockerfile/arg.md @@ -2,7 +2,7 @@ 格式:`ARG <参数名>[=<默认值>]` -构建参数和 `ENV` 的效果一样,都是设置环境变量。所不同的是,`ARG` 所设置的构建环境的环境变量,在将来容器运行时是不会存在这些环境变量的。但是不要因此就是用 `ARG` 保存密码之类的信息,因为 `docker history` 还是可以看到所有值的。 +构建参数和 `ENV` 的效果一样,都是设置环境变量。所不同的是,`ARG` 所设置的构建环境的环境变量,在将来容器运行时是不会存在这些环境变量的。但是不要因此就使用 `ARG` 保存密码之类的信息,因为 `docker history` 还是可以看到所有值的。 `Dockerfile` 中的 `ARG` 指令是定义参数名称,以及定义其默认值。该默认值可以在构建命令 `docker build` 中用 `--build-arg <参数名>=<值>` 来覆盖。 From 394b6622f923cb6e9e7065ebb87aed2a0fbf27b3 Mon Sep 17 00:00:00 2001 From: Jason <374632897@qq.com> Date: Sat, 18 Feb 2017 22:07:35 +0800 Subject: [PATCH 5/5] =?UTF-8?q?=E5=9C=A8=20->=20=E5=86=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- image/other.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/image/other.md b/image/other.md index 24f4c1a..248e60d 100644 --- a/image/other.md +++ b/image/other.md @@ -38,7 +38,7 @@ f477a6e18e98 About a minute ago 214.9 MB ### `docker save` 和 `docker load` -Docker 还提供了 `docker load` 和 `docker save` 命令,用以将镜像保存为一个 `tar` 文件,然后传输到另一个位置上,在加载进来。这是在没有 Docker Registry 时的做法,现在已经不推荐,镜像迁移应该直接使用 Docker Registry,无论是直接使用 Docker Hub 还是使用内网私有 Registry 都可以。 +Docker 还提供了 `docker load` 和 `docker save` 命令,用以将镜像保存为一个 `tar` 文件,然后传输到另一个位置上,再加载进来。这是在没有 Docker Registry 时的做法,现在已经不推荐,镜像迁移应该直接使用 Docker Registry,无论是直接使用 Docker Hub 还是使用内网私有 Registry 都可以。 #### 保存镜像