标签:文件系统 虚拟 ystemd 完整性 span 权限 cat 配置文件 多个
本文内容概述
- 对docker架构图的理解
- 配置远端客户机请求本地Docker主机
- 对镜像(Image),容器(Container),仓库(Registry)的理解
Docker架构图
Docker的架构组成
- Docker 客户端 - Client端
- Docker 服务器端 - DOCKER_HOST
- Docker Registry - Docker的镜像仓库
- Docker 采用的是 Client/Server(C/S) 架构。客户端向服务器发送请求,服务器负责构建、运行和分发容器。
- 不论是C端还是S端都是由docker这一个程序来提供,这个程序包含很多的子程序
- 其中有一个子程序docker daemon,表示:运行为守护进程
- 运行docker daemon,就是将这台主机变成docker的守护进程服务器
- 它支持三种类型套接字:ipv4:端口;ipv6:端口;Unix sockfile Unix sockfile是监听在一个本地的文件上
- 它可以监听在某个套接字之上,为了安全起见,默认只提供本机的Unix sockfile套接字,这样就只允许客户端是本地的
Docker 客户端
- 最常用的 Docker 客户端是 docker 命令。通过 docker 可以方便地在 Host 上构建和运行容器。docker 支持很多操作(子命令),后面会逐步用到。
[root@node01~]#docker 通过这条命令我们可以查看到很多docker使用的命令
- 客户端和服务器可以运行在同一个 Host 上,客户端也可以通过 socket 或 REST API 与远程的服务端通信。
Docker 服务器端
它是一个真正运行容器的主机
docker images 和 docker containers 是docker主机上非常重要的组成部分,基础镜像大多来自于docker registry
Docker daemon 是服务器组件,以 Linux 后台服务的方式运行。
Docker daemon 运行在 Docker host 上,负责创建、运行、监控容器,构建、存储镜像。
默认配置下,Docker daemon 只能响应来自本地 Host 的客户端请求。如果要允许远程客户端请求,需要在配置文件中打开 TCP 监听,步骤如下:
编辑配置文件vim /usr/lib/systemd/system/docker.service 在环境变量 ExecStart 后面添加 -H tcp://0.0.0.0,允许来自任意 IP 的客户端连接。
配置完成后重启docker daemon
[root@node01~]#systemctl daemon-reload
[root@node01~]#systemctl restart docker
docker主机的IP地址为172.16.117.12,现在用另外的一台主机访问docker 主机
[root@docker]# docker -H 172.16.117.12 version
Client: Docker Engine - Community
Version: 19.03.6
API version: 1.40
Go version: go1.12.16
Git commit: 369ce74a3c
Built: Thu Feb 13 01:29:29 2020
OS/Arch: linux/amd64
Experimental: false
.................
Image镜像--概述
- 镜像是 Docker 容器的基石,容器是镜像的运行实例,有了镜像才能启动容器。
- docker镜像含有启动容器所需要的文件系统及其内容,因此,其用于创建并启动docker容器
- docker镜像是分层构建的,所以可以共享,可以使用同一个镜像启动N多个容器
- docker镜像也需要在docker主机的本地存储
- 采用分层构建机制,最底层为bootfs,其上层为rootfs
- bootfs:用于系统引导的文件系统,包括bootloader和kernel,容器启动完成后会被卸载以节约内存资源。
- rootfs:位于bootfs之上,表现为docker容器的根文件系统
- 传统模式下,系统启动之时,内核挂载rootfs时首先将其挂载为”只读“模式,完整性自检完成后将其重新挂载为读写模式
- docker中,rootfs由内核挂载为”只读“模式,而后通过”联合挂载“技术额外挂载一个”可写“层。
- 位于下层的镜像称为父镜像(paient images),最底层的称为基础镜像(base image)
- 最上层为”可读写层“,其下的均为只读层。
Container容器--概述
docker利用容器来运行应用,容器是从镜像创建的运行实例
以一个镜像运行一个容器,是在镜像这一层的上一层增加了一个可写层。
它可以被启动,开始、停止、删除、每个容器都是互相隔离的,保证安全的平台,可以把容器看做是一个简易版的linux环境(包括root用户权限、镜像空间、用户空间和网络空间等)和运行再其中的应用程序。
Registry仓库--概述
- Registry 是存放 Docker 镜像的仓库,Registry 分私有和公有两种。
- Docker Hub(https://hub.docker.com/) 是默认的 Registry,由 Docker 公司维护,上面有数以万计的镜像,用户可以自由下载和使用。
- 出于对速度或安全的考虑,用户也可以创建自己的私有 Registry。
- 开发人员可以在笔记本上构建镜像并上传到 Registry,然后 QA 人员将镜像下载到物理或虚拟机做测试,最终容器会部署到生产环境。
- 启动容器时docker daemon会试图从本地获取相关镜像;本地镜像不存在时,其将从Registry中下载该镜像保存到本地。
- 一个registry的组成部分有两个:
- Repository
- 由特定的docker镜像的所有迭代版本组成的镜像仓库
- 一个registry中可以存在多个Repository
- repository可分为”顶层仓库“和”用户仓库“
- 用户仓库名称格式为”用户名、仓库名“
- 每个仓库可以包含多个Tag(标签),每个标签对应一个镜像
- Index
- 维护用户账户、镜像的校验以及公共命名空间的信息
- 相当于registry提供了一个完成用户认证等功能的检索接口
002Docker学习__对docker架构的理解
标签:文件系统 虚拟 ystemd 完整性 span 权限 cat 配置文件 多个
原文地址:https://www.cnblogs.com/lizhi199322/p/13170161.html