目录:
以非root用户身份管理Docker
默认情况下,Docker运行权限由用户root所有,而其他用户只能通过sudo使用它。Docker守护程序始终以root
用户身份运行。
如果不想在docker
命令前加上sudo
,需要创建一个名为docker的Unix组
并向其添加用户。
要创建docker
组并添加您的用户:
1.创建docker
组。
$ sudo groupadd docker
2.将您的用户添加到该docker
组。
$ sudo usermod -aG docker $USER
3.注销并重新登录,以便重新评估用户组的成员身份。
如果在虚拟机上进行测试,则可能需要重新启动虚拟机才能使更改生效。
在桌面Linux环境(如X Windows)上,完全注销会话,然后重新登录。
4.验证您是否可以运行docker
命令sudo
。
$ docker run hello-world
配置Docker以在启动时启动
大多数当前的Linux发行版(RHEL,CentOS,Fedora,Ubuntu 16.04及更高版本)使用systemd
管理系统自动启动的服务。Ubuntu 14.10及以下使用upstart。
systemd
$ sudo systemctl enable docker
要禁用此行为,只需将enable改为disable
。
$ sudo systemctl disable docker
如果需要添加HTTP代理,为Docker运行时文件设置不同的目录或分区,或进行其他自定义,请参阅 自定义systemd Docker守护程序选项。
upstart
Docker自动配置为在启动时启动 upstart
。要禁用此行为,请使用以下命令:
$ echo manual | sudo tee /etc/init/docker.override
chkconfig
$ sudo chkconfig docker on
配置Docker守护程序监听连接的位置
默认情况下,Docker守护程序监听UNIX套接字上的连接以接受来自本地客户端的请求。通过将Docker配置为监听IP地址和端口以及UNIX套接字,可以允许Docker接受来自远程主机的请求。有关此配置选项的更多详细信息,请参阅Docker CLI参考文章中的“将Docker绑定到另一个主机/端口或unix套接字”部分。
配置Docker以接受远程连接(docker.service)可以使用systemd的Linux发行版的systemd单元文件来完成,例如RedHat,CentOS,Ubuntu和SLES的最新版本,或者daemon.json
推荐用于不使用systemd的Linux发行版的文件。
配置Docker同时使用systemd
单元文件和daemon.json
文件来侦听连接会导致冲突,从而阻止Docker启动。
使用systemd
单元文件配置远程访问
1.使用以下命令编辑文件docker.service
sudo systemctl edit docker.service
2.添加或修改以下行,替换您自己的值
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd -H fd:// -H tcp://127.0.0.1:2375
3.保存文件。
4.重新加载systemctl
配置。
$ sudo systemctl daemon-reload
5.重启Docker。
$ sudo systemctl restart docker.service
6.通过查看netstat
的输出确认dockerd是否
正在侦听已配置的端口。
$ sudo netstat -lntp | grep dockerd
tcp 0 0 127.0.0.1:2375 0.0.0.0:* LISTEN 3758/dockerd
使用配置远程访问 daemon.json
1.将hosts
数组设置/etc/docker/daemon.json
为连接到UNIX套接字和IP地址,如下所示:
{
"hosts": ["unix:///var/run/docker.sock", "tcp://127.0.0.1:2375"]
}
2.重启Docker。
3.通过查看netstat
确认的输出是否dockerd
正在侦听已配置的端口来检查更改是否得到遵守。
$ sudo netstat -lntp | grep dockerd
tcp 0 0 127.0.0.1:2375 0.0.0.0:* LISTEN 3758/dockerd