栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

docker---架构概述及安装

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

docker---架构概述及安装

目录
  • 一、docker概述
    • 1.为什么会有docker出现?
    • 2.docker架构
      • 1.Docker Daemon
      • 2.Docker Client
      • 3. Docker 仓库
      • 4.Docker 对象
        • 4.1 镜像
        • 4.2 容器
        • 4.3 网络
        • 4.4 存储
  • 二、部署docker
    • 1.需要的依赖
    • 2. 配置阿里docker镜像源
    • 3.本地索引缓存
    • 4.安装docker
    • 5.阿里云镜像加速
      • 5.1 登陆阿里云找到容器服务,找到镜像加速器
      • 5.2 找到镜像加速地址
      • 5.3 配置使用
    • 6.测试docker
    • 7.run的运行流程图


一、docker概述
  • 官网:www.docker.com

  • docker官方镜像仓库:hub.docker.com

  • Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口

1.为什么会有docker出现?
  • 软件开发一般大致分为两个环节,第一是本地开发, 第二是服务器部署。如果一个项目本地开发好了,那么放到服务器上,有时候安装环境会非常复杂,也正是因为其复杂性,大公司才会有专门负责项目发布的运维人员。为了解决这个问题,docker技术应运而生。

  • 面对上述问题,docker设想是交付运行环境如同海运,OS如同一个货轮,每一个在OS基础上的软件都如同一个集装箱,用户可以通过标准化手段自由组装运行环境,同时集装箱的内容可以由用户自定义,也可以由专业人员制造。这样,交付一个软件,就是一系列标准化组件的集合的交付,如同乐高积木,用户只需要选择合适的积木组合,并且在最顶端署上自己的名字(最后一个标准化组件是用户的app)。这也就是基于docker的PaaS产品的原型。

2.docker架构
  • Docker 使用客户端-服务器架构,包含了三个主要部分:dockerd守护进程、REST API接口层、cli接口层(管理容器、镜像、网络、存储等等)。
  • Docker 客户端与 Docker 守护进程通信,后者负责构建、运行和分发Docker 容器等繁重的工作。
  • Docker 客户端和守护进程可以运行在同一个系统上,或者您可以将一个 Docker 客户端连接到一个远程 Docker 守护进程。
  • Docker 客户端和守护进程通过 UNIX 套接字或网络接口使用 REST API 进行通信。

1.Docker Daemon
  • Docker的守护进程监听对于API的请求,并且管理Docker对象,包括容器、镜像、网络、存储等。不同守护进程之间可以互相通信,从而构成集群服务。
2.Docker Client
  • Docker 客户端 docker 命令是与Docker交互的主要方式。
3. Docker 仓库
  • Docker仓库保存Docker镜像,可以通过docker pull以及docker push来下载、上传镜像文件。
4.Docker 对象 4.1 镜像
  • 镜像是一个用来构建容器的只读模版,通常一个镜像会依赖其他的镜像。例如我们编写的一个Node程序需要依赖Node环境,那在构建这个应用镜像时就需要依赖基础的Node镜像。

  • 我们可以创建自己的镜像,也可以使用仓库中已经创建好的镜像。创建镜像需要创建一个 Dockerfile 文件。每个Dockerfile定义镜像文件中的一层,当定义发生变化的时候,只需要更新着一层的文件即可。

4.2 容器
  • 容器是一个运行时状态下的镜像,通过docker命令我们可以创建、启动、停止、删除容器。
  • 例如以下命令:$ docker run -i -t ubuntu /bin/bash实际上经过了6个步骤:
    1、如果本地没有 ubuntu 镜像,那么首先执行 docker pull ubuntu镜像文件到本地;
    2、自动创建一个容器,相当于命令 dock container create;
    3、Docker分配一块文件系统给容器;
    4、Docker创建网络接口、分配网络地址;
    5、启动容器,并且执行/bin/bash命令;
    6、我们可以在bash中执行命令,执行exit后,退出ubuntu的命令行,同时容器关闭。
4.3 网络
  • Docker的网络子系统是可插拔的,支持bridge、host、overlay、macvlan、none等网络模式。熟悉虚拟机的同学可能对这些有概念,想要了解更多参考这里。
4.4 存储
  • 默认情况下,容器中的应用生成的所有文件都存放在一个可写的容器层,意味着这些数据的生命周期和容器保持一致,一旦容器重启数据就丢了。另外,这些文件与容器高度关联,想要将这些文件分享给其他的容器或者设备非常困难。

  • 为此,Docker提供了两种方案解决数据问题:Volumes、bind mount。不管使用哪种方式,容器内看起来都是一样的,或者作为一个文件夹存在、或者作为一个文件存在。

  • 上图说明了不同方式的区别,Volumes 是存在本地文件系统中的一部分,其他应用程序不能对这个文件系统进行修改,Linux下在/var/lib/docker/volumes。这是数据持久化的最好方案。Bind Mount 允许将主机中任何位置的数据挂载,这些数据的读写没有收到保护。tmps是存储在主机内存中的数据。

二、部署docker 1.需要的依赖
yum install -y yum-utils
2. 配置阿里docker镜像源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
3.本地索引缓存
yum makecache fast
4.安装docker
yum install docker-ce docker-ce-cli containerd.io

#启动docker
systemctl start docker


#查看是否安装成功
docker version
5.阿里云镜像加速 5.1 登陆阿里云找到容器服务,找到镜像加速器

5.2 找到镜像加速地址

5.3 配置使用
sudo mkdir -p /etc/docker

sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://g39835el.mirror.aliyuncs.com"]
}
EOF

sudo systemctl daemon-reload

sudo systemctl restart docker
6.测试docker
docker run hello-world

  • 运行成功
  • docker images可以看到刚才下载的hello-world

7.run的运行流程图

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/460390.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号