Skip to content

Dockerctl

Dockerctl 是一个 Docker 服务管理工具,用于管理 Docker 守护进程的生命周期和配置。

信息

请使用 root 用户运行。

命令说明

dockerctl 是一个命令行工具,旨在简化对 Docker 守护程序及其资源的管理。它不用于替代日常命令(如 docker rundocker ps),而是作为管理底层 Docker 服务本身的便捷封装。

主要功能包括:

  • 服务控制:轻松启动、停止、重启 Docker 引擎,并检查其状态。
  • 系统清理:提供 prune 命令,可快速清理未使用的容器、镜像和卷,将系统维护整合到一个工具中。
  • 配置显示:允许您查看当前的 Docker 服务配置。
language-shell
Usage:
  dockerctl [command]

Available Commands:
  completion  Generate the autocompletion script for the specified shell
  help        Help about any command
  prune       clear docker data
  restart     restart docker service
  show-config show the config of dockerservice
  start       start docker service
  status      show the status of dockerservice
  stop        stop docker service

dockerctl start

启动 Docker 服务。

language-shell
dockerctl start

dockerctl stop

停止 Docker 服务。

language-shell
dockerctl stop

终端录制

停止并启动 Docker 服务

在演示库中打开

适用于维护 Docker 服务或清理数据前后确认服务状态。

dockerctl status

显示 Docker 服务的当前运行状态。

查看默认配置:

language-shell
dockerctl status

示例输出:

language-shell
 docker.service - Docker Application Container Engine
        Active: active (running) since 2024-12-02 04:40:33 Monday; 0 days ago
         Tasks: 116
        Memory: 0.00%
           CPU: 0.00%

终端录制

检查 Docker 服务状态

在演示库中打开

适用于进入实例后快速判断 Docker 容器功能是否已经可用。

dockerctl show-config

显示 Docker 服务的当前配置。

language-shell
dockerctl show-config [flags]

查看默认配置:

language-shell
dockerctl show-config

示例输出:

language-json
{
  "proxies": {}
}

dockerctl restart

重启 Docker 服务。通常在修改配置后使用此命令使更改生效。

language-shell
dockerctl restart

终端录制

重启 Docker 服务

在演示库中打开

适用于修改 Docker 配置后,让服务重新加载配置。

dockerctl prune

清除 Docker 服务中的未使用数据,包括容器、镜像、卷和网络。

language-shell
dockerctl prune

警告

该操作具有破坏性,会删除 Docker 服务管理下的未使用数据。执行前请确认:

  • 已停止 Docker 服务(先运行 dockerctl stop)。
  • 清理不可恢复,后续可能需要重新拉取镜像或重建镜像。
  • 清理期间 Docker 服务不可用,需在完成后运行 dockerctl start 恢复服务。

清理范围与影响:

  • 删除已停止的容器与其匿名资源。
  • 删除未使用的镜像、悬挂层(dangling layers)。
  • 删除未使用的网络与卷(如适用)。
  • 删除构建缓存(如适用),以最大化释放空间。

查看占用(只读、不做清理):

language-shell
docker system df

信息

  • 必须先运行 dockerctl stop 停止 Docker 服务。
  • 运行 dockerctl prune 清除数据后,需要运行 dockerctl start 启动 Docker 服务。
  • Docker 容器功能不支持通过 docker system prune 清除内部的 Docker 容器与镜像;docker image prune / docker builder prune 在本环境也可能被策略禁用或不完全生效。请使用 dockerctl prune 进行清理。

管理 Docker 服务配置

Docker 容器服务支持修改 docker 服务配置,添加 proxiesregistry-mirrors 等。修改以下任意文件,均需要执行 dockerctl restart 使更改生效。

Docker 服务配置文件

  • /etc/docker/daemon.json。用法参考 Docker Daemon 官方文档Docker Hub 官方文档。示例配置如下:

    language-json
    {
        "proxies": {
        "http-proxy": "http://proxy.example.com:3128",
        "https-proxy": "https://proxy.example.com:3129",
        "no-proxy": "*.test.example.com,.example.org,127.0.0.0/8,*.infini-ai.com"
        },
        "registry-mirrors": ["https://<my-docker-mirror-host>"]
    }
  • /tmp/docker-config/config.json(该文件在极值算力实例重启后会复原,无法持久化保存修改)。用法参考 Docker CLI 官方文档。示例配置如下:

    language-json
    {
    "proxies": {
      "default": {
        "httpProxy": "http://proxy.example.com:3128",
        "httpsProxy": "https://proxy.example.com:3129",
        "noProxy": "*.test.example.com,.example.org,127.0.0.0/8,*.infini-ai.com"
      }
    }
    }

警告

  • 请务必注意两份配置文件 proxies 字段差异。
  • 建议在 no-proxy 字段合理配置不需要通过代理访问的服务。

修改 Docker 服务配置

  1. 编辑配置文件。

    language-shell
    mkdir -p /etc/docker
    # 修改 docker daemon 配置
    vim /etc/docker/daemon.json
  2. 重启服务以应用更改。

    language-shell
    dockerctl restart
  3. 验证配置是否生效。

    language-shell
    dockerctl show-config

终端录制

查看并应用 Docker 服务配置

在演示库中打开

适用于添加 Docker 代理、no-proxy 或 registry mirror 后验证配置。

开机状态下手动清除 Docker 服务数据

Docker 服务共享极值算力实例主容器的 100GiB 存储空间。如需在开机状态下清理已停止的容器、镜像与卷,可以使用 dockerctl prune 命令。具体流程如下:

  1. 停止 Docker 服务。

    language-shell
    dockerctl stop
  2. 删除 Docker 服务数据。

    language-shell
    dockerctl prune
  3. 启动 Docker 服务。

    language-shell
    dockerctl start

终端录制

清理 Docker 服务数据

在演示库中打开

适用于释放 Docker 镜像、容器、卷和构建缓存占用的实例系统盘空间。

常见问题

为何 docker system prune/docker image prune/docker builder prune 没有生效或被拒绝?

在当前 Docker 容器功能中,平台对清理类 API 有严格限制,标准清理命令可能被策略拦截或无法触达实际数据路径。请改用 dockerctl prune 执行清理,并严格按照:dockerctl stopdockerctl prunedockerctl start 的顺序进行。查看占用可使用只读命令 docker system df