非root用户管理Docker及开机启动Docker
非root用户使用dockerdocker开机启动
非root用户管理Docker
Docker守护进程绑定到Unix的socket,而不是TCP端口,默认这个Unix socket属于root
用户,其他用户只能通过sudo
使用。Docker守护进程永远以root
用户运行。
如果不想在docker命令前加sudo
,创建一个Unix组叫做docker
,并向其中添加用户。当Docker守护进程启动后,就创建一个Unix socket,docker
组中的用户可以访问。
创建docker
组并添加用户
-
创建
docker
组sudo groupadd docker
-
添加用户到
docker
组sudo usermod -aG docker $USER
-
注销并重新登陆,以重新加载你的组员备份
如果是在虚拟机上测试,可能必须重启虚拟机。
在桌面Linux环境(如 X Windows)中,完全退出会话,然后重新登陆。
在Linux中,也可以运行下面命令以重新激活改变的组。
newgrp docker
-
验证不添加
sudo
也不执行docker命令docker run hello-world
此命令下载测试映像并在容器中运行。当容器运行时,它打印一条消息并退出。
如果在将用户添加到Docker组之前最初使用
sudo
运行Docker CLI命令,您可能会看到以下错误,这表明目录~/.docker/
被错误的权限创建,因为使用sudo
命令WARNING: Error loading config file: /home/user/.docker/config.json - stat /home/user/.docker/config.json: permission denied
为修复此问题,移除这个目录(此目录自动创建,但任何自定义设置已丢失)或者使用下面的命令,修改它的所有权和权限:
sudo chown "$USER":"$USER" /home/"$USER"/.docker -R sudo chmod g+rwx "$HOME/.docker" -R
配置Docker开机启动
大多数当前的Linux发行版(RHEL、CentOS、Fedora、Debian、Ubuntu 16.04及更高版本)都使用systemd
来管理系统启动时启动的服务。在Debian和Ubuntu上,Docker服务默认配置为启动时启动。要在引导其他发行版时自动启动Docker和Container,请使用以下命令:
sudo systemctl enable docker.service
sudo systemctl enable containerd.service
使用disable
禁用这种行为
sudo systemctl disable docker.service
sudo systemctl disable containerd.service
如果需要添加HTTP代理,请为Docker运行时文件设置不同的目录或分区,或进行其他自定义,参见:customize your systemd Docker daemon options.
更多推荐
所有评论(0)