- Docker以root权限运行它的守护进程,来处理普通用户无法完成的操作(如挂载文件系统)。docker程序是Docker守护进程的客户端程序,同样也需要以root身份运行。用户可以使用“docker daemon”命令控制Docker守护进程
- 备注:在Docker 1.8之前,Docker守护进程是通过-d标志来控制的,而没有docker daemon子命令
-
/var /run/docker.sock:
- 守护进程监听这个Unix套接字文件,来获取来自客户端的Docker请求
- 如果系统中存在名为docker的用户组的话,Docker则会将该套接字文件的所有者设置为该用户组。这样,docker用户组的所有用户都可以直接运行Docker,而无需再使用sudo命令了
- 警告:前面已经提到,尽管docker用户组方便了Docker的使用,但它毕竟是一个安全隐患。因为docker用户组对Docker具有与root用户相同的权限,所以docker用户组中应该只能添加那些确实需要使用Docker的用户和程序
查看守护进程状态
sudo service docker status
启动、关闭、重启
# 停止守护进程
sudo service docker stop
# 启动守护进程
sudo service docker start
# 重启守护进程
sudo service docker restart
- 备注:也可以适当使用init系统来管理和更新Docker守护进程的启动配置
-H选项
- 运行Docker守护进程时,可以使用-H标志用来:
- 调整守护进程绑定监听接口的方式,可以指定不同的网络接口和端口配置
- 也可以让守护进程绑定到指定的Unix套接字路径上
- 例如,下面指定Docker守护进程绑定到主机的所有网络接口上
sudo docker daemon -H tcp://0.0.0.0:2375
- 例如,下面指定Docker守护进程绑定指定的套接字上
sudo docker daemon -H unix://home/docker/docker.sock
- 例如,下面同时绑定网络接口和套接字地址
sudo docker daemon -H tcp://0.0.0.0:2375 -H unix://home/docker/docker.sock
DOCKER_HOST环境变量
- 上面如果通过docker daemon命令来修改Docker的接口,那么客户端操作Docker服务端时,需要每次指定-H选项,例如
docker -H :2375
- 如果不想每次运行客户端都指定-H标志,那么可以更改DOCKER_HOST环境变量
- 备注:如果你的Docker运行在代理或者公司防火墙之后,也可以使用HTTPS_PROXY、HTTP_ PROXY和NO_PROXY选项来控制守护进程如何连接
TLS认证
- 默认情况下,Docker的客户端-服务器通信是不经认证的。这就意味着,如果把Docker绑定到对外公开的网络接口上,那么任何人都可以连接到该Docker守护进程。Docker 0.9及更高版本提供了TLS认证
- 在后面文章介绍Docker API时读者会详细了解如何启用TLS认证
-D选项
sudo docker daemon -D
- 使用-D标志可以用来输出Docker守护进程的更详细的信息
- 上面的配置都是使用命令进行配置,Docker重启之后都失效了,如果想要永久保存可以编写配置文件
ubuntu
- 在ubuntu系统下,配置文件为/etc/default/docker文件
- 默认内容如下
-
备注(重点):
- docker安装在桌面版ubuntu的时候,默认的配置文件/etc/default/docker里的配置是无效的(14.04 server版并无问题),导致之前的很多工作进展缓慢,这个问题在官方文档中有出现
- 所以如果是桌面版本的docker请修改/lib/systemd/system/docker.service配置文件并用"sudo systemctl daemon-reload"重启Docker服务
- 在后面的文章有演示案例:javascript:void(0)
Fedora、Red Hat
- 在Fedora和Red Hat发布版本中系统下,配置文件为/usr/lib/systemed/system/docker.service文件或/etc/sysconfig/docker文件
- 详情参阅:javascript:void(0)
- 我是小董,V公众点击"笔记白嫖"解锁更多【Docker】资料内容。