为了安装 Rancher 搭建 kubernetes

请直接使用官网 https://www.cnrancher.com/docs/rancher/v2.x/cn/install-prepare/basic-environment-configuration/



前言

Docker 目前支持 CentOS 7 及以后的版本,内核要求至少为 3.10。


Docker 官网有安装步骤,参考 Get Docker CE for CentOS


环境说明

CentOS 7(Minimal Install)

$ cat /etc/redhat-release 
CentOS Linux release 7.6.1810 (Core)


准备工作


操作系统要求

CentOS 7 以后都可以安装 Docker 了,也可以确认一下。

$ uname -a
Linux localhost.localdomain 3.10.0-957.1.3.el7.x86_64 #1 SMP Thu Nov 29 14:49:43 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

Docker 需要用到 centos-extra 这个源,如果您关闭了,需要重启启用,可以参考 Available Repositories for CentOS


卸载旧版本

官网提示旧版本需要卸载,可无视


旧版本的 Docker 被叫做 docker 或 docker-engine,如果您安装了旧版本的 Docker ,您需要卸载掉它。

$ sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

旧版本的内容在 /var/lib/docker 下,目录中的镜像(images), 容器(containers), 存储卷(volumes), 和 网络配置(networks)都可以保留。

Docker CE 包,目前的包名为 docker-ce


Transaction check error:

如果显示

image.png 执行命令删除旧版本

sudo yum erase docker-ce-cli-1:19.03.1-3.el7.x86_64


安装

安装准备

为了方便添加软件源,支持 devicemapper 存储类型,安装如下软件包

$ sudo yum update
$ sudo yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2


添加 yum 软件源

添加 Docker 稳定版本的 yum 软件源

$ sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo


或者国内源对于 docker

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


替换清华 Tuna 镜像源

首先备份 CentOS-Base.repo 

  1.  sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
  2. vi /etc/yum.repos.d/CentOS-Base.repo

启用 TUNA 软件仓库, 将以下内容写入 /etc/yum.repos.d/CentOS-Base.repo

选择你的 CentOS 版本:     CentOS 7 

# CentOS-Base.repo
#
# The mirror system uses the connecting IP address of the client and the
# update status of each mirror to pick mirrors that are updated to and
# geographically close to the client.  You should use this for CentOS updates
# unless you are manually picking other mirrors.
#
# If the mirrorlist= does not work for you, as a fall back you can try the
# remarked out baseurl= line instead.
#
#
[base]
name=CentOS-$releasever - Base
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/os/$basearch/
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
#released updates
[updates]
name=CentOS-$releasever - Updates
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/updates/$basearch/
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/extras/$basearch/
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/centosplus/$basearch/
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

更新软件包缓存 sudo yum makecache


安装 Docker

更新一下 yum 软件源的缓存,并安装 Docker。


注意⚠️,rancher 安装是有 Docker 版本需求的,这里是官网要求选择 18.06.2 版本

$ sudo yum update
$ yum install docker-ce-18.06.2.ce-3.el7 -y


如果弹出 GPG key 的接收提示,请确认是否为 060a 61c5 1b55 8a7f 742b 77aa c52f eb6b 621e 9f35,如果是,可以接受并继续安装。

至此,Docker 已经安装完成了,Docker 服务是没有启动的,操作系统里的 docker 组被创建,但是没有用户在这个组里。

注意

默认的 docker 组是没有用户的(也就是说需要使用 sudo 才能使用 docker 命令)。

您可以将用户添加到 docker 组中(此用户就可以直接使用 docker 命令了)。

加入 docker 用户组命令

$ sudo usermod -aG docker USER_NAME

用户更新组信息后,重新登录系统即可生效。


安装指定版本

如果想安装指定版本的 Docker,可以查看一下版本并安装。

$ yum list docker-ce --showduplicates | sort -r
docker-ce.x86_64  3:18.09.1-3.el7                     docker-ce-stable
docker-ce.x86_64  3:18.09.0-3.el7                     docker-ce-stable
docker-ce.x86_64  18.06.1.ce-3.el7                    docker-ce-stable
docker-ce.x86_64  18.06.0.ce-3.el7                    docker-ce-stable

可以指定版本安装,版本号可以忽略 : 和 el7,如 docker-ce-18.09.1

$ sudo yum install docker-ce-<VERSION STRING>

至此,指定版本的 Docker 也安装完成,同样,操作系统内 docker 服务没有启动,只创建了 docker 组,而且组里没有用户。


启动 Docker

如果想添加到开机启动

$ sudo systemctl enable docker

启动 docker 服务

$ sudo systemctl start docker


验证安装

验证 Docker CE 安装是否正确,可以运行 hello-world 镜像

$ sudo docker run hello-world



更新和卸载 Docker

使用 yum 管理,更新和卸载都很方便。


更新 Docker CE

$ sudo yum update docker-ce


卸载 Docker CE

$ sudo yum remove docker-ce


删除本地文件

注意,docker 的本地文件,包括镜像(images), 容器(containers), 存储卷(volumes)等,都需要手工删除。默认目录存储在 /var/lib/docker

$ sudo rm -rf /var/lib/docker


DockerHub 镜像源

https://ieevee.com/tech/2016/09/28/docker-mirror.html

首先,需要明确一个问题:Mirror 与 Private Registry 有什么区别?

抄自daocloud的说明

二者有着本质的差别。

Private Registry 是开发者或者企业自建的镜像存储库,通常用来保存企业内部的 Docker 镜像,用于内部开发流程和产品的发布、版本控制。 Mirror 是一种代理中转服务,我们(指daocloud)提供的 Mirror 服务,直接对接 Docker Hub 的官方 Registry。Docker Hub 上有数以十万计的各类 Docker 镜像。 在使用 Private Registry 时,需要在 Docker Pull 或 Dockerfile 中直接键入 Private Registry 的地址,通常这样会导致与 Private Registry 的绑定,缺乏灵活性。 使用 Mirror 服务,只需要在 Docker 守护进程(Daemon)的配置文件中加入 Mirror 参数,即可在全局范围内透明的访问官方的 Docker Hub,避免了对 Dockerfile 镜像引用来源的修改。

简单来说,Mirror类似CDN,本质是官方的cache;Private Registry类似私服,跟官方没什么关系。对我来说,由于我是要拖docker hub上的image,对应的是Mirror。 yum/apt的mirror又有点不一样,它其实是把官方的库文件整个拖到自己的服务器上做镜像(不管有没有用),并定时与官方做同步;而Docker mirror只会缓存曾经使用过的image。

目前国内访问docker hub非常便秘,使用docker mirror势在必行。现有提供服务的有三家:ustc、daocloud、aliyun,下面会一一介绍。

2017-03-06 更新:新增网易docker镜像

2017-06-09 更新:新增官方镜像


选择负一

特大新闻,docker有官方的中国区加速器了!

--registry-mirror=https://registry.docker-cn.com

推荐程度: ★★★★★


选择零:网易163 docker镜像

$ sudo echo "DOCKER_OPTS=\"--registry-mirror=http://hub-mirror.c.163.com\"" >> /etc/default/docker
$ service docker restart

一般来说,网易的猪肉比市场上的猪肉好吃。但从我的体验来看,有时会pull失败的情况出现,并且重试不好使。

2017-05-05: 更新:目前网易镜像已经比较稳定,推荐。

推荐程度: ★★★★★


选择一:ustc的镜像

ustc是老牌的linux镜像服务提供者了,还在遥远的ubuntu 5.04版本的时候就在用。之前在blog里有提到可以用ustc的docker仓库镜像,使用方法参考ustc docker 镜像使用帮助,你要是懒得看,可以两条命令搞定(ubuntu亲测):

$ sudo echo "DOCKER_OPTS=\"--registry-mirror=https://docker.mirrors.ustc.edu.cn\"" >> /etc/default/docker
$ sudo service docker restart

ustc的docker镜像速度不错,一直用的挺happy。但是今天发现不好使了,可能跟这件事有关系吧,今天尝试去pull ubuntu,非常慢,应该是直接去docker hub上去拉了,基本没有加速效果。

ustc docker mirror的优势之一是,不需要注册,公共服务(这才是我熟悉的ustc嘛)。

2017-03-21 更新:最近使用了下,服务已经恢复了,加速效果非常不错。

2017-05-05 更新:据说收费了,用网易的吧!

推荐程度: ★★☆☆☆


选择二:daocloud

DaoCloud也提供了docker加速器,但是跟ustc不同,需要用户注册后才能使用,并且每月限制流量10GB。linux上使用比较简单,一条命令搞定:

curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://{your_id}.m.daocloud.io

实际改的是/usr/lib/systemd/system/docker.service,加了个–registry-mirror参数,:

ExecStart=/usr/bin/docker-current daemon --registry-mirror=http://{your_id}.m.daocloud.io\

设置后,需要重新加载配置&重启:

systemctl enable docker; systemctl daemon-reload ; systemctl restart docker

但是!今天使用DaoCloud的docker加速器体验非常差,加速效果基本没感觉,果断放弃。

推荐程度: ★☆☆☆☆


选择三:alicloud

阿里云也提供了docker加速器,不过比ustc更麻烦:不光要注册为阿里云的用户,还得加入开发者平台。不过捏着鼻子做完这些以后,它的服务还真是不错,基本1MB/s的pull速度(部分原因可能是因为我也在杭州吧)。配置方法跟daocloud类似,也是开通加速器以后给一个url。


我直接去改/usr/lib/systemd/system/docker.service了:

ExecStart=/usr/bin/docker-current daemon --registry-mirror=https://{your_id}.mirror.aliyuncs.com\

重新加载配置&重启:

systemctl enable docker; systemctl daemon-reload ; systemctl restart docker

pull的时候还是显示docker.io,但速度一点都不docker.io。

# docker pull ubuntu
Using default tag: latest
Trying to pull repository docker.io/library/ubuntu ...
latest: Pulling from docker.io/library/ubuntu
cad964aed91d: Pull complete
3a80a22fea63: Pull complete
50de990d7957: Pull complete
61e032b8f2cb: Pull complete
9f03ce1741bf: Pull complete
Digest: sha256:28d4c5234db8d5a634d5e621c363d900f8f241240ee0a6a978784c978fe9c737
Status: Downloaded newer image for docker.io/ubuntu:latest

推荐程度: ★★★☆☆



综上,虽然aliyun docker mirror有这样那样的不爽,但的确是目前最好的服务。当然,等ustc恢复正常了,我还是会切到ustc的。

ustc已经恢复了,就用ustc了~



写了个脚本,自动从official、aliyun、网易、ustc查找最快的镜像源,欢迎使用,欢迎fork,欢迎PR,欢迎star。

docker_mirror


用python写的,在ubuntu和centos7上测试过,其他的操作系统,需要补充。