Docker Daemon是docker架构中运行在后台的守护进程,可以分为docker Server, Engine和Job三部分。
Docker Daemon通过Docker server模块接受docekr clinet的请求,并在Engine中处理请求,然后根据请求类型,创建出指定的Job并运行。
运行过程的作用有下面几种:
参考:docker 源码分析
默认配置下,docker daemon只能响应本地的客户端请求。如果允许远程客户端请求或者修改docker 启动的镜像/容器大小,可以修改配置文件。
编辑配置文件:
/etc/systemd/system/multi-user.target.wants/docker.service
在环境变量ExecStart后,添加-H tcp://0.0.0.0,即允许来自任意IP的客户端连接
重启docker daemon
systemctl restart docker.service
可以通过下面的命令与远程服务器通信
docker -H 服务器IP地址 info
docker安装后默认没有daemon.json的配置文件,需要手动创建。配置文件的默认路径为:/etc/docker/daemon.json
**注意:**配置文件中如果已经有某个配置项,则无法在启动参数中增加,会出现冲突的错误。如果在daemon.json文件中进行配置,需要docker版本高于1.12.6(在这个版本上不生效,1.13.1以上是生效的)
1、如何配置 registry 私库相关的参数
涉及以下2个参数:
“insecure-registries”: [], #这个私库的服务地址
“registry-mirrors”: [], #私库加速器
# cat /etc/docker/daemon.json
{
"registry-mirrors": [
"https://d8b3zdiw.mirror.aliyuncs.com"
],
"insecure-registries": [
"https://ower.site.com"
],
创建并修改完daemon.json文件后,需要让这个文件生效。
#reload配置文件
sudo systemctl daemon-reload
#重启docker服务
sudo systemctl restart docker.service
#查看状态
sudo systemctl status docker -l
当我们需要对docker服务进行调整配置时,不用去修改主文件 docker.service的参数,通过daemon.json配置文件来管理,更为安全、合理。
默认的docker存放位置为:/var/lib/docker
可以通过下面的命令查看
docker info
在Docker RootDir看到该位置。这个位置存储大小有限制,后期随着镜像文件增大,会不好管理,需要修改镜像和容器的存放路径。
修改docker.service文件。在ExecStart=/usr/bin/dockerd变量下,使用–graph参数指定存储位置。
service docker stop
sudo vim /usr/lib/systemd/system/docker.service
# 添加:--graph=/data/tools/docker(想要挂在的存储路径)
sudo systemctl daemon-reload
sudo systemctl restart docker.service
如果是高版本的docker,就可以修改daemon.json文件。修改后立即生效,不需要重启docker服务
sudo vim /etc/docker/daemon.json
#下面为文件内容:
{
"registry-mirrors": ["http://***.***.com"],
"graph":"/data/tools/docker" #version>1.2
"data-root":"/home/qadev/.dockerlib" #version>17(推荐)
}
sudo systemctl stop docker
vim /etc/docker/daemon.json
#添加下面的内容
{
"storage-driver":"devicemapper"
}
sudo systemctl start docker
docker info #寻找storage Driver变量,验证修改
同样的方式,如果修改storage options,可以在daemon.json里写入下面的内容
{
"storage-driver": "devicemapper",
"storage-opts": [
"dm.directlvm_device=/dev/xdf",
"dm.thinp_percent=95",
"dm.thinp_metapercent=1",
"dm.thinp_autoextend_threshold=80",
"dm.thinp_autoextend_percent=20",
"dm.directlvm_device_force=false",
"dm.basesize=50G" # 限制镜像和容器大小:The default value is 10G
]
}
Docker是一个C/S架构,通过二进制文件docker创建docker客户端将请求类型与参数发送给docker server,docker server具体执行命令调用。
docker server是daemon server的重要组成部分,接受来自docker client发送的请求,并按照相应的路由规则实现请求的路由分发,最终将请求处理的结果返回给docker client。docker server的整个生命周期氛围三步: