Docker 架构详解 - 每天5分钟玩转容器技术(7)
2017-04-26 06:35
941 查看
Docker 的核心组件包括:
Docker 客户端 - Client
Docker 服务器 - Docker daemon
Docker 镜像 - Image
Registry
Docker 容器 - Container
Docker 架构如下图所示:
![](http://7xo6kd.com1.z0.glb.clouddn.com/upload-ueditor-image-20170425-1493117446353024350.jpg)
Docker 采用的是 Client/Server 架构。客户端向服务器发送请求,服务器负责构建、运行和分发容器。客户端和服务器可以运行在同一个 Host 上,客户端也可以通过 socket 或 REST API 与远程的服务器通信。
Docker 客户端
最常用的 Docker 客户端是
Host 上构建和运行容器。
![](http://7xo6kd.com1.z0.glb.clouddn.com/upload-ueditor-image-20170425-1493117446501032169.jpg)
除了
Docker 服务器
Docker daemon 是服务器组件,以 Linux 后台服务的方式运行。
![](http://7xo6kd.com1.z0.glb.clouddn.com/upload-ueditor-image-20170425-1493117446649053405.jpg)
Docker daemon 运行在 Docker host 上,负责创建、运行、监控容器,构建、存储镜像。
默认配置下,Docker daemon 只能响应来自本地 Host 的客户端请求。如果要允许远程客户端请求,需要在配置文件中打开 TCP 监听,步骤如下:
编辑配置文件 /etc/systemd/system/multi-user.target.wants/docker.service,在环境变量
![](http://7xo6kd.com1.z0.glb.clouddn.com/upload-ueditor-image-20170425-1493117446768003625.jpg)
如果使用的是其他操作系统,配置文件的位置可能会不一样。
重启 Docker daemon。
![](http://7xo6kd.com1.z0.glb.clouddn.com/upload-ueditor-image-20170425-1493117446883034733.jpg)
服务器 IP 为 192.168.56.102,客户端在命令行里加上 -H 参数,即可与远程服务器通信。
![](http://7xo6kd.com1.z0.glb.clouddn.com/upload-ueditor-image-20170425-1493117447137085130.jpg)
Docker 服务器的信息。
Docker 镜像
可将 Docker 镜像看着只读模板,通过它可以创建 Docker 容器。
例如某个镜像可能包含一个 Ubuntu 操作系统、一个 Apache HTTP Server 以及用户开发的 Web 应用。
镜像有多种生成方法:
可以从无到有开始创建镜像
也可以下载并使用别人创建好的现成的镜像
还可以在现有镜像上创建新的镜像
我们可以将镜像的内容和创建步骤描述在一个文本文件中,这个文件被称作 Dockerfile,通过执行
Docker 容器
Docker 容器就是 Docker 镜像的运行实例。
用户可以通过 CLI(docker)或是 API 启动、停止、移动或删除容器。可以这么认为,对于应用软件,镜像是软件生命周期的构建和打包阶段,而容器则是启动和运行阶段。
Registry
Registry 是存放 Docker 镜像的仓库,Registry 分私有和公有两种。
Docker Hub(https://hub.docker.com/) 是默认的 Registry,由 Docker 公司维护,上面有数以万计的镜像,用户可以自由下载和使用。
出于对速度或安全的考虑,用户也可以创建自己的私有 Registry。后面我们会学习如何搭建私有 Registry。
下一节我们通过一个例子来看各个组件是如何协调工作的。
Docker 客户端 - Client
Docker 服务器 - Docker daemon
Docker 镜像 - Image
Registry
Docker 容器 - Container
Docker 架构如下图所示:
![](http://7xo6kd.com1.z0.glb.clouddn.com/upload-ueditor-image-20170425-1493117446353024350.jpg)
Docker 采用的是 Client/Server 架构。客户端向服务器发送请求,服务器负责构建、运行和分发容器。客户端和服务器可以运行在同一个 Host 上,客户端也可以通过 socket 或 REST API 与远程的服务器通信。
Docker 客户端
最常用的 Docker 客户端是
docker命令。通过
docker我们可以方便地在
Host 上构建和运行容器。
docker支持很多操作(子命令),后面会逐步用到。
![](http://7xo6kd.com1.z0.glb.clouddn.com/upload-ueditor-image-20170425-1493117446501032169.jpg)
除了
docker命令行工具,用户也可以通过 REST API 与服务器通信。
Docker 服务器
Docker daemon 是服务器组件,以 Linux 后台服务的方式运行。
![](http://7xo6kd.com1.z0.glb.clouddn.com/upload-ueditor-image-20170425-1493117446649053405.jpg)
Docker daemon 运行在 Docker host 上,负责创建、运行、监控容器,构建、存储镜像。
默认配置下,Docker daemon 只能响应来自本地 Host 的客户端请求。如果要允许远程客户端请求,需要在配置文件中打开 TCP 监听,步骤如下:
编辑配置文件 /etc/systemd/system/multi-user.target.wants/docker.service,在环境变量
ExecStart后面添加
-H tcp://0.0.0.0,允许来自任意 IP 的客户端连接。
![](http://7xo6kd.com1.z0.glb.clouddn.com/upload-ueditor-image-20170425-1493117446768003625.jpg)
如果使用的是其他操作系统,配置文件的位置可能会不一样。
重启 Docker daemon。
![](http://7xo6kd.com1.z0.glb.clouddn.com/upload-ueditor-image-20170425-1493117446883034733.jpg)
服务器 IP 为 192.168.56.102,客户端在命令行里加上 -H 参数,即可与远程服务器通信。
![](http://7xo6kd.com1.z0.glb.clouddn.com/upload-ueditor-image-20170425-1493117447137085130.jpg)
info子命令用于查看
Docker 服务器的信息。
Docker 镜像
可将 Docker 镜像看着只读模板,通过它可以创建 Docker 容器。
例如某个镜像可能包含一个 Ubuntu 操作系统、一个 Apache HTTP Server 以及用户开发的 Web 应用。
镜像有多种生成方法:
可以从无到有开始创建镜像
也可以下载并使用别人创建好的现成的镜像
还可以在现有镜像上创建新的镜像
我们可以将镜像的内容和创建步骤描述在一个文本文件中,这个文件被称作 Dockerfile,通过执行
docker build <docker-file>命令可以构建出 Docker 镜像,后面我们会讨论。
Docker 容器
Docker 容器就是 Docker 镜像的运行实例。
用户可以通过 CLI(docker)或是 API 启动、停止、移动或删除容器。可以这么认为,对于应用软件,镜像是软件生命周期的构建和打包阶段,而容器则是启动和运行阶段。
Registry
Registry 是存放 Docker 镜像的仓库,Registry 分私有和公有两种。
Docker Hub(https://hub.docker.com/) 是默认的 Registry,由 Docker 公司维护,上面有数以万计的镜像,用户可以自由下载和使用。
出于对速度或安全的考虑,用户也可以创建自己的私有 Registry。后面我们会学习如何搭建私有 Registry。
docker pull命令可以从 Registry 下载镜像。
docker run命令则是先下载镜像(如果本地没有),然后再启动容器。
下一节我们通过一个例子来看各个组件是如何协调工作的。
![](http://7xo6kd.com1.z0.glb.clouddn.com/upload-ueditor-image-20170425-1493117447210065648.jpg)
相关文章推荐
- Docker 架构详解 - 每天5分钟玩转容器技术(7)
- Docker 架构详解 - 每天5分钟玩转容器技术(7)
- Docker 架构详解 - 每天5分钟玩转容器技术(7)
- Docker 架构详解 - 每天5分钟玩转容器技术(7)
- 通过例子理解 k8s 架构 - 每天5分钟玩转 Docker 容器技术(122)
- Kubernetes 架构(下)- 每天5分钟玩转 Docker 容器技术(121)
- Prometheus Operator 架构 - 每天5分钟玩转 Docker 容器技术(178)
- Kubernetes 架构(下)- 每天5分钟玩转 Docker 容器技术(121)
- 通过例子理解 k8s 架构 - 每天5分钟玩转 Docker 容器技术(122)
- Kubernetes 架构(上)- 每天5分钟玩转 Docker 容器技术(120)
- Kubernetes 架构(上)- 每天5分钟玩转 Docker 容器技术(120)
- Kubernetes 架构(上)- 每天5分钟玩转 Docker 容器技术(120)
- Prometheus 架构 - 每天5分钟玩转 Docker 容器技术(83)
- Kubernetes 架构(下)- 每天5分钟玩转 Docker 容器技术(121)
- Prometheus 架构 - 每天5分钟玩转 Docker 容器技术(83)
- 通过例子理解 k8s 架构 - 每天5分钟玩转 Docker 容器技术(122)
- Prometheus 架构 - 每天5分钟玩转 Docker 容器技术(83)
- 通过例子理解 k8s 架构 - 每天5分钟玩转 Docker 容器技术(122)
- Prometheus 架构 - 每天5分钟玩转 Docker 容器技术(83)
- Kubernetes 架构(下)- 每天5分钟玩转 Docker 容器技术(121)