Docker核心组件 + docker daemon配置

Docker Daemon是docker架构中运行在后台的守护进程,可以分为docker Server, Engine和Job三部分。

Docker Daemon

Docker Daemon通过Docker server模块接受docekr clinet的请求,并在Engine中处理请求,然后根据请求类型,创建出指定的Job并运行。

运行过程的作用有下面几种:

  • 从docker registry中获取镜像
  • 通过grahdriver执行容器镜像的本地化操作
  • 通过networkdriver执行容器网络环境配置
  • 通过execdriver执行容器呢运行的执行工作。

参考: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默认镜像存储位置

默认的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(推荐)
}

配置devicemapper存储驱动

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 Client

Docker是一个C/S架构,通过二进制文件docker创建docker客户端将请求类型与参数发送给docker server,docker server具体执行命令调用。

参考:docker client

Docker Sever

docker server是daemon server的重要组成部分,接受来自docker client发送的请求,并按照相应的路由规则实现请求的路由分发,最终将请求处理的结果返回给docker client。docker server的整个生命周期氛围三步:

  • 创建docker server的job
  • 配置job的环境变量
  • 触发执行job

参考:docker源码分析之docker server参考

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值