DOCKER 01:说明与安装

关于 dcoker

 

 

之前写了一些关于这一部分的原因,但是感觉都不全面,所以打算重新完整的做个整理,查漏补缺。

现在已经是 2020 年,作为运维人员慢慢绕不过的坎就是容器编排这一块的内容。相较于传统运维,容器运维在发展前景和薪资待遇上面还是非常可观的。这也是学习该技术的目的与动力。

 

关于 docker 的发展历史,需要事先简单了解以下内容:

1. docker 是 dotcloud 公司(成立于 2010 年,2013 年更名为 Docker 股份有限公司)开源在 GitHub 上面的一个项目。

2. 自 2015 年 runC 发布之后,docker 走上了真正跨平台的道路,这也是 docker 的一个核心思想的由来:一次构建,到处运行。

3. 2016 年开始,docker 拆分成为了社区版 docker CE 和商业版 docker EE,我们都用 docker CE。

4. docker 在 1.13 版本之后,命名方式更改为 年.月 的方式,如 18.06,每月发布前沿版(Edge)和三个月发布稳定版(Stable)。

5. docker 在老版本 CentOS 源中叫 docker,Ubuntu 源中叫 docker.io,现在已经统一叫做 docker-ce

6. docker 存储引擎在 CentOS 中经历了由 devicemapper 到 overlay 再到 overlay2 的进阶,性能已能够和 Ubuntu 的 AUFS 相提并论。 

 

关于 docker 的一些概念,需要事先简单了解以下内容:

1. docker 由 Go 语言开发,属于典型的 C/S 架构的产品。

2. docker 将容器技术推向了巅峰,但是容器技术并非起源于 docker。

3. docker 属于 Linux Container(LXC,内核自带,一种内核虚拟化技术,提供轻量级进程和资源隔离)的上层封装,所以并非新技术。

4. docker 并非容器技术的最佳实践,但是由于名气大,使用广,目前仍然是主流学习的目标。

5. 学 docker 不是最终目的,是为学习容器编排工具 Kubernetes 做准备。

6. docker 拥有自己的编排工具 docker swarm,但是由于干不赢 kubernetes 的原因已经快停止维护。

7. docker 是一个 Paas 服务,关于 Pass,Saas 等服务的概念可以参考下图,红色部分为用户需要管理部分:

至于其它内容,在后面写到的时候再说!

 

 

docker 的优缺点

 

在网上可以随处可见也是官方文档上面随处可见的一张关于 docker 和 VM 做比较的图:

可以明显的发现:

传统的 VM 的工作过程:

1. 首先,需要一台服务器,在上面安装类似于 VMware workstation 这样的软件,只不过在服务器上一般使用的是 VMware esxi 这类。

2. 然后在这个软件的管理界面上面新建虚拟机,安装操作系统,配置 IP 等。

3. 最后再在这个新建的虚拟机上面安装想要运行的服务。

 

容器的工作过程:

1. 给服务器安装系统,可以是 Linux 也可以是 Windows,并安装上 docker。

2. 运行我们想要运行的服务容器,每个容器以一个单独的进程存在与宿主机的系统上面。

 

两者做对比可以发现:

1. 传统的 VM 每次新增虚拟机就需要重装系统,并单独运行系统,这样会导致 CPU,内存,磁盘的额外开销。但是好处在于隔离效果比较好。

2. 使用容器则不需安装额外的操作系统,每个服务都以进程的方式跑在宿主机上,且拥有独立的虚拟网络环境,独立的磁盘存储划分,能节省系统开销。但相较传统的 VM 在隔离性上不那么好,毕竟还在一个宿主系统下面,如果这个宿主系统挂掉,上面的所有运行的容器都会挂掉。

 

 

docker 的核心组件

 

服务端(Server)和客户端(Client):C/S 架构,所有的执行都是通过服务端发送给客户端执行。

镜像(Image):需要运行的服务和运行环境封装在一起的包。

容器(Container):通过镜像运行起来的实例。

仓库(Repository):同一镜像可能有不同版本,这些包含同一镜像不同版本的地址就是该镜像的仓库。

注册点(Registry):各种仓库的集合地址就是注册点。

具体关系可以参照下图:

 

 

安装部署

 

docker 在网上的安装方式一般会看到这几种:curl 脚本安装,源码安装,yum 安装,rpm 安装。

通常对于生产环境尽量推荐选择 rpm 版本安装,原因在于便于版本控制。不安装最新的,怕有坑。

 

1. 安装准备:

下载方式可以选择 docker 官方镜像源:

https://download.docker.com/linux/centos/7/x86_64/stable/Packages/

但是可能速度会很慢,所以也可以选择中科大提供的源:

http://mirrors.ustc.edu.cn/docker-ce/linux/centos/7/x86_64/stable/Packages/

我这里由于是测试版本,所以选择最新的 19.03.6-3 版本,下载所需的包:

containerd.io-1.2.6-3.3.el7.x86_64.rpm
docker-ce-19.03.6-3.el7.x86_64.rpm
docker-ce-cli-19.03.6-3.el7.x86_64.rpm

这里准备了 4 台 CentOS Linux release 7.5.1804 的虚拟机,IP 分别是 192.168.200.101-104,并事先关闭防火墙和 Selinux。

为了更好的支持,也可以升级一下机器的内核,当然如果你的服务器已经运行其他服务,最好不要升级,怕出问题。

具体升级方法可以参照我之前的博客,里面有一键升级脚本:

https://www.cnblogs.com/Dy1an/p/12011691.html

 

2. 安装依赖:

# 卸载旧版本
yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine

# 安装依赖
yum install -y yum-utils device-mapper-persistent-data lvm2 bridge-utils bash-completion wget container-selinux

# 更新系统
yum update

 

3. 上传之前下载的包并安装:

mkdir docker
cd docker/
# 上传文件到该目录下面,再执行安装
yum -y install *

 

4. 启动并设置开机自启:

systemctl start docker
systemctl enable docker
systemctl status docker

 

5. 查看:

docker version

结果如图:

 

6. 镜像仓库优化:

由于 docker 默认的镜像仓库 docker hub 因为某些不可描述的原因访问及其慢,可以将它换为国内的镜像源:

阿里镜像源:麻烦,需要专门申请账户。

中科大镜像源:直接配置即可。(我写文章时候中科大打不开,注意一下,不行就用阿里的,虽然麻烦一些

# 拷贝启动文件
cp /lib/systemd/system/docker.service /etc/systemd/system

# 修改配置
sed -i "s#^ExecStart=.*#ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --registry-mirror=https://docker.mirrors.ustc.edu.cn#g" /etc/systemd/system/docker.service

# 重启docker
chmod 755 /etc/systemd/system/docker.service
systemctl daemon-reload
systemctl restart docker

此时查看 docker 进程:

ps -ef | grep docker

能够看到进程后面多了一个中科大镜像地址:

到此,docker 安装完成,接下来是 docker 的使用!

posted @ 2020-02-25 09:52  Dy1an  阅读(226)  评论(0编辑  收藏