一、守护进程介绍
  • 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的使用,但它毕竟是一个安全隐患。因为docker用户组对Docker具有与root用户相同的权限,所以docker用户组中应该只能添加那些确实需要使用Docker的用户和程序
二、守护进程的状态、启动、关闭、重启

查看守护进程状态

sudo service docker status

带你了解Docker背后的守护进程_配置文件_02

启动、关闭、重启

# 停止守护进程
sudo service docker stop

# 启动守护进程
sudo service docker start

# 重启守护进程
sudo service docker restart

带你了解Docker背后的守护进程_守护进程_03

  • 备注:也可以适当使用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背后的守护进程_配置文件_04

  • 默认内容如下

带你了解Docker背后的守护进程_配置文件_05

  • 备注(重点):
    • 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】资料内容。

带你了解Docker背后的守护进程_docker_06