准备工作
首先说一下安装的环境,我是用的阿里云的服务器,操作系统为centOS,版本是7.9.2009
,系统内核版本是3.10.0-957.21.3.el7.x86_64
。
然后卸载原先已安装的docker相关软件包,如果当前机器从来没安装过docker可以省略这一步。
1
2
3
4
5
6
7
8
|
$ sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
|
现在docker引擎已经改名叫做docker-ce
了,如果尝试使用sudo yum install docker-ce
会发现找不到此包,因为默认的软件源里没有docker-ce
这个包。
此时可以先安装yum-utils
:
1
|
sudo yum install yum-utils
|
yum-utils
中包含一个实用工具yum-config-manager
,使用该工具可以很方便的新增yum的软件仓库:
1
2
|
# 将docker官方的软件仓库加进来
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
|
安装并启动docker
使用如下命令安装:
1
|
sudo yum install docker-ce docker-ce-cli containerd.io
|
启动docker:
1
|
sudo systemctl start docker
|
解决“权限不足”问题
此时执行docker ps
查看容器,会报错:
1
2
3
4
5
6
|
[hongmao@aliyun ~]$ docker ps
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/json": dial unix /var/run/docker.sock: connect: permission denied
# 使用sudo便可以正常执行docker命令
[hongmao@aliyun ~]$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
|
造成这种现象的原因是:Docker守护进程绑定到Unix socket而不是TCP端口。默认情况下,Unix socket由root
用户拥有,其他用户只能使用sudo
访问。而Docker守护进程始终是以root
用户身份运行。
如果不想每次执行命令前都使用sudo
,则可以创建一个名为docker
的组,然后将你当前用户(非root用户)加入该组。然后,当Docker守护进程启动时会创建一个docker
组内成员可访问的Unix socket。
1
2
3
4
5
6
7
8
9
|
# 首先检查下当前是否已经有docker组
[hongmao@aliyun ~]$ cat /etc/group | grep docker
dockerroot❌994:
docker❌993:
# 可以发现,当前已经有名为docker的组了,则直接将非root用户放入该组即可
sudo usermod -aG docker hongmao
# 如果没有docker组,可以使用如下命令新建组
sudo groupadd docker
|
此时再次执行docker ps
发现问题并没有解决,原因是组设置并未生效,执行如下命令即可:
安装后的配置
设置docker守护进程为开启自动启动
首先,上述仅本次启动了docker,在服务器重启后docker并不会自动启动,可以使用如下命令设置docker为开启启动:
1
2
|
sudo systemctl enable docker.service
sudo systemctl enable containerd.service
|
设置阿里云镜像加速器
编辑或新建docker的默认配置文件:/etc/docker/daemon.json
1
2
3
4
5
6
|
sudo vim /etc/docker/daemon.json
# 在daemon.json文件中写入如下内容:
{
"registry-mirrors": ["https://你自己的加速器地址"]
}
|
此时下载速度就很快了。
参考文档:
Install Docker Engine on CentOS | Docker Documentation
Post-installation steps for Linux | Docker Documentation
容器镜像服务 (aliyun.com)