Docker初始

什么是 Docker

Docker 开源项目背景

Docker 是基于 Go 语言实现的开源容器项目 它诞生于 2013 年年初,最初发起者是dotCloud 公司 Docker 自开源后受到业界广泛的关注和参与,目前已有 80 多个相关开源组
件项目(包括 Containerd Moby Swarm 等),逐渐形成了围 Docker 容器的完整的生态体系;dotCloud 公司也随之快速发展壮大,在 2013 年年底直接改名为 Docker Inc ,并专注于Docker 相关技术和产品的开发,目前已经成为全球最大的 Docker 容器服务提供商
Docker 项目已加 Linux 基金会,并遵循 Apache 协议, 全部开源代码均在 https: //github com/docker 项目仓库进行维护 Linux 基金会最近一次关于“最受欢迎的开源项目”的调查中, Docker 仅次于 2010 年发起的 Open Stack 项目,并仍处于上升趋势2014 年, Docker 镜像下载数达到了一百万次, 2015 年直接突破十亿次, 2017 年更是突破了惊人的百亿次

Linux 窑器到 Doker

在LXC 的基础上, Docker 步优化了容器的使用体验,让它进入寻常百姓家 首先,Docker 提供了各种容器管理工具(如分发、版本、移植等),让用户无须关注底层的操作,更加简单明了地管理和使用容器;其次, Docker 通过引人分层文件系统构建和高效的镜像机制,降低了迁移难度,极大地改善了用户体验 用户操作 Docker 容器就像操作应用自身一样简单。
早期的 Docker 代码实现是直接基于 LXC 0.9 版本开始, Docker 开发了 li bcotai er 项目作为更广泛的容器驱动实现,从而替换掉了 LXC 的实现 目前, Docker 还积极推动成立了 rune 标准项目 ,井贡献给开放容器联盟,试图让容器的支持不再局限于 Linu 操作系统,而是更安全、更开放、更具扩展性别。

为什么要使用 Docker

对开发和运维( DevOps )人员来说,最梦寐以求的效果可能就是一次创建或配置,之后可以在任意地方、任意时间让应用正常运行,而 Docker 恰恰是可以实现这一终极目标的“瑞士军刀” 具体说来,在开发和运维过程中, Docker 具有如下几个方面的优势:

  • 更快速的交付和部署使用 Docker ,开发人员可以使用镜像来快速构建一套标准的开发环境;开发完成之后,测试和运维人员可以直接使用完全相同的环境来部署代码只要是开发测试过的代码,就可以确保在生产环境无缝运行 Docker 可以快速创建和删除容器,实现快速迭代,节约开发、测试、部署的大量时间 并且,整个过程全程可见,使团队更容易理解应用的创建和工作过程。

  • 更高效的资源利用运行 Docker 容器不需要额外的虚拟化管理程序( Virtual Machine Manag r, VMM ,以及 Hypervisor )的支持, Docker 是内核级的虚拟化,可以实现更高的性能,同时对资源的额外需求很低 与传统虚拟机方式相比, Docker 的性能要提高 1-2个数量级。

  • 更轻松的迁移和扩展Docker 容器几乎可以在任意的平台上运行,包括物理机、虚拟机、公有云、私有云 个人电脑 服务器等,同时支持主流的操作系统发行版本这种兼容性让用户可以在不同平台之间轻松地迁移应用。

  • 更简单的更新管理使用 Dockerfile ,只需要小小的配置修改,就可以替代以往大量的更新工作 所有修改都以增 的方式被分发和更新,从而实现自动化并且高效的容器管理。

Docker 与虚拟化

特性 Docker 虚拟机
运行形态 直接运行于宿主机的内核上,不同容器共享同一个Linux内核 运行于Hypervisior上
并发性 一台宿主机可以启动成百上千个容器 最多几十个虚拟机
性能 接近宿主机本地进程 逊于宿主机
资源利用率
隔离性 安全隔离 完全隔离

Docker核心概念

  • 镜像 (Image)

  • 容器(Container)

  • 仓库(Reposit)
    只有理解了这三个核心概念,才能顺利地理解 Docker 容器的整个生命周期

  • Docker 镜像
    Docker 镜像类似于虚拟机镜像,可以将它理解为一个只读的模板。
    例如,一个镜像可以包含一个基本的操作系统环境,里面仅安装了 Apache 应用程序(或用户需要的其他软件) 可以把它称为一个 Apache 镜像。
    镜像是创建 Docker 容器的基础

  • Docker 容器
    Docker 容器类似于一个轻 级的沙箱, Docker 利用容器来运行和隔离应用
    容器是从镜像创建的应用运行实例 它可以启动、开始、停止 删除,而这些容器都是彼此相互隔离、互不可见的可以把容器看作一个简易版的 Linux 系统环境(包括 root 用户权限、进程空间、用户空间和网络空间等)以及运行在其中的应用程序打包而成的盒子。

  • Docker 仓库
    存放镜像的一个场所,仓库分为公开仓库和私有仓库。 最大的公开仓库是Docker hub(hub.docker.com),国内公开仓库(dockerpool.com)

Docker 架构

Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。
Docker 容器通过 Docker 镜像来创建。

架构一

  • distribution 负责与docker registry交互,上传洗澡镜像以及v2 registry 有关的源数据

  • registry负责docker registry有关的身份认证、镜像查找、镜像验证以及管理registry mirror等交互操作

  • image 负责与镜像源数据有关的存储、查找,镜像层的索引、查找以及镜像tar包有关的导入、导出操作

  • reference负责存储本地所有镜像的repository和tag名,并维护与镜像id之间的映射关系

  • layer模块负责与镜像层和容器层源数据有关的增删改查,并负责将镜像层的增删改查映射到实际存储镜像层文件的graphdriver模块

  • graghdriver是所有与容器镜像相关操作的执行者

架构二


这个架构图更加清晰了架构

  • docker daemon就是docker的守护进程即server端,可以是远程的,也可以是本地的,这个不是C/S架构吗,客户端Docker client 是通过rest api进行通信

  • docker cli 用来管理容器和镜像,客户端提供一个只读镜像,然后通过镜像可以创建多个容器,这些容器可以只是一个RFS(Root file system根文件系统),也可以ishi一个包含了用户应用的RFS,容器再docker client中只是要给进程,两个进程之间互不可见

  • 用户不能与server直接交互,但可以通过与容器这个桥梁来交互,由于是操作系统级别的虚拟技术,中间的损耗几乎可以不技

Docker安装

环境

  • Centos7 出外网

配置网卡转发

## 配置网卡转发,看值是否为1
$ sysctl -a |grep -w net.ipv4.ip_forward
net.ipv4.ip_forward = 1

## 若未配置,需要执行如下
$ cat <<EOF >  /etc/sysctl.d/docker.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward=1
EOF
$ sysctl -p /etc/sysctl.d/docker.conf

Yum安装docker

## 下载阿里源repo文件
curl -o /etc/yum.repos.d/Centos-7.repo http://mirrors.aliyun.com/repo/Centos-7.repo
curl -o /etc/yum.repos.d/docker-ce.repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

## yum安装
yum install -y docker-ce
## 查看源中可用版本
yum list docker-ce --showduplicates | sort -r
## 安装指定版本
yum install -y docker-ce-18.09.9

## 配置源加速
mkdir -p /etc/docker
vi /etc/docker/daemon.json
{
  "registry-mirrors" : [
    "https://dockerhub.azk8s.cn",
    "https://reg-mirror.qiniu.com",
    "https://registry.docker-cn.com",
    "https://ot2k4d59.mirror.aliyuncs.com/"
  ]
}

## 设置开机自启
systemctl enable docker  
systemctl daemon-reload

## 启动docker
systemctl start docker 

## 查看docker信息
docker info

posted @ 2020-04-13 08:42  刘新元  阅读(221)  评论(0编辑  收藏  举报