docker 学习
2020-11-06 15:45:15 25 举报
docker 学习笔记,帮助初学者了解 docker 工作原理和架构
作者其他创作
大纲/内容
Ubuntu
docker 的注册中心是来保存用户构建的镜像。Registry (注册中心) 分为公共和私有两种。Docker 公司运营公共的 Registry 叫做 Docker Hub。用户可以在 Docker Hub 注册账号,分享并保存自己的镜像Docker 公司提供了公共的镜像仓库 hub.docker.com(Docker 称之为 Repository)提供了庞大的镜像集合供使用一个 Docker Registry 中可以包含多个仓库(Repository);每个仓库可以包含多个标签(Tag)每个标签对应一个镜像通常,一个仓库会包含同一个软件不同版本的镜像,而标签对应该软件的各个版本。我们可以通过 <仓库名>:<标签> 的格式来指定具体是这个软件哪个版本的镜像。如果不给出标签,将以 latest 作为默认标签
redis
也可以客户端和docker服务器在同一台宿主机上
容器 1
base image (基础镜像)
docker 引擎(服务端)
客户端
docker pull
比方说我们创建一个里面要有 Apache + redis 的新镜像
数据卷
容器 4
容器里的持久化数据在容器删除的时候就没有了,数据卷就是解决这个问题的将宿主机的目录映射到容器中的目录,应用程序在容器中的目录读写数据会同步到宿主机上,宿主机与容器间实现数据共享
docker的架构
镜像类似一个 Linux 的文件系统,包含可以运行在 Linux 内核的程序以及相应的数据文件系统层层叠加,最底层的是 bootfs (引导文件系统) 第二层是 rootfs (root 文件系统,它可以是一种或多种操作系统) 最底部的镜像称为 base image (基础镜像)
docker run
启动容器时
bootfs (引导文件系统)
容器 2
Redis
Nginx
apache
docker的镜像
容器
注册中心
镜像和容器的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体容器可以被创建、启动、停止、删除、暂停等当从一个镜像启动容器时,docker 会在该镜像的最顶层加一个读写文件系统,我们在 docker 里运行的程序就是在这个读写层中执行的假设我们在某个容器里修改了 apache 的配置文件,读写文件系统层会复制这个配置文件然后将改动应用到最顶层的读写文件系统里,而不会改变 apache 镜像层,每个镜像层是只读的。所以镜像的每一层都是可以共享的, 这种机制叫做
安装 redis
容器 3
docker build
私有
镜像分层
共有
新镜像是从 base 镜像一层一层叠加生成的。每安装一个软件,就在现有镜像的基础上增加一层镜像分层最大的一个好处就是共享资源例如多个镜像都是从相同的 base 镜像构建起来的,那么整个 docker 服务端只需在磁盘上保存一份 base 镜像;同时内存中也只需加载一份 base 镜像,就可以为所有容器服务了。而且镜像的每一层都可以被共享
客户端-服务器架构,MySQL 也是这种架构程序,也就是说可以通过本地的客户端连接到运行在另一台宿主机的docker守护进程
安装 apache
守护进程
镜像
我们日常使用各种 docker 命令,其实就是在使用 客户端工具 与 Docker 引擎 进行交互
docker的容器
写时复制(copy on write)
读写文件系统
0 条评论
下一页