非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)