说明
本示例是在centos7中通过yum安装docker 。
由于执行yum需要root权限, 所以需要切换到root用户,或者使用sodo。
查看系统版本
- 查看centos版本:lsb_release -a
$ lsb_release -a
LSB Version: :core-4.1-amd64:core-4.1-noarch
Distributor ID: CentOS
Description: CentOS Linux release 7.7.1908 (Core)
Release: 7.7.1908
Codename: Core
可以看出我的centos版本为7.7.1908
安装
- 安装必要的软件包
yum-utils
管理yum仓库等的一个扩展包工具,比如下面用到的yum-config-manager是它提供的工具之一,它提供的其他工具可以执行man命令具体查看:man yum-utils 。
device-mapper-persistent-data
docker中存储数据需要用到“device mapper 驱动程序”, 而该驱动程序又依赖 device-mapper-persistent-data 和 lvm2。
lvm2
逻辑卷管理(Logical Volume Manager)
# 通过如下命令可以查看是否已安装上面三个软件包:
yum list installed yum-utils
yum list installed device-mapper-persistent-data
yum list installed lvm2
# 如果没有安装,则执行install进行安装,三个软件包可以一起安装
yum install -y yum-utils device-mapper-persistent-data lvm2
- 设置docker的仓库地址
#docker的yum仓库 ,yum-config-manager是yum-utils提供的工具。
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
- 安装docker
#`yum list docker-ce`查看仓库中所有docker版本, `sort -r`通过管道命令反序排列
yum list docker-ce --showduplicates | sort -r
#从上面的列表中选一个版本进行安装
yum install docker-ce-17.03.0.ce
#或者直接安装最新稳定版(不指定版本)
yum install docker-ce
启动docker
#启动docker服务
systemctl start docker
#设置docker服务开机启动
systemctl enable docker
权限问题
非root用户不能操作docker,比如比如执行 docker version
,报错信息如下:
$ docker version
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.40/version:
dial unix /var/run/docker.sock: connect: permission denied
分析:
docker进程使用Unix Socket协议而非TCP进行通信。
而默认情况下,Unix socket需要root权限。
说明:UNIX Socket 是unix同一台服务器上不同进程间的一种通信协议。
其实在安装docker的时候自动新建了docker用户组,docker用户组是有该权限的。
查看用户组:cat /etc/group | grep docker
比如我想用deploy用户来操作docker,将deploy加入docker组即可。
#将用户deploy添加到docker组(给用户增加一个组,一个用户可以属于多个组)
usermod -a -G docker deploy
#查看用户所在组
groups deploy