安装Docker后的一些配置
文章目录
- 作为非root用户管理Docker
- 配置Docker开机自启动
作为非root用户管理Docker
Docker守护进程是和一个Unix socket绑定的。默认情况下这个Unix socket的拥有者是root用户,其他用户只能通过sudo
命令进行访问。Docker守护进程始终是以根用户的身份运行。
那普通用户如果不想每次在执行docker命令时都要在前面添加sudo
,应该怎么办呢?在上图中可以注意到docker.sock
的用户组docker
的权限为rw
,跟其用户权限一样,说明只要将普通用户添加到docker
这个用户组中,对于这个文件,普通用户就拥有和root用户相同的权限,执行docker
命令时也就不需要在前面加sudo
了。
网上有很多文章说要先创建docker
用户组,可能以前需要,但是现在在安装Docker的同时也会创建docker
这个用户组,默认情况下,它不会向组中添加任何用户。所以现在不需要我们手动创建用户组。通过查看文件/etc/group
可以看到docker
这个用户组已经存在了,且组中没有任何用户:
-
添加普通用户到
docker
用户组sudo usermod -aG docker $USER
-
-a, --append
:表示追加的意思,将指定的用户追加到指定的一个或多个补充组(supplementary group),仅与-G
选项一起使用。 -
-G, --groups
:指定一个或多个补充组(supplementary group),有多个的时候用逗号分隔。单独使用时,如果用户当前是未列出的组的成员,则该用户将从该组中删除。与-a
选项一起使用时,则会将用户追加到这些组中。 -
$USER
:表示当前登录的用户
执行命令后可以看到我的用户已经在
docker
这个用户组里面了: -
-
使用户组的改变生效
改变用户的群组之后需要重启系统后才能生效
在Linux中,也可以执行下面的命令让用户组的改变生效:
newgrp docker
-
验证是否可以在不使用
sudo
的情况下运行docker命令docker run hello-world
在不加
sudo
的情况下,普通用户也可以正常运行docker命令了。
配置Docker开机自启动
先看看当前Docker是否为开机启动:
sudo systemctl status docker
红色方框张的disabled
表示Docker没有配置开机自启动
使用如下命令将Docker配置为开机自启动:
sudo systemctl enable docker
可以看到红色方框的位置由之前的disabled
变为enabled
了,说明Docker是处于开机自启动的状态了
这时候重启系统,无需手动启动Docker就可以直接运行docker命令了。