问题发生:ubantu系统安装docker后pull镜像失败
问题解决:sudo groupadd docker 添加docker用户组
sudo gpasswd -a
U
S
E
R
d
o
c
k
e
r
当
前
登
录
用
户
加
入
d
o
c
k
e
r
用
户
组
n
e
w
g
r
p
d
o
c
k
e
r
最
后
更
新
用
户
组
d
o
c
k
e
r
p
s
看
看
d
o
c
k
e
r
命
令
是
否
可
以
正
常
使
用
如
下
:
G
o
t
p
e
r
m
i
s
s
i
o
n
d
e
n
i
e
d
w
h
i
l
e
t
r
y
i
n
g
t
o
c
o
n
n
e
c
t
t
o
t
h
e
D
o
c
k
e
r
d
a
e
m
o
n
s
o
c
k
e
t
a
t
u
n
i
x
:
/
/
/
v
a
r
/
r
u
n
/
d
o
c
k
e
r
.
s
o
c
k
:
P
o
s
t
"
h
t
t
p
:
/
/
:
USER docker 当前登录用户加入docker用户组 newgrp docker 最后更新用户组 docker ps 看看docker命令是否可以正常使用 如下: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/images/create?fromImage=mysql&tag=latest": dial unix /var/run/docker.sock: connect: permission denied :~
USERdocker当前登录用户加入docker用户组newgrpdocker最后更新用户组dockerps看看docker命令是否可以正常使用如下:GotpermissiondeniedwhiletryingtoconnecttotheDockerdaemonsocketatunix:///var/run/docker.sock:Post"http://: docker pull mysql:laster
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post “http://%2Fvar%2Frun%2Fdocker.sock/v1.24/images/create?fromImage=mysql&tag=laster”: dial unix /var/run/docker.sock: connect: permission denied
:~$ sudo groupadd docker
[sudo] password for william:
groupadd: group ‘docker’ already exists
:~$ sudo gpasswd -a
U
S
E
R
d
o
c
k
e
r
A
d
d
i
n
g
u
s
e
r
w
i
l
l
i
a
m
t
o
g
r
o
u
p
d
o
c
k
e
r
:
USER docker Adding user william to group docker :~
USERdockerAddinguserwilliamtogroupdocker: newgrp docker
:~$ docker ps
ConTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
:~$ docker pull mysql
Using default tag: latest
latest: Pulling from library/mysql
a10c77af2613: Pull complete
最后可以正常拉镜像了
问题分析:docker进程使用Unix Socket而不是TCP端口。而默认情况下,Unix socket属于root用户,需要root权限才能访问,所以docker守护进程启动的时候,会默认赋予名字为docker的用户组读写Unix socket的权限,创建docker用户组,并将当前用户加入到docker用户组中,那么当前用户就有权限访问Unix socket了,进而也就可以执行docker相关命令,另外使用sudo也能强制执行哦



