阿里云ECS CentOS 上安装 Docker

环境

  • 阿里云ECS
  • CentOS 7.8 (64位)
  • Xshell

查看阿里云ECS 连接

由上图,可知:用户名:root,Host: 红框IP地址,即公网IP地址,之后连接会用上。

设置阿里云ECS 实例密码

注意:是 重置实例密码,不是 修改远程连接(VNC)密码,两者完全不同,SSH连接用的是实例密码,配合用户名 root

补充:

通过VNC远程连接登录Linux实例 - 云服务器 ECS - 阿里云

重启完成后,即可进行连接。

使用Xshell连接

  1. 新建会话
  1. 填入连接信息,Host即为阿里云ECS的公网IP地址

注意:SSH使用22端口,所以需要在此实例的安全组配置中放行22端口

阿里云ECS安全组配置

补充:如果没有规则,可能需要新建规则

入方向,出方向,都要放行22端口,22端口为常用端口,直接点击快速添加即可

SSH连接

在Xshell中双击会话,即可连接

点击接受

输入用户名 root,可选择勾选记住用户名,点击OK

输入实例密码,可选择勾选记住密码,点击OK

连接成功

安装 Docker

本文为新装CentOS,未安装Docker,所以无需卸载旧版本Docker,由于直接使用 root用户,所以无需 sudo

若非 root用户,命令前加 sudo,以管理员执行

1. 安装 yum-utils,添加 Docker repository

在第一次在宿主机安装 Docker 之前,你需要先安装 Docker repository,之后,你可以通过 repository 安装和更新Docker。

安装 yum-utils 包 (它提供了 yum-config-manager 工具) 和 安装 稳定的 repository。

1
yum install -y yum-utils

使用 yum-config-manager 添加 repository

1
2
3
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo

Docker CE: Docker 社区版

Docker EE: Docker 企业版

2. 安装 Docker CE

安装 最新版本 的 docker-ce、docker-ce-cli、containerd

1
yum install docker-ce docker-ce-cli containerd.io

中途,输入 y 确定安装即可

上图安装成功。

补充:

也可以直接 yun install -y,这样就无需 输入 y 确定

1
yum install -y docker-ce docker-ce-cli containerd.io

官方源较慢,耐性等待,

当然可以设置为阿里云镜像

  1. 由于之前已经添加官方 docker-ce 仓库源,所以需要先禁用官方仓库源,先查看当前仓库源

    1
    yum repolist all

    之所以禁用官方docker-ce仓库,是因为我们将使用阿里云镜像的docker-ce仓库,当安装包时,多个仓库都含有这个包,但是你不想用默认仓库提供的包,那么就可以禁用此仓库

    1. 禁用 docker-ce 仓库
    1
    yum-config-manager --disable docker-ce-stable/7/x86_64

    docker-ce-stable/7/x86_64 为 repo id

    1. 添加阿里云镜像 docker-ce 仓库
    1
    yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    1. 检查仓库
    1
    yum repolist all

阿里云 Docker CE 镜像 官方文档: https://developer.aliyun.com/mirror/docker-ce

补充:

安装 指定版本 的 Docker CE

列出并排序 可用的 docker-ce

1
yum list docker-ce --showduplicates | sort -r

安装指定版本

1
sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io

Docker 安装完成后,但还没有启动, docker 组(group)已经被添加,但还没有 userdocker

查看当前存在的 所有组(group)

1
cat /etc/group

3. 启动 Docker

1
systemctl start docker

测试是否启动成功,创建并运行 hello-world 容器

1
docker run hello-world

出现上图,说明运行Docker成功

开机自启动 Docker

1
systemctl enable docker

Docker 安装完成

Docker 配置 阿里云镜像加速

参考:官方镜像加速 - 容器镜像服务 ACR - 阿里云

当下载镜像时,默认Docker 从 Docker Hub下载镜像,下载非常慢,所以下面使用阿里云镜像加速

1. 获取阿里云镜像加速地址

登录容器镜像服务控制台后,在左侧导航栏选择镜像中心 > 镜像加速器,在镜像加速器页面就会显示为您独立分配的 加速器地址,复制加速器地址

2. 配置加速器地址

通过修改daemon配置文件 /etc/docker/daemon.json 来使用加速器

1
vi /etc/docker/daemon.json
1
2
3
{
"registry-mirrors": ["你的加速器地址"]
}

3. 重启 Docker

1
sudo systemctl daemon-reload
1
sudo systemctl restart docker

完成

安装 Docker Compose

参考:Install Docker Compose | Docker Documentation

在 CentOS下可选择使用 curl方式,或者 pip

TODO:注意:curl 方式暂时没有安装成功,这里使用 pip 方式

建议尝试一次 curl 方式安装,如果不成功,再尝试 pip 方式安装

1. curl 方式

1.1 下载 Docker Compose

1
sudo curl -L "https://github.com/docker/compose/releases/download/1.28.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

补充:

$(uname -s) 为 变量,显示操作系统名称,此处为 Linux

参考:Linux uname 命令 | 菜鸟教程

1.2 给与 执行权限

1
sudo chmod +x /usr/local/bin/docker-compose

1.3 测试

1
docker-compose --version
1
Error loading Python lib '/tmp/_MEI43kgmS/libpython3.9.so.1.0': dlopen: /lib64/libc.so.6: version `GLIBC_2.28' not found (required by /tmp/_MEI43kgmS/libpython3.9.so.1.0)

尝试创建软链接,未解决:

若报错,找不到 docker-compose 命令,那么多半可以通过下方命令解决:

1
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

TODO:curl方式安装 Docker Compose 失败

补充:

卸载 Docker Compose(前提:使用 curl 安装)

1
sudo rm /usr/local/bin/docker-compose

2. pip 方式

2.1 更新 Python

参考:

1
python --version

默认 Python版本太低,一会 pip 更新后,会语法报错(SyntaxError: invalid syntax)

2.1.1 切换工作目录

1
cd /usr/local

2.1.2 下载 Python 3.8

1
wget http://npm.taobao.org/mirrors/python/3.8.0/Python-3.8.0.tgz

2.1.3 解压压缩包

1
tar -xzf Python-3.8.0.tgz

2.1.4 在当前目录创建文件夹:python3

1
mkdir python3

2.1.5 进入解压目录

1
cd Python-3.8.0

2.1.6 安装编译器

1
sudo yum install -y gcc

2.1.7 修改 /Modules/Setup

注意:如果不修改,之后 docker compose --version 会报错,需要修改 python3.8 源代码

1
ModuleNotFoundError: No module named '_ssl'
1
vi /usr/local/Python-3.8.0/Modules/Setup

补充:

参考文章中说 还有 Setup.dist,但笔者这里没这文件

取消注释以下5行

2.1.8 生成 Makefile 文件

/usr/local/python3 为安装目录

1
./configure --prefix=/usr/local/python3

2.1.9 利用 Makefile 文件 执行 make,即编译源代码,生成执行文件

1
make

2.1.10 安装

make install实际上是把生成的执行文件拷贝到之前configure命令指定的目录 /usr/local/python3 下。

1
make install

make install 报错:

1
zipimport.ZipImportError: can't decompress data; zlib not available

这是由于缺少依赖,执行下方,中途输入y 确定即可:

1
sudo yum install zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel openssl-devel xz xz-devel libffi-devel

执行完成后,再重新执行 make install

完成。

参考:Linux 下安装Python报错:zlib not available - 寒爵 - 博客园

2.1.11 建立 python3 软链接

1
ln -s /usr/local/python3/bin/python3 /usr/bin/python3

补充:

1
ln: failed to create symbolic link ‘/usr/bin/python3’: File exists

软链接创建失败:/usr/bin/python3 已存在,

先删除此软链接

1
rm -rf /usr/bin/python3

2.1.12 测试 python3

1
python3 --version

成功

2.1.13 测试 pip3

1
pip3 --version

TODO: 很奇怪,我都没有创建 pip3 的软链接,居然就可以了,

如果 pip3 找不到,就执行下方创建 pip3 软链接

1
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3

2.2 安装 pip

TODO: 注意:应该说现在不需要执行下方了,可跳过此步骤

目前,由于 系统自带 python 版本太低,而又强制更新了 pip,导致 执行 pip 会报语法错误。

1
yum -y install epel-release
1
yum -y install python-pip
1
pip install --upgrade pip

2.3 安装 Docker Compose

1
sudo pip3 install docker-compose

注意:这里使用 新安装的 pip3 安装 Docker Compose

解决:

将/usr/local/python3/bin加入PATH

1
sudo vim /etc/profile

然后在 文件末尾 添加一行

1
export PATH=$PATH:/usr/local/python3/bin

修改完后,还需要让这个环境变量在配置信息中 立即生效,执行命令:

1
source /etc/profile

2.4 测试

1
docker-compose --version
1
docker-compose version

如果报错:

1
ModuleNotFoundError: No module named '_ssl'

解决:

2.1.7 修改 /Modules/Setup

参考:

补充

Xshell 无法使用退格、删除键

Xshell无法使用 Delete,Backspace键

常用 Docker 命令

docker info

1
docker info

如上图有 Client, Server,则说明 Docker 运行正常。

ln -s

参考:Linux ln 命令 | 菜鸟教程

1
ln -s 源文件 目标文件

给文件创建软链接,为log2013.log文件创建软链接link2013,如果log2013.log丢失,link2013将失效:

1
ln -s log2013.log link2013

参考

感谢帮助!