不使用sudo 执行Docker命令的方法
Problem
默认安装完docker后,每次执行docker都需要运行sudo命令,非常浪费时间影响效率。
如果不跟sudo,直接执行dockerimages命令会有如下问题:
[liujun@li1581-58~]$dockerps CannotconnecttotheDockerdaemon.Isthedockerdaemonrunningonthishost? [liujun@li1581-58~]$ps-ef|grepdocker root7427104月24?00:13:22/usr/bin/dockerd-current--add-runtimedocker-runc=/usr/libexec/docker/docker-runc-current--default-runtime=docker-runc--exec-optnative.cgroupdriver=systemd--userland-proxy-path=/usr/libexec/docker/docker-proxy-current--selinux-enabled--log-driver=journald--signature-verification=false root7431742704月24?00:01:13/usr/bin/docker-containerd-current-lunix:///var/run/docker/libcontainerd/docker-containerd.sock--shimdocker-containerd-shim--metrics-interval=0--start-timeout2m--state-dir/var/run/docker/libcontainerd/containerd--runtimedocker-runc--runtime-args--systemd-cgroup=true root7738742704月24?00:00:02/usr/libexec/docker/docker-proxy-current-prototcp-host-ip0.0.0.0-host-port9797-container-ip172.17.0.2-container-port9797 root7762743104月24?00:00:03/usr/bin/docker-containerd-shim-current4db3d279d762fd42a7ba9e773ba47d6b6d61c157247afd395c4a83ae8a35ca77/var/run/docker/libcontainerd/4db3d279d762fd42a7ba9e773ba47d6b6d61c157247afd395c4a83ae8a35ca77/usr/libexec/docker/docker-runc-current root7837742704月24?00:00:02/usr/libexec/docker/docker-proxy-current-prototcp-host-ip0.0.0.0-host-port6868-container-ip172.17.0.3-container-port6868 root7852743104月24?00:00:08/usr/bin/docker-containerd-shim-current99b7e7fdbbcd10245672a220154a9a7bc0d9d91a7a7fb641a778e60559089159/var/run/docker/libcontainerd/99b7e7fdbbcd10245672a220154a9a7bc0d9d91a7a7fb641a778e60559089159/usr/libexec/docker/docker-runc-current liujun1930219028001:45pts/000:00:00grep--color=autodocker
原因分析
[liujun@li1581-58~]$sudols-l/var/run/docker.sock srw-rw----1rootdocker06月701:47/var/run/docker.sock
启动docker时,使用sudo启动,用的是root权限,普通用户是没有权限访问/var/run/docker.sock。
该进程所属docker组
而docker组具有setuid权限(详见srw-rw—-意义)
所以只需要把用户加入到docker组就行了。
解决步骤:
创建group组
如果还没有dockergroup就添加一个:
添加当前用户用户到docker组
[liujun@li1581-58~]$sudogroupadddocker [liujun@li1581-58~]$sudogpasswd-a${USER}docker 正在将用户“liujun”加入到“docker”组中
重启docker服务
[liujun@li1581-58~]$sudoservicedockerrestart Redirectingto/bin/systemctlrestartdocker.service
切换会话
newgrp-docker
因为groups命令获取到的是缓存的组信息,
刚添加的组信息未能生效,所以需要切换当前会话到新的组
检查
[liujun@li1581-58~]$dockerps CONTAINERIDIMAGECOMMANDCREATEDSTATUSPORTSNAMES 99b7e7fdbbcddocker.io/amorphobia/docker-ssserver"/usr/local/bin/ssser"3monthsagoUp3minutes0.0.0.0:6868->6868/tcpboring_roentgen 4db3d279d762docker.io/amorphobia/docker-ssserver"/usr/local/bin/ssser"3monthsagoUp3minutes0.0.0.0:9797->9797/tcpsilly_franklin
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。