003_详解docker架构
来源:互联网 发布:hbase是关系数据库吗 编辑:程序博客网 时间:2024/06/07 17:44
环境声明
OS: CentOS Linux 7
kernel: 3.10.0-514.2.2.el7.x86_64
docker version: docker-ce-17.03.1.ce
Docker 核心组件(一)
1. Docker 客户端 client
2. Docker 服务器 docker daemon
3. Docker 镜像 image
4. 镜像仓库 Registry
5. Docker容器 container
Docker 架构(二)
客户端/服务器 (C/S)架构模式,客户端向服务器发送请求,服务器负责创建,运行和分发容器;客户端和服务器可以运行在同一个 主机 上,客户端也可以通过 socket 或 REST API 与远程的服务器通信;
Docker 架构图
一、Docker 客户端
常用的 docker 命令 就是 Docker 客户端的一种,通过 docker 可以方便的在 主机上创建和运行容器
docker 有很多子命令,以后会逐步用到( 圈住那一部分,没有圈住的是跟docker这个字符相关的命令)
二、Docker 服务器
Docker daemon 是服务器组件,以服务的方式运行,负责创建、运行、监控容器,并存储镜像;
Docker daemon 默认只能响应本地的客户端请求; 如果需要允许远程客户端请求,需要在配置文件中打开 TCP 监听,步骤如下:
1.编辑 “docker启动配置文件” “/etc/systemd/system/multi-user.target.wants/docker.service” ,在环境变量ExecStart后面添加-H tcp://0.0.0.0 ,允许来自任意 ip 的客户端连接,0.0.0.0之后不添加端口,默认为2375 (需要防火墙开启 2375 端口 )
2.重启 Docker daemon
systemctl restart docker.service
3.在另一台装了 docker-ce 的服务器上 执行如下命令,即可与远程服务器通信
三、Docker镜像
可将 Docker 镜像比作只读模板,通过它可以创建 Docker 容器; 镜像是 Docker 容器的基石,容器是镜像的运行实例,有了镜像才能启动容器;
1.镜像生成方式
1) 可以从无到有开始创建镜像
2) 也可以下载并使用别人创建好的现成的镜像
3) 还可以在现有镜像上创建新的镜像
我们可以将镜像的内容和创建步骤描述在一个文本文件中,这个文件被称作 Dockerfile ,通过执行 docker build <docker_file> 命令可以构建出 Docker 镜像;
docker build -t 指定tag标签,即镜像名 PATH
docker build -t hello .
2.镜像的内部构造
要说这个话题,咱们的先知道 Linux 系统是怎么构造的
1)Linux 操作系统由内核空间 和用户空间 组成 ,如下图
2)详解内核空间和用户空间
内核空间是 kernel ,Linux 刚启动时会加载 bootfs 文件系统,之后再将 bootfs 卸载;
用户空间的文件系统是 rootfs,就是咱们经常用到的 /etc /dev /proc /bin 这些目录;
对于镜像来说,底层直接使用宿主机的 kernel,自己只需要提供 rootfs 就行了,而不同的 Linux 发行版主要区别就是 rootfs (centos 使用 systemd 和yum,ubuntu 使用 upstart 和 apt 管理软件包,这些都是用户空间上的区别, Linux kernel 的区别就是ubuntu一般采用的都是比较高版本的内核,而centos则是采用比较稳定的,所以差别不是很大),所以 Docker 可以同时支持多种 Linux镜像,模拟出多种 Linux 操作系统环境; 如下图所示
对于一个精简的 OS ,rootfs 可以很小,只需要包括最基本的命令、工具和程序库即可;(alpine 一个不到10MB的镜像)所以 docker 镜像 那么小就不足为其了
Base镜像
base镜像有两层含义:
1. 不依赖其他镜像,从scratch 构建
2. 其他镜像可以为之进行扩展
能称为 base 镜像的通常都是各种 Linux 发行版的 Docker 镜像, 比如 CentOS 、 Ubuntu 、 Debian 、OpenSuse 等
下载镜像:
docker pull centos
这里声明一下:
1. base 镜像只是在用户空间与发行版本一直,kernel 版本是会随着宿主机的变化而变化的(不明白,再看一下上边的内容)
2. 容器只能使用 宿主机 的 kernel ,并且不能修改
所有容器都共用 宿主机 的 kernel,在容器中没办法对 kernel 升级 ,如果对 kernel 版本有要求,不建议使用容器,采用虚拟机更合适;
四、镜像仓库_Registry
Registry 是存放 Docker 镜像的仓库, Registry 分私有 和 公有 两种
Docker Hub (https://hub.docker.com) 是默认的 Registry , 由 Docker 公司维护, 上面有数以万计的镜像,用户可以自行下载使用( 不过国内的速度。。。); 用户也可以创建自己私有的 Registry
docker pull命令可以从 Registry 下载镜像
Docker run 命令则是先下载镜像( 本地没有的情况 ) ,然后再启动个容器
五、Docker容器
Docker 容器就是 Docker 镜像运行的实例,用户可以通过 CLI ( docker ) 或是 API 启动、停止 、移动或删除容器;
阅读全文
0 0
- 003_详解docker架构
- Docker架构图详解
- Docker 架构详解
- 架构-Docker
- docker 架构
- docker架构
- Docker 架构
- Docker 架构
- Docker架构
- Docker源码分析:Docker架构
- Docker详解
- docker 详解
- DOCKER 详解
- Docker详解
- docker详解
- Struts框架_概述、搭建、架构、配置详解及ActionAPI
- Docker 架构之Daemon
- 理解Docker架构
- 11.数据库总结
- CRC校验
- layer弹出层不居中解决方案,仅显示遮罩,没有弹窗
- struct timespec 和 struct timeval
- python 数据分析-numpy
- 003_详解docker架构
- 12.数据库概念相关
- 回头看Android之service
- cmake生成vs解决方案时的项目文件夹
- 函数和数组的小知识点笔记
- 【QT】文件对话框
- nagiosgraph的配置调整
- Leetcode 17. Letter Combinations of a Phone Number
- 程序员必须弄懂结构体,结构体基础知识