diff --git a/appendix/faq/README.md b/appendix/faq/README.md index e8df861..ce6cb2c 100644 --- a/appendix/faq/README.md +++ b/appendix/faq/README.md @@ -30,7 +30,7 @@ * 使用 Dockerfile 创建镜像时候要添加 .dockerignore 文件或使用干净的工作目录。 -更多内容请查看 [Dockerfile 最佳实践](https://docs.docker.com/engine/userguide/eng-image/dockerfile_best-practices/) +更多内容请查看 [Dockerfile 最佳实践](../best_practices.md) ### 碰到网络问题,无法 pull 镜像,命令行指定 http_proxy 无效? @@ -82,7 +82,7 @@ $ docker run --network=my-net --ip=172.25.3.3 -itd --name=my-container busybox ### 可以在一个容器中同时运行多个应用进程么? -答:一般并不推荐在同一个容器内运行多个应用进程。如果有类似需求,可以通过一些额外的进程管理机制,比如 `supervisord` 来管理所运行的进程。可以参考 https://docs.docker.com/engine/admin/multi-service_container/ 。 +答:一般并不推荐在同一个容器内运行多个应用进程。如果有类似需求,可以通过一些额外的进程管理机制,比如 `supervisord` 来管理所运行的进程。可以参考 https://docs.docker.com/config/containers/multi-service_container/ 。 ### 如何控制容器占用系统资源(CPU、内存)的份额? diff --git a/basic_concept/repository.md b/basic_concept/repository.md index a6ba18e..fd16647 100644 --- a/basic_concept/repository.md +++ b/basic_concept/repository.md @@ -26,4 +26,4 @@ Docker Registry 公开服务是开放给用户使用、允许用户管理镜像 开源的 Docker Registry 镜像只提供了 [Docker Registry API](https://docs.docker.com/registry/spec/api/) 的服务端实现,足以支持 `docker` 命令,不影响使用。但不包含图形界面,以及镜像维护、用户管理、访问控制等高级功能。在官方的商业化版本 [Docker Trusted Registry](https://docs.docker.com/datacenter/dtr/2.0/) 中,提供了这些高级功能。 -除了官方的 Docker Registry 外,还有第三方软件实现了 Docker Registry API,甚至提供了用户界面以及一些高级功能。比如,[VMWare Harbor](https://github.com/vmware/harbor) 和 [Sonatype Nexus](https://www.sonatype.com/docker)。 +除了官方的 Docker Registry 外,还有第三方软件实现了 Docker Registry API,甚至提供了用户界面以及一些高级功能。比如,[VMWare Harbor](https://github.com/goharbor/harbor) 和 [Sonatype Nexus](../repository/nexus3_registry.md)。 diff --git a/image/build.md b/image/build.md index ac072bd..af054d8 100644 --- a/image/build.md +++ b/image/build.md @@ -134,7 +134,7 @@ docker build [选项] <上下文路径/URL/-> 如果注意,会看到 `docker build` 命令最后有一个 `.`。`.` 表示当前目录,而 `Dockerfile` 就在当前目录,因此不少初学者以为这个路径是在指定 `Dockerfile` 所在路径,这么理解其实是不准确的。如果对应上面的命令格式,你可能会发现,这是在指定**上下文路径**。那么什么是上下文呢? -首先我们要理解 `docker build` 的工作原理。Docker 在运行时分为 Docker 引擎(也就是服务端守护进程)和客户端工具。Docker 的引擎提供了一组 REST API,被称为 [Docker Remote API](https://docs.docker.com/engine/reference/api/docker_remote_api/),而如 `docker` 命令这样的客户端工具,则是通过这组 API 与 Docker 引擎交互,从而完成各种功能。因此,虽然表面上我们好像是在本机执行各种 `docker` 功能,但实际上,一切都是使用的远程调用形式在服务端(Docker 引擎)完成。也因为这种 C/S 设计,让我们操作远程服务器的 Docker 引擎变得轻而易举。 +首先我们要理解 `docker build` 的工作原理。Docker 在运行时分为 Docker 引擎(也就是服务端守护进程)和客户端工具。Docker 的引擎提供了一组 REST API,被称为 [Docker Remote API](https://docs.docker.com/develop/sdk/),而如 `docker` 命令这样的客户端工具,则是通过这组 API 与 Docker 引擎交互,从而完成各种功能。因此,虽然表面上我们好像是在本机执行各种 `docker` 功能,但实际上,一切都是使用的远程调用形式在服务端(Docker 引擎)完成。也因为这种 C/S 设计,让我们操作远程服务器的 Docker 引擎变得轻而易举。 当我们进行镜像构建的时候,并非所有定制都会通过 `RUN` 指令完成,经常会需要将一些本地文件复制进镜像,比如通过 `COPY` 指令、`ADD` 指令等。而 `docker build` 命令构建镜像,其实并非在本地构建,而是在服务端,也就是 Docker 引擎中构建的。那么在这种客户端/服务端的架构中,如何才能让服务端获得本地文件呢? diff --git a/image/dockerfile/references.md b/image/dockerfile/references.md index 4e0bd84..f726792 100644 --- a/image/dockerfile/references.md +++ b/image/dockerfile/references.md @@ -2,6 +2,6 @@ * `Dockerfie` 官方文档:https://docs.docker.com/engine/reference/builder/ -* `Dockerfile` 最佳实践文档:https://docs.docker.com/engine/userguide/eng-image/dockerfile_best-practices/ +* `Dockerfile` 最佳实践文档:https://docs.docker.com/develop/develop-images/dockerfile_best-practices/ * `Docker` 官方镜像 `Dockerfile`:https://github.com/docker-library/docs