Centos7 安装docker以及新系统可能会出现的问题

这个时候centos官方已经主推centos8了,但是8的镜像我下载完已经有8.6G了,相对于7的4G多的空间,再加上企业目前生产主流用的还是7,所以我在虚拟机还是继续玩7。
Docker从1.13版本之后采用时间线的方式作为版本号,分为社区版CE和企业版EE。
我这里用社区版测试

1.查看centos内核版本(docker要求centos内核版本高于3.10)

[sandwich@192 ~]$ uname -r
3.10.0-957.el7.x86_64

2.使用root权限更新yum, 确保yum是最新的

[sandwich@192 ~]$ sudo yum update

如果是新用户,有可能没有sudo权限,可以参考我的另外一个文章添加
https://blog.csdn.net/chenshm/article/details/121071492

3.卸载旧版本(如果已经安装过的话)

[sandwich@192 ~]$ sudo yum remove docker  docker-common docker-selinux docker-engine
[sudo] password for sandwich: 
Loaded plugins: fastestmirror, langpacks
No Match for argument: docker
No Match for argument: docker-common
No Match for argument: docker-selinux
No Match for argument: docker-engine
No Packages marked for removal

因为我是新机,自然不会有东西卸载

4.安装依赖包

# yum-util提供yum-config-manager功能,另外两个是device mapper驱动依赖的
[sandwich@192 ~]$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2

5.设置yum源

[sandwich@192 ~]$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
Loaded plugins: fastestmirror, langpacks
adding repo from: https://download.docker.com/linux/centos/docker-ce.repo
grabbing file https://download.docker.com/linux/centos/docker-ce.repo to /etc/yum.repos.d/docker-ce.repo
repo saved to /etc/yum.repos.d/docker-ce.repo

6.查看仓库中所有的docker版本,选择最新版或者特定版本安装

[sandwich@192 ~]$ yum list docker-ce --showduplicates | sort -r
 * updates: mirrors.aliyun.com
Loaded plugins: fastestmirror, langpacks
 * extras: mirrors.aliyun.com
docker-ce.x86_64            3:20.10.9-3.el7                     docker-ce-stable
docker-ce.x86_64            3:20.10.8-3.el7                     docker-ce-stable
docker-ce.x86_64            3:20.10.7-3.el7                     docker-ce-stable
docker-ce.x86_64            3:20.10.6-3.el7                     docker-ce-stable
docker-ce.x86_64            3:20.10.5-3.el7                     docker-ce-stable
docker-ce.x86_64            3:20.10.4-3.el7                     docker-ce-stable
docker-ce.x86_64            3:20.10.3-3.el7                     docker-ce-stable
docker-ce.x86_64            3:20.10.2-3.el7                     docker-ce-stable
docker-ce.x86_64            3:20.10.1-3.el7                     docker-ce-stable
...

7.安装docker

# 由于repo中默认只开启stable仓库,所以这里默认安装最新稳定版本
[sandwich@192 ~]$ sudo yum install docker-ce

8.启动并加入开机启动

[sandwich@192 ~]$ sudo systemctl start docker
[sudo] password for sandwich: 
[sandwich@192 ~]$ sudo systemctl enable docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.

9.验证安装是否成功(有client和servcie两部分)

[sandwich@192 ~]$ docker version
Client: Docker Engine - Community
 Version:           20.10.10
 API version:       1.41
 Go version:        go1.16.9
 Git commit:        b485636
 Built:             Mon Oct 25 07:44:50 2021
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true
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/version": dial unix /var/run/docker.sock: connect: permission denied

由上可以看出来client部分没有问题了,但是service部分似乎遇到permission的问题。
再执行一下docker ps试试,同样的问题

[sandwich@192 ~]$ 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

出现这个问题的原因是:

docker进程使用Unix Socket而不是TCP端口。而默认情况下,Unix socket属于root用户,需要root权限才能访问。

解决办法如下:

方案一:使用sudo获取管理员权限,运行docker命令
方案二:添加docker group组,将用户添加进去

我先试试方案一:

[sandwich@192 ~]$ sudo docker version
[sudo] password for sandwich: 
Client: Docker Engine - Community
 Version:           20.10.10
 API version:       1.41
 Go version:        go1.16.9
 Git commit:        b485636
 Built:             Mon Oct 25 07:44:50 2021
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.10
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.16.9
  Git commit:       e2f740d
  Built:            Mon Oct 25 07:43:13 2021
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.4.11
  GitCommit:        5b46e404f6b9f661a205e28d59c982d3634148f8
 runc:
  Version:          1.0.2
  GitCommit:        v1.0.2-0-g52b36a2
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0
[sandwich@192 ~]$ sudo docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

这样看起来没有问题了,但是我就不信docker version和docker ps都需要加上sudo.
再试试方案二:

#添加docker用户组
[sandwich@192 ~]$ sudo groupadd docker
groupadd: group 'docker' already exists
#将当前登录用户加入docker用户组
[sandwich@192 ~]$ sudo gpasswd -a $USER docker
Adding user sandwich to group docker
#更新用户组
[sandwich@192 ~]$ newgrp docker
#测试当前用户是否可以正常使用docker命令
[sandwich@192 ~]$ docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

至此完成安装。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT三明治

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值