Docker系列--- Docker 概述 | 入门 | 安装 | 详细讲解

一、Docker 概述

在这里插入图片描述

Docker 是在 Linux 容器里运行应用的一种开源工具,是一种轻量级的虚拟机,诞生于 2013 年

Docker 项目加入了 Linux 基金会,全部开源代码均在 https://github.com/docker 上进行维护,官网为 https://www.docker.com/,Docker 与 OpenStack 同为最受欢迎的云计算开源项目


Docker 的 Logo 设计为蓝色的鲸鱼,拖着许多集装箱,如上图所示,鲸鱼可以看做是宿主机,集装箱可以理解为是相互隔离的容器,每个集装箱内都有自己的应用程序(沙箱/沙盘)

Docker 的设计理念:Build、Ship and Run Any APP,Any where,即通过对应用组件的封装、发布、部署和运行等生命周期的管理,达到应用组件级别的“一次封装、到处运行”的目的

这里的组件,可以是一个应用,也可以是一套服务,甚至是一个完整的操作系统

二、Docker 容器与传统虚拟化的比较

在这里插入图片描述

①Docker 的优点

有没有这样一种技术,能够方便地创建运行在云平台上的应用,可以脱离底层的硬件支持,且在任何时间任何地点均可获取这些资源?(Docker!)

Doker 的容器技术可以在一台主机上轻松地为任何应用创建一个轻量级的、可移植的、自给自足的容器,通过容器来打包应用程序,简化了重新部署、调试这些琐碎的重复工作,极大的提高了工作效率!

简答点说,就是彼此都是使用的是 Docker,那么就能完成平滑的过度,实现任意服务的迁移,也即这个服务时跑在 Docker 容器上的,别的不管!

例如:需要把服务器从腾讯云迁移到阿里云,如果采用的是 Docker 容器技术,整个迁移的过程只需要在新的服务器上启动我们需要的容器就可以了

②Docker 与传统虚拟机相比具有显著的优势

1.Docker 容器的启动与停止可以在秒级实现
2.Docker 核心解决的问题是利用容器来实现类似 VM 的功能,实现以更加节省的硬件资源提供给用户更多的计算资源
3.Docker 容器除了运行其中的应用之外,基本不消耗额外的系统资源,在保持性能的同时,有效地减少了系统开销,使得能在一台主机上运行数千个 Docker 容器
4.Docker 运行方便,可以通过 Dockerfile 配置文件支持灵活的自动化创建和部署
特性DockerVM
启动速度秒级分钟级
运行能力接近原生损耗50%作用
磁盘占用MBGB
系统支持量上千几十个
隔离性进程隔离系统隔离
操作系统支持Linux几乎所有
封装程度只打包项目代码和依赖关系,共享宿主机内核完整操作系统,与宿主机隔离

使用docker有什么意义?
docker引擎统一了基础设施环境-docker环境,
docker引擎统一了程序打包(装箱)方式-docker镜像
docker引擎统一了程序部署(运行)方式-docker容器

容器是依赖于内核来隔离,彼此的关系像共享一样,所以安全性较之虚拟机差一些,毕竟不是完全隔离。所以若一个容器被黑客攻破,宿主机基本也就没了~
这里也不是完全没有办法,那就是 cgroup 资源分配,其能提供一定的安全机制

Docker 拥有的众多优势与操作系统虚拟化的特点是分不开的:
传统虚拟机需要有额外的虚拟机管理程序和虚拟机操作系统层
而 Docker 容器是直接再操作系统层面之上实现的虚拟化

三、Docker 的核心概念

1.镜像(Image)
Docker 镜像是创建容器的基础,类似于虚拟机的快照

可以理解为是一个面向 Docker 容器引擎的只读模板,比如:
一个镜像可以是一个完整的 CentOS 操作系统环境,称之为一个 CentOS 镜像
一个安装了 MySQL 的应用程序,称之为是一个 MySQL 镜像
Docker 提供了简单的机制来创建和更新现有的镜像,用户也可以从网上下载已经做好的应用镜像来直接使用,好强大啊!

2.容器(Container)
Docker 的【容器】是【从镜像创建的运行实例】,它可以被【启动、停止和删除】,容器即服务

创建的每一个容器都是相互隔离、互不可见的,相互之间隔离性超强,从而保证平台的安全性
可以把容器看做是一个简易版本的 Linux 环境,Docker 可以利用容器来运行和隔离一个个应用

3.仓库(Repository)
Docker 仓库时用来集中保存镜像的地方

创建完自己的镜像后,可以使用【push】命令将其上传至【公共仓库(public)】或【私有仓库(Private)】
之后,在另一台机器上使用这个镜像,直接【pull】下来就可以了,不要太方便!
仓库注册服务器【Registry】是存放仓库的地方,其中包含了多个仓库,每个仓库存放某一类镜像,并使用不同的标签【tag】来区分它们,目前最大的公共仓库是【Docker Hub】

四、名称空间

Docker使用一种称为namespaces提供容器的隔离工作区的技术。运行容器时, Docker会为该容器创建一组名称空间。这些名称空间提供了一层隔离。容器的每个方面都在单独的名称空间中运行,并且其访问仅限于该名称空间。

mount  文件系统,挂载点
user   操作进程的用户和用户组
pid     进程编号
uts     主机名和主机域
ipc     信号量、消息队列,共享内存(理解,不同的应用调用的时候应该使用不同的内存空间)
net     网络设备、网络协议栈、端口等
该pid命名空间:进程隔离(PID:进程ID)
该net命名空间:管理网络接口(NET:网络)
该ipc命名空间:管理访问IPC资源(IPC:进程间通信)
该mnt命名空间:管理文件系统挂载点(MNT: mount)
该uts命名空间:隔离内核和版本标识符。(UTS: Unix时间共享系统)

Docker 架构

在这里插入图片描述

Docker使用客户端-服务器架构。
Docker客户端与Docker守护进程进行对话,该守护进程完成了构建,运行和分发Docker容器的繁重工作。

Docker区别于传统的虚拟化,不需要虚拟硬件资源,直接使用容器引擎,所以速度快

Docker Client:客户端/提供一个与用户交互,展示的平台+管理、控制docker服务端(功能)的工具
Docker客户端是许多Docker用户与Docker交互的主要方式。当您使用诸如之类的命令时docker run客户端会将这些命令发送到dockerd,以执行这些命令。该docker命令使用DockerAPI, Docker客户端可以与多个守护程序通信。

Docker daemon:守护进程
Docker守护程序(dockerd)侦听DockerAPI请求并管理Docker对象,例如图像,容器,网络和卷。守护程序还可以与其他守护程序通信以管理Docker服务。

Docker images:镜像容器
Docker container:容器
Docker registry:镜像仓库存储镜像的地方,
默认在公共的Docker Hub上查找

五、安装Docker

Docker 支持在主流的操作系统平台上使用,比如:Windows、Linux 和 MacOS 系统
官方 docker 安装技术文档:https://docs.docker.com/engine/install/centos/
阿里云 docker 安装技术文档:https://developer.aliyun.com/article/110806
#关闭防火墙和安全机制
systemctl stop firewalld
systemctl disable firewalld
setenforce 0

1.安装相关依赖包

yum install -y yum-utils device-mapper-persistent-data lvm2

在这里插入图片描述

2.设置阿里云镜像

yum-config-manager \
--add-repo \
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

#docker-ce-cli是docker命令行工具包,containerd.io是容器接口相关包
yum install -y docker-ce docker-ce-cli containerd.io    

在这里插入图片描述
在这里插入图片描述

3.启动docker

systemctl enable docker
systemctl start docker

'#通过运行hello-world映像来验证是否正确安装了Docker Engine'
docker run hello-world

在这里插入图片描述

4.检查docker版本

docker version
docker info

在这里插入图片描述

安装好的 Docker 有两个程序:Docker 服务端和 Docker 客户端
Docker 服务端是一个服务进程,管理所有的容器
Docker 客户端是 Docker 服务端的远程控制器,可以用来控制 Docker 的服务端进程
Docker 服务端和客户端在大多数情况下是运行在一台及其上的

5.镜像加速

登录阿里云官网
点它:阿里云官网网址
登录或注册账号,在右上角
进入控制台
搜索并进入容器镜像服务
镜像中心→镜像加速器

在这里插入图片描述

 mkdir -p /etc/docker
 tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://填写自己的镜像地址"]
}
EOF
 systemctl daemon-reload
 systemctl restart docker

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值