如何让非root用户使用docker命令启动镜像

在生产环境中,通常不建议使用root用户来启动服务,例如启动Docker项目镜像。如果必须使用root权限,每次系统重启或更新时,都需要申请root口令,增加了维护难度。

并且用非root用户启动docker镜像时,还会报出权限拒绝的信息,如下所示:

[iwen@Bert milvus]$ docker-compose up -d

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?all=1&filters=%7B%22label%22%3A%7B%22com.docker.compose.config-hash%22%3Atrue%2C%22com.docker.compose.project%3Dmilvus%22%3Atrue%7D%7D": dial unix /var/run/docker.sock: connect: permission denied

为了简化和解决这一过程,以下是如何使用非root用户启动服务的方法。  

一、创建docker组

首先先检查一下操作系统中是否存在docker组,如果不存在需要进行创建,命令如下:

1、检查是否存在docker

[root@Bert ~]# cat /etc/group|grep docker

2、创建docker用户组

[root@Bert ~]# groupadd -g 1001 docker

1001: 是指dockerid,创建时可以加上,也可以不加,如果不加的话,系统会默认分配置一个组iddocker组。

3、检查所创建的组

[root@Bert ~]# cat /etc/group|grep docker

docker:x:1001:

或是使用以下命令:

[root@Bert ~]# getent group docker

docker:x:1001:

docker: 代表所创建的组名,可根据实际情况换成自己想要检查的组名即可。

二、添加用户到docker组

添加用户到docker组,这里的用户是指要启动docker镜像的用户,这里用iwen用户举例。

1、查看iwen用户属于哪些组

[root@Bert ~]# id iwen

uid=1001(iwen) gid=1002(iwen) =1002(iwen)

2、添加iwen用户到docker组中

[root@Bert ~]# usermod -aG docker iwen

-a: 参数表示追加到现有的组列表中

注:这里需要注意的是一定要用“-a”这个参数,如果不用该参数话,会把之前用户所属的附属组替换成当前要加的组。

以下是不加-a参数的情况,把之前的whell组给替换成了docker

[root@Bert ~]# id user1

uid=1000(user1) gid=1000(user1) 组=1000(user1),10(wheel)

[root@Bert ~]# usermod -G docker user1

[root@Bert ~]# id user1

uid=1000(user1) gid=1000(user1) 组=1000(user1),1001(docker)

或是使用以下命令添加用户到指定组中:

[root@Bert ~]# vi /etc/group

docker:x:1001:iwen,user1

找到对应的组,把用户填加到组后面即可,如果要添加多个用户的话,用户之间使用英文的“,”分隔。

3、检查iwen用户添加到docker组中情况

[root@Bert ~]# id iwen

uid=1001(iwen) gid=1002(iwen) =1002(iwen),1001(docker)

三、修改docker服务docker.sock文件权限

根据文章开头里用非root用户启动docker镜像时报错信息,找到docker.sock文件所在的目录。

这里的docker.sock文件所在目录为: unix:///var/run/docker.sock

1、查看docker.sock文件当前组所属情况

[root@Bert ~]# cd /var/run

[root@Bert run]# ls -lrt docker.sock

srw-rw---- 1 root root 0 7  29 16:17 docker.sock

2、修改docker.sock文件所属组

[root@Bert run]# chown root.docker docker.sock

3、检查修改docker.sock文件所属组情况

[root@Bert run]# ls -lrt docker.sock

srw-rw---- 1 root docker 0 7  29 16:17 docker.sock

四、非root用户启动docker镜像

[iwen@Bert milvus]$ docker-compose up -d

[+] Running 3/4

⠧ Network milvus                   Created                   2.7s

✔Container milvus-minio       Started                    1.3s

✔Container milvus-etcd         Started                    1.1s

✔ Container milvus-standalone  Started   

可正常启动,说明已经生效。

如果启动时还是报出以下错误

[iwen@Bert milvus]$ docker-compose up -d

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?all=1&filters=%7B%22label%22%3A%7B%22com.docker.compose.config-hash%22%3Atrue%2C%22com.docker.compose.project%3Dmilvus%22%3Atrue%7D%7D": dial unix /var/run/docker.sock: connect: permission denied

可以用root户重启一下docker服务,再用普通用户启动docker镜像即可。

  • 21
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值