一、Docker 概述
1、docker 是什么
Docker是一个开源的应用容器引擎,基于go语言开发并遵循了apache2.0协议开源。
Docker是在Linux容器里运行应用的开源工具,是一种轻量级的“虚拟机”。
Docker 的容器技术可以在一台主机上轻松为任何应用创建一个轻量级的、可移植的、自给自足的容器。
容器化越来越受欢迎,因为容器是:
●灵活:即使是最复杂的应用也可以集装箱化。
●轻量级:容器利用并共享主机内核。
●可互换:可以即时部署更新和升级。
●便携式:可以在本地构建,部署到云,并在任何地方运行。
●可扩展:可以增加并自动分发容器副本。
●可堆叠:可以垂直和即时堆叠服务。
2、容器和 虚拟机 的区别(面试题)
容器是在linux上本机运行,并与其他容器共享主机的内核,它运行的是一个独立的进程,不占用其他任何可执行文件的内存,非常轻量。
虚拟机运行的是一个完整的操作系统,通过虚拟机管理程序对主机资源进行虚拟访问,相比之下需要的资源更多。
容器 | 虚拟机 |
---|---|
所有突器共享宿主机.内核 | 每个虚拟机都有独立的操作系统和内核 |
使用namespace隔离资源,使用cgroup限制资源的最大使用量 | 完全隔离,每个虚拟机都有独立的硬件资源 |
秒级启动速度 | 分钟级启动速度 |
容器相当于宿主机的进程,性能几乎没有损耗 | 需要hypervisor虚拟机管理程序对宿主机资源虚拟访问,至少不20~50%资源损耗 |
单机容量能够支持成百上千个容器 | 单机空量只能支持最多几个虚拟机 |
3、docker 三个核心概念
镜像:是创建容器的基础,也是一个只读的模板文件,里面包含容器中的应用程序所需要的所有内容(包含程序运行文件、配置文件、这行库文件、操作系统、依赖包 )
容器:是用镜像运行的实例,容器可以被创建、启动、停止、删除,每个容器之间默认是相互资源隔离的
仓库: 是用来保存镜像的地方,有公有仓库和私有仓库之分
4、Linux Namespace的6大类型(重点)
项番 | 类型 | 功能说明 |
---|---|---|
No.1 | MNTNamespace | 提供磁盘挂载点和文件系统的隔离能力 |
No.2 | IPC Namespace | 提供进程间通信的隔离能力 |
No.3 | Net Namespace | 提供网络隔离能力 |
No.4 | UTSNamespace | 提供主机名隔离能力 |
No.5 | PID Namespace | 提供进程隔离能力 |
No.6 | User Namespace | 提供用户隔离能力 |
二、安装 Docker
目前 Docker 只能支持 64 位系统。
systemctl stop firewalld.service
setenforce 0
1、安装依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-utils:提供了 yum-config-manager 工具。
device mapper: 是Linux内核中支持逻辑卷管理的通用设备映射机制,它为实现用于存储资源管理的块设备驱动提供了一个高度模块化的内核架构。
device mapper存储驱动程序需要 device-mapper-persistent-data 和 lvm2。
2、设置国内镜像源
清华大学docker源:yum-config-manager --add-repo https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo (注意add前面为双横杠)
阿里云docker源:yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo (注意add前面为双横杠)
3、安装 Docker-CE并设置为开机自动启动
yum install -y docker-ce docker-ce-cli containerd.io
systemctl start docker.service
systemctl enable docker.service
安装好的Docker系统有两个程序,Docker服务端和Docker客户端。其中Docker服务端是一个服务进程,负责管理所有容器。 Docker客户端则扮演着Docker服务端的远程控制器,可以用来控制Docker的服务端进程。大部分情况下Docker服务端和客户端运行在一台机器