Docker
-
Docker 组件如何协作?- 每天5分钟玩转容器技术(8)
还记得我们运行的第一个容器吗?现在通过它来体会一下 Docker 各个组件是如何协作的。 容器启动过程如下: Docker 客户端执行 docker run 命令。 Docker daemon 发现本地没有 httpd 镜像。 daemon 从 Docker Hub 下…
-
最小的镜像 - 每天5分钟玩转容器技术(9)
镜像是 Docker 容器的基石,容器是镜像的运行实例,有了镜像才能启动容器。 本章内容安排如下: 首先通过研究几个典型的镜像,分析镜像的内部结构。 然后学习如何构建自己的镜像。 最后介绍怎样管理和分发镜像。 镜…
-
base 镜像 - 每天5分钟玩转容器技术(10)
上一节我们介绍了最小的 Docker 镜像本节讨论 base 镜像。 base 镜像有两层含义 1、不依赖其他镜像从 scratch 构建。 2、其他镜像可以之为基础进行扩展。 所以能称作 base 镜像的通常都是各种 Linux 发行版的 Docke…
-
镜像的分层结构 - 每天5分钟玩转容器技术(11)
Docker 支持通过扩展现有镜像,创建新的镜像。 实际上,Docker Hub 中 99% 的镜像都是通过在 base 镜像中安装和配置需要的软件构建出来的。比如我们现在构建一个新的镜像,Dockerfile 如下: ① 新镜像不再是从 scra…
-
构建镜像 - 每天5分钟玩转容器技术(12)
对于 Docker 用户来说,最好的情况是不需要自己创建镜像。几乎所有常用的数据库、中间件、应用软件等都有现成的 Docker 官方镜像或其他人和组织创建的镜像,我们只需要稍作配置就可以直接使用。 使用现成镜像的好处…
-
Dockerfile 构建镜像 - 每天5分钟玩转容器技术(13)
Dockerfile 是一个文本文件,记录了镜像构建的所有步骤。 第一个 Dockerfile 用 Dockerfile 创建上节的 ubuntu-with-vi,其内容则为: 下面我们运行 docker build 命令构建镜像并详细分析每个细节。 root@ubuntu:~#…
-
镜像的缓存特性 - 每天5分钟玩转 Docker 容器技术(14)
上一节我们学习了镜像的分层结构,今天讨论镜像的缓存特性。 Docker 会缓存已有镜像的镜像层,构建新镜像时,如果某镜像层已经存在,就直接使用,无需重新创建。 举例说明。在前面的 Dockerfile 中添加一点新内容,…
-
调试 Dockerfile - 每天5分钟玩转 Docker 容器技术(15)
包括 Dockerfile 在内的任何脚本和程序都会出错。有错并不可怕,但必须有办法排查,所以本节讨论如何 debug Dockerfile。 先回顾一下通过 Dockerfile 构建镜像的过程: (1)从 base 镜像运行一个容器。 (2)执行…
-
Dockerfile 常用指令 - 每天5分钟玩转 Docker 容器技术(16)
是时候系统学习 Dockerfile 了。 下面列出了 Dockerfile 中最常用的指令,完整列表和说明可参看官方文档。 FROM 指定 base 镜像。 MAINTAINER 设置镜像的作者,可以是任意字符串。 COPY 将文件从 build context 复…
-
RUN vs CMD vs ENTRYPOINT - 每天5分钟玩转 Docker 容器技术(17)
RUN、CMD 和 ENTRYPOINT 这三个 Dockerfile 指令看上去很类似很容易混淆。本节将通过实践详细讨论它们的区别。 简单的说 (1)RUN 执行命令并创建新的镜像层RUN 经常用于安装软件包。 (2)CMD 设置容器启动后默认…