《第一本Docker书(修订版)》——2.9 Docker守护进程

简介: 当Docker软件包安装完毕后,默认会立即启动Docker守护进程。守护进程监听/var /run/docker.sock这个Unix套接字文件,来获取来自客户端的Docker请求。如果系统中存在名为docker的用户组的话,Docker则会将该套接字文件的所有者设置为该用户组。

本节书摘来自异步社区《第一本Docker书(修订版)》一书中的第2章,第2.9节,作者:【澳】James Turnbull(詹姆斯•特恩布尔)著,更多章节内容可以访问云栖社区“异步社区”公众号查看

2.9 Docker守护进程

安装完Docker后,需要确认Docker的守护进程是否运行。Docker以root权限运行它的守护进程,来处理普通用户无法完成的操作(如挂载文件系统)。docker程序是Docker守护进程的客户端程序,同样也需要以root身份运行。用户可以使用docker daemon命令控制Docker守护进程。

注意
在Docker 1.8之前,Docker守护进程是通过-d标志来控制的,而没有docker daemon子命令。
当Docker软件包安装完毕后,默认会立即启动Docker守护进程。守护进程监听/var /run/docker.sock这个Unix套接字文件,来获取来自客户端的Docker请求。如果系统中存在名为docker的用户组的话,Docker则会将该套接字文件的所有者设置为该用户组。这样,docker用户组的所有用户都可以直接运行Docker,而无需再使用sudo命令了。

警告
前面已经提到,尽管docker用户组方便了Docker的使用,但它毕竟是一个安全隐患。因为docker用户组对Docker具有与root用户相同的权限,所以docker用户组中应该只能添加那些确实需要使用Docker的用户和程序。
2.9.1 配置Docker守护进程
运行Docker守护进程时,可以用-H标志调整守护进程绑定监听接口的方式。

可以使用-H标志指定不同的网络接口和端口配置。例如,要想绑定到网络接口,命令如代码清单2-46所示。

代码清单2-46 修改Docker守护进程的网络

$ sudo docker daemon -H tcp://0.0.0.0:2375
这条命令会将Docker守护进程绑定到宿主机上的所有网络接口。Docker客户端不会自动监测到网络的变化,需要通过-H选项来指定服务器的地址。例如,如果把守护进程端口改成4200,那么运行客户端时就必须指定docker -H :4200。如果不想每次运行客户端时都加上-H标志,可以通过设置DOCKER_HOST环境变量来省略此步骤,如代码清单2-47所示。

代码清单2-47 使用DOCKER_HOST环境变量

$ export DOCKER_HOST="tcp://0.0.0.0:2375"
警告
默认情况下,Docker的客户端-服务器通信是不经认证的。这就意味着,如果把Docker绑定到对外公开的网络接口上,那么任何人都可以连接到该Docker守护进程。Docker 0.9及更高版本提供了TLS认证。在本书第8章介绍Docker API时读者会详细了解如何启用TLS认证。
也能通过-H标志指定一个Unix套接字路径,例如,指定unix://home/docker/ docker.socket,如代码清单2-48所示。

代码清单2-48 将Docker守护进程绑定到非默认套接字

$ sudo docker daemon -H unix://home/docker/docker.sock
当然,也可以同时指定多个绑定地址,如代码清单2-49所示。

代码清单2-49 将Docker守护进程绑定到多个地址

$ sudo docker daemon -H tcp://0.0.0.0:2375 -H unix://home/docker/
  docker.sock```
提示
如果你的Docker运行在代理或者公司防火墙之后,也可以使用HTTPS_PROXY、HTTP_ PROXY和NO_PROXY选项来控制守护进程如何连接。
还可以使用-D标志来输出Docker守护进程的更详细的信息,如代码清单2-50所示。

代码清单2-50 开启Docker守护进程的调试模式

``$ sudo docker daemon -D``
要想让这些改动永久生效,需要编辑启动配置项。在Ubuntu中,需要编辑/etc /default/docker文件,并修改DOCKER_OPTS变量。

在Fedora和Red Hat发布版本中,则需要编辑/usr/lib/systemd/system/ docker. service文件,并修改其中的ExecStart配置项。或者在之后的版本中编辑/etc/ sysconfig/docker文件。

注意
在其他平台中,可以通过适当的init系统来管理和更新Docker守护进程的启动配置。
**2.9.2 检查Docker守护进程是否正在运行**
在Ubuntu中,如果Docker是通过软件包安装的话,可以运行Upstart的status命令来检查Docker守护进程是否正在运行,如代码清单2-51所示。

代码清单2-51 检查Docker守护进程的状态

$ sudo status docker
docker start/running, process 18147

此外,还可以用Upstart的start和stop命令来启动和停止Docker守护进程,如代码清单2-52所示。

代码清单2-52 用Upstart启动和停止Docker守护进程

$ sudo stop docker
docker stop/waiting
$ sudo start docker
docker start/running, process 18192

在Red Hat和Fedora中,只需要用service命令就可以完成同样的工作,如代码清单2-53所示。

代码清单2-53 在Red Hat和Fedora中启动和停止Docker

$ sudo service docker stop
Redirecting to /bin/systemctl stop docker.service
$ sudo service docker start
Redirecting to /bin/systemctl start docker.service

如果守护进程没有运行,执行docker客户端命令时就会出现类似代码清单2-54所示的错误。

代码清单2-54 Docker守护进程没有运行的错误

2014/05/18 20:08:32 Cannot connect to the Docker daemon. Is 'docker -d'
running on this host?

注意
相关文章
|
2月前
|
存储 Linux Docker
CentOS 7.6安装Docker实战案例及存储引擎和服务进程简介
关于如何在CentOS 7.6上安装Docker、介绍Docker存储引擎以及服务进程关系的实战案例。
136 3
CentOS 7.6安装Docker实战案例及存储引擎和服务进程简介
|
3月前
|
缓存 Serverless Docker
函数计算产品使用问题之怎么修改Docker守护进程配置
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
3月前
|
Kubernetes Shell 测试技术
在Docker中,可以在一个容器中同时运行多个应用进程吗?
在Docker中,可以在一个容器中同时运行多个应用进程吗?
|
3月前
|
监控 Linux API
在Docker中,docker run指令执行后,生成了哪些进程?
在Docker中,docker run指令执行后,生成了哪些进程?
|
Linux Docker 容器
在Docker守护进程停机期间保持容器运行(即重启Docker时,正在运行的容器不会停止)
在Docker守护进程停机期间保持容器运行(即重启Docker时,正在运行的容器不会停止)
400 0
|
存储 Cloud Native 网络协议
【云原生 | 06】Docker作为守护进程高效运行技巧展示
Docker守护进程是用户与Docker交互的枢纽,因而它是理解所有相关部分的最佳切入点。它控制着用户机器上的Docker访问权限,管理着容器与镜像的状态,同时代理着与外界的交互。
722 0
【云原生 | 06】Docker作为守护进程高效运行技巧展示
|
监控 Java 数据安全/隐私保护
在Docker容器中,有时候无法监控到正在运行的进程
在Docker容器中,有时候无法监控到正在运行的进程
310 2
|
存储 Ubuntu 关系型数据库
Docker进阶-Dockerfile建立一个自定义的镜像执行自定义进程
Docker进阶-Dockerfile建立一个自定义的镜像执行自定义进程
299 0
Docker进阶-Dockerfile建立一个自定义的镜像执行自定义进程
|
JSON Linux 程序员
Docker Container 就是一个进程,多新鲜啊?
Docker Container 就是一个进程,多新鲜啊?
Docker Container 就是一个进程,多新鲜啊?
|
Docker 容器
Docker selenium自动化 - 执行程序没反应、不执行原因,强制处理之前失败的进程,“... requests waiting for a slot to be free“问题解决
Docker selenium自动化 - 执行程序没反应、不执行原因,强制处理之前失败的进程,“... requests waiting for a slot to be free“问题解决
364 0
Docker selenium自动化 - 执行程序没反应、不执行原因,强制处理之前失败的进程,“... requests waiting for a slot to be free“问题解决
下一篇
无影云桌面