博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《第一本Docker书(修订版)》——2.9 Docker守护进程
阅读量:5930 次
发布时间:2019-06-19

本文共 2704 字,大约阅读时间需要 9 分钟。

本节书摘来自异步社区《第一本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?

注意

转载地址:http://kcytx.baihongyu.com/

你可能感兴趣的文章
xen添加网卡方法
查看>>
29.typedef
查看>>
windows下搭建svn服务器及权限配置
查看>>
匿名函数和闭包
查看>>
编程乐趣:一个强制换行的小方法
查看>>
总结了下关于Spring框架的重要问题
查看>>
Proxmox VE2.2虚拟化安装配置学习笔记(一)
查看>>
ThinkPHP中配置伪静态(URL重写)规则
查看>>
Python version 2.7 required, which was not foun...
查看>>
maven 配置
查看>>
原子操作
查看>>
Android开发必不可少原理问题
查看>>
iOS 离屏渲染
查看>>
rm、cp、mV相关用法
查看>>
百分90响应时间
查看>>
asp.net 实现所谓的计划任务(举例)
查看>>
C/C++ 技术问题整理
查看>>
CCObject、CCCopy 类的分析
查看>>
主流webservice框架整理
查看>>
简化版的SHA1算法C语言版
查看>>