您的位置:首页 > 运维架构 > Docker

docker的简介、安装和换源

2020-08-16 09:18 731 查看

第一感觉

什么是

Docker
Dock
是容器的意思,那么
Docker
也就有容器管理员的意思了。既然是管理员,那么也就有容器的来源、状态和去向三个属性的管理。

Docker
架构

Docker
是一个
C/S
架构的应用,虽然我们能看到的非常有限,却在设计之初就已经构想了一整套完美的生态。整个生态包括
Docker镜像仓库
Docker
容器和
Docker
客户端,这三个分别掌管来源状态去向

来源

来源虽说是容器的来源,其实就是说

Docker
镜像的来源,也就指向
Docker
庞大的代码仓库。从代码仓库中下载最小限度的镜像之后,在确定运行这些镜像之后,就会自动创建一个容器,并塞入镜像。而这个仓库则是在开发人员和众多社区大佬的共同努力下逐渐丰富起来的一个网站,叫
Docker Hub

听起来就像超市购物一样,我在超市里找到了我想要的商品(镜像),然后装进袋子(容器)里。

状态

状态普遍只会用到两种,一种是停止,另一种是运行中。这是两种正确执行之后才会出现的状态,而其他则是由命令不正确导致空容器、由无网络造成的创建失败等等状态。由于其他状态相当于错误,需要被处理,所以就没有一一列出的必要。

要管理容器状态,其实也就是操作容器,关闭打开创建删除四大基本操作,其他的操作都类似这四大操作的旁支,比如后台挂起,也相当于打开。当然,如果遇到了刚刚所说的错误,这些旁支没有效果了。

如果要打比方的话,状态就类似守门的大爷,对一个个的停车位是选择开门关门监视还是放任

去向

去向说的是容器的去向,实际上也就是容器到底是留存还是删除。无论是停止还是保持运行,容器都还在,是留存删除则是将容器彻底删除,在容器运行期间对镜像的一切修改将不会保存,但是最初的镜像将会完好地保存下来,因为容器中运行的是镜像的备份。

这就像是快递检货一样,无论发往哪里,都是检验合格(确认要用);而检验不合格(确认不用)将会直接处理掉(删除)。这里的合不合格则是由快递员(开发者)来决定。

当然,

Docker
的生态远不止这些。因为这里能够提供一个最初的印象,所以就简单地归为三个了。

为什么用
Docker

Docker
能够下载镜像、创建容器并运行镜像。这就像是虚拟机一样,我们去网上下载镜像,然后挂载到机器上,成为虚拟系统。但是这两者完全不相同。

这里使用知乎中针对

docker
容器与虚拟机有什么区别?”这一问题
water Cc
给出的回答(3楼)
中的图片来说明:


我们可以看到,左边是虚拟机的架构,而右边是Docker的架构。最底下的

Server
Host OS
合起来构成物理主机,也就是我们平常所用的个人电脑。

其中,虚拟机使用了

Hypervisor
,全称是虚拟机监视器,是一种运行在基础物理服务器和操作系统之间的中间软件层,可允许多个操作系统和应用共享硬件。也就是说,我们在针对虚拟机中挂载的系统操作的时候,挂载的系统监听到了操作,并交给挂载的操作系统处理,然后被虚拟机监视器监听到,收集数据后发送给物理主机,最终由物理主机完成系统调用,最后返还给挂载的系统并回显结果。这一整串过程是不是非常复杂?是不是能够理解为什么虚拟机挂载的时候慢一点了?

Docker就不一样,取消了Hypervisor挂载的系统,直接使用对应的基础代码库。这个基础代码库甚至可以不是操作系统,可以是单纯的某个应用,比如

MySQL
Zookeeper
等等,这就在灵活性上提升了一个数量级;其次,取消了
Hypervisor
能够让
Docker
运行中容器里的操作直接交给物理主机进行系统调用,速度上非常占优,响应非常迅速。

但是相对而言两者也同样有利有弊。

对于虚拟机来说,经过Hypervisor挂载的系统能够实现非常完美的隔离性;而仅使用Docker Engine运行的几个容器隔离性相对较弱。

不仅如此,直接将请求传送给物理主机进行系统调用的Docker是非常依赖物理主机的架构和操作系统内核的。例如:

Windows
能够使用
Docker
运行
Windows Server
Linux
系统,但是
Linux
系统则只能够使用
Docker
运行
Linux
系统,因为内核完全不支持;而使用Hypervisor虚拟机则使用中间件屏蔽了操作系统内核和架构的具体实现,从而使得虚拟机能够挂载
Windows
Linux
甚至
MacOS

二者差别还是非常大的,但在不同的环境下也各有千秋,开发者们需要根据自己的需求选择合适的实现方法。当然实际生产环境中还是希望能够使用更为轻量级的

Docker
来实现比较不错的响应速度。

安装

简介主要介绍了

Docker
相关,包括生态和优缺点。相信大家已经对
Docker
有了基本的了解。由于
Windows
有一键安装
Docker
的安装包,所以接下来我们就在
Ubuntu
下安装
Docker
,就不考虑
Windows
了。

首先确认我们要删除旧版本(如果没有可以跳过)

sudo apt-get purge docker
sudo apt-get purge docker-ce
sudo apt-get remove -y docker-*

然后开始安装

# Ubuntuan安装Docker
# 0 - 进入root权限
# 没有设置root用户的密码使用如下语句
sudo su
# 设置了root用户的密码使用如下语句
su
# 1 - 下载必要的包
apt-get install \
apt-transport-https \
ca-certificates \
curl gnupg-agent \
software-properties-common -y
# 2 - 添加国内阿里云docker-ce镜像的GPG-key
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | apt-key add -
# 3 - 添加国内阿里云docker-ce镜像源
add-apt-repository \
"deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \
$(lsb_release -cs) \
stable"
# 4 - 更新包
apt-get update
# 5 - 安装包
apt-get install docker-ce docker-ce-cli containerd.io

CentOS
安装
Docker
的方法也附上,你会用到的。

# CentOS安装Docker
# 1 - 下载必要的包
yum install -y yum-utils device-mapper-persistent-data lvm2
# 2 - 配置源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 3 - 列出所有版本
yum list docker-ce --showduplicates | sort -r
# 4 - 选择安装版本并填入${version}
yum install docker-ce-${version} -y

到这里大致上就结束了。我们来检验一下是不是安装好了:

docker --version

如果输出是这样的,那么就是安装成功:

Docker version 19.03.12, build 48a66213fe

当然,这其中的数字和字符串可能每个人选择的版本不同就会显示不一样的结果,这一点无需担心,只要确认能够出现这样的信息就是安装成功

下面是安装失败的输出:

Command 'docker' not found, but there are 21 similar ones.

安装完之后就是使用了。但是由于客户端默认连接的

Docker Hub
是国外的镜像仓库,所以下载速度非常慢,这里就需要更改默认配置为国内镜像仓库。

首先是确认用什么仓库。目前比较好的库就是Docker CN、网易、阿里云等等。但是阿里云镜像需要自行申请,手续麻烦而且界面不够人性化,所以我选择网易,也就是

http://hub-mirror.c.163.com

其次,来确认

Docker
服务是否启动

sudo docker images # 查看镜像列表,如果报错则服务未启动
systemctl status docker # 系统调用查看服务

如果没有启动就打开

systemctl start docker # 安装后第一次运行需要启动服务

启动之后就会生成

/etc/docker
文件夹,如果没有请检查是否启动失败。

在里面添加

daemon.json
文件

cd /etc/docker
sudo touch daemon.json
sudo vi daemon.json # 你也可以使用更为便捷的Vim

# 输入文本:
{
"registry-mirrors": ["http://hub-mirror.c.163.com"]
}

这里我是选择了网易镜像,你也可以替换为其他镜像。

然后拉取速度就非常快了。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: