• docker服务无法关停的原因


    最近对交付的项目进行维护,需要关停docker服务。一开始做了如下操作:

    systemctl stop docker

    systemctl disable docker

    以为后面设备重启时,docker就会自动关闭了。结果重启后,发现docker还是启动了。

    systemctl is-enabled docker,确实发现docker是disable的。那是怎么回事呢?

    这次直接在命令行中,执行systemctl stop docker,发现有警告,如下:

    意思是,docker.socket可能也会把docker服务启动起来。

    检查了一下,docker.socket的状态,发现这个服务确实处于运行状态。

     那docker.socket又是干啥用的呢?

    原来,安装了docker后,docker可以分为几个部分的内容:

    1. docker客户端。

    我们在shell中运行docker ps,docker image,其实调用的是docker客户端程序。一般存在于/usr/bin下,名字叫就做docker.

    2. docker守护

    存在于/usr/bin下,名字叫dockerd。我们讲的docker服务,实质上更多的就是这个dockerd服务。

    3. docket.socket

    用来实现docker和dockerd之间API通讯。在/lib/systemd/system/docker.socket中,是这样描述的:

    我们执行docker指令时,实际上客户端会将指令发给dockerd。通过什么方式传送指令呢?默认是通过/var/run/docker.sock这个socket来实现(如果不是,需要在/etc/docker下面创建daemon.json文件)。但是通讯的话,光有socket这个通道是不够的,还需要访问这个通道的客户端和服务端程序。服务端程序就是docker.socket了。所以如果把docker.socket服务开启,同时执行docker ps等客户端指令,那么即使此时dockerd没有运行,docker.socket也会去将它拉起来。但是如果docker.socket这个服务也没有处于运行状态,那么就会报错:

     所以要真正关闭docker服务,除了systemctl stop docker.service,还需要systemctl stop docker.socket。

  • 相关阅读:
    Pandas 操作数据(三)
    基于sanic的服务使用celery完成动态修改定时任务
    Spring JdbcTemplate.queryForMap()
    【UV打印机】墨路之过滤器
    文华财经T8自动化交易程序策略模型指标公式源码
    OpenCV中的RGB与YUV转换
    第六章 变量的存储类型
    2.4路由日志管理
    Camunda 7.x 系列【38】表单服务 FormService
    CleanMyPC比360管家好用N倍的电脑清理软件
  • 原文地址:https://blog.csdn.net/guolisong/article/details/126190083