01-Docker相关概念以及Docker的下载与安装
学习目标
- ①、能够说出 Docker 的作用
- ②、能够说出 Docker 镜像与容器的概念
- ③、能够按照文档完成 Docker 安装
- ④、掌握 Docker镜像与容器相关命令
- ⑤、掌握 Tomcat、Nginx 等软件的常用应用的安装
- ⑥、掌握 Docker 迁移与备份相关命令
- ⑦、能够参考文档编写 Dockerfile 脚本文件
- ⑧、能够按照文档搭建与使用 Docker 私有仓库
一、Docker相关概念以及Docker的下载与安装
1.1、Docker出现的背景
- 软件开发最大的麻烦事之一,就是环境配置。用户计算机的环境都不相同,如何让项目在不同的机器跑起来。受制于2个因素影响
- 1、操作系统的设置各种环境变量
- 2、各种软件的安装
- 我们开发项目有专门的开发环境,做测试时有测试环境,而产品上线就会有生产环境,这个过程经常要迁移项目,不同的环境配置可能导致不可预估的错误,要经常性的改动
- Dokcer把原始的环境一模一样地复制到不同环境下,那么就消除了协作编码时,我的机器能运行,而其他机器不能运行的困境
- Docker如何实现的呢?是通过虚拟化技术实现,并且是直接使用系统的硬件资源,而不需要虚拟化硬件资源,同时使用宿主机的内核,所以新建时无需重新加载内核,因此是秒级
1.2、虚拟化相关概念
1.2.1、虚拟化概念
- 在计算机中,虚拟化(英语:Virtualization)是一种资源管理技术,是将计算机的各种实体资源,如服务器、网络、内存及存储等,予以抽象、转换后呈现出来,打破实体结构间的不可切割的障碍,使用户以更好的方式来应用这些资源。这些资源的新虚拟部分是不受现有资源的架设方式,地域或物理组态所限制。一般所指的虚拟化资源包括计算能力和资料存储
- 在实际的生产环境中,虚拟化技术主要用来解决高性能的物理硬件产能过剩和老的旧的硬件产能过低的重组重用,透明化底层物理硬件,虚拟化就是通过软件打破计算机硬件不可切割的障碍,从而实现对资源的最大化利用
- 虚拟化技术种类很多,如
- 软件虚拟化
- 硬件虚拟化
- 内存虚拟化
- 网络虚拟化
- 桌面虚拟化
- ...
1.2.2、虚拟化架构种类
全虚拟化架构
- 虚拟机的监视器(hypervisor)是类似于用户的应用程序运行在主机的OS之上,如VMware的workstation,这种虚拟化产品提供了虚拟的硬件
- 说明: 虚拟出来的操作系统可以与本机操作系统不一样(内核)。 全虚拟机技术是独享空间独享硬件
OS层虚拟化架构
- 说明:虚拟出来的操作系统与本机的操作系统一样(内核)
硬件层虚拟化架构
1.2.3、小结
- 虚拟化技术的种类
- 全虚拟化技术
- OS层虚拟化技术
- 硬件层虚拟化技术
1.3、Docker相关概念概念
1.3.1、Docker的概念
- Docker 是一个开源的应用容器引擎,基于 Go 语言开发。Docker 可以让开发者打包他们的应用以及相关依赖到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间完全隔离, 更重要的是容器性能开销极低
- Docker的思想来自于集装箱,集装箱解决了什么问题?在一艘大船上,可以把货物规整的摆放起来。并且各种各样的货物被集装箱标准化了,集装箱和集装箱之间不会互相影响。那么我就不需要专门运送水果的船和专门运送化学品的船了。只要这些货物在集装箱里封装的好好的,那我就可以用一艘大船把他们都运走
- Docker将这个模型运用到自己的设计中,唯一不同的是:集装箱运输货物,而Docker运输软件
1.3.2、Docker的优点
- 使用Docker可以实现开发人员的开发环境、测试人员的测试环境、运维人员的生产环境的一致性
1.3.3、容器&虚拟机对比
-
容器的体积都非常小,因为它是使用宿主机的基础类库
-
vm虚拟机 容器 占用磁盘空间 非常大,GB级 小,MB甚至KB级 启动速度 慢,分钟级 快,秒级 运行形态 运行于Hypervisor上 直接运行在宿主机内核上 并发性 一台宿主机上十几个,最多几十个 上百个,甚至数百上千个 性能 逊于宿主机 接近宿主机本地进程 资源利用率 低 高 -
小结
- Docker容器是在操作系统层面上实现虚拟化,直接复用本地主机的操作系统,而传统虚拟机则是在硬件层面实现虚拟化。与传统的虚拟机相比,Docker优势体现为启动速度快、占用体积小
1.3.4、Docker的组成结构
-
如下所示
-
名称 说明 Docker 镜像 (Images) Docker 镜像是用于创建 Docker 容器的模板。镜像是基于联合文件系统的一种层式结构, 由一系列指令一步一步构建出来(只读不能修改)。 Docker 容器 (Container) 容器是独立运行的一个或一组应用。镜像相当于类,容器相当于类的对象,相当于操作系统 Docker 客户端(Client) Docker 客户端通过命令行或者其他工具使用 Docker API 与 Docker 的守护进程通信。 Docker 主机(Host) 一个物理或者虚拟的机器用于执行 Docker 守护进程和容器。 Docker守护进程 是Docker服务器端进程,负责支撑Docker 容器的运行以及镜像的管理。 Docker 仓库 DockerHub(Registry) Docker 仓库用来保存镜像,可以理解为代码控制中的代码仓库。 Docker Hub提供了庞大的镜像集合供使用。用户也可以将自己本地的镜像推送到Docker仓库供其他人下载。 -
官方仓库
-
小结
- Docker的组成部分由哪些元素构成
- ①、容器 (独立一个操作系统,只不过该操作系统只安装了一个软件)
- ②、镜像(镜像就是相当于一个软件的安装包)
- ③、仓库(公共仓库,私有仓库)
- Docker的组成部分由哪些元素构成
1.3.5、Docker的安装
-
以下是在CentOS7中安装Docker的步骤
-
# 1. yum 更新已有rpm包,升级linux内核(不做也可以) yum update # 2. 安装需要的软件包,yum-util提供yum-config-manager功能,另外两个是devicemapper驱动依赖 yum install -y yum-utils device-mapper-persistent-data lvm2 # 3. 设置yum源为阿里云 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # 4. 安装docker【docker-ce: 社区版,免费;docker-ee:企业版,收费】 yum install docker-ce -y # 5. 安装后查看docker版本 docker -v
-
这里就不演示了,按照步骤执行命令即可
-
1.3.6、Docker设置镜像源
- ustc 是老牌的linux镜像服务提供者了,还在遥远的ubuntu 5.0.4版本的时候就在用,ustc 镜像加速器速度很快。它的优势之一就是不需要注册,是真正的公共服务
①、创建并编辑文件/etc/docker/daemon.json
-
命令如下所示
-
# 执行如下命令 mkdir /etc/docker vim /etc/docker/daemon.json
-
②、添加镜像源地址链接
-
在文件中添加如下内容
-
{ "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"] }
-
③、重启Docker服务
-
一旦修改daemon.json配置文件,docker的服务必须要重启
-
systemctl restart docker
小结
- 设置镜像源地址的作用
- 设置docker远程下载镜像的地址(记住如果某些镜像没法下载的时候,记得更换地址)