侧边栏壁纸
博主头像
星空之窗

学如逆水行舟,不进则退。

  • 累计撰写 4 篇文章
  • 累计创建 14 个标签
  • 累计收到 4 条评论

目 录CONTENT

文章目录

[日常知识] - Docker 小问

星河景明
2025-02-13 / 1 评论 / 2 点赞 / 13 阅读 / 0 字 / 正在检测是否收录...
温馨提示:
部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

[日常知识] - Docker 小问

Docker 代理相关

单纯修改 Shell 环境变量的方法无法使 docker 使用上代理,须为守护进程配置代理

推荐方式:

在 Docker Engine 23.0 及更高版本中,您还可以在 daemon.json 文件中为守护进程配置代理行为[1][2]

{
  "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"
  }
}

Tabby 隧道不稳定

通过上述方法给 docker 配置好代理后采取了远程端口 ssh 连接的方式使用代理,但是使用 tabby 却断断续续的,导致 pull 失败,使用 finalshell 成功了。

docker ps 指定输出格式

很多时候 docker ps 时,展示可能会折行或者显示不下等,看着乱七八糟的

解决方案:使用 docker format 格式化搭配 less 分页展示

推荐使用 docker format 的方法,将下述函数写入 Shell 环境变量然后重登或 source 环境变量。

docker-ps() {
    local format="table"
    local columns=()
    local show_all=false

    # 解析参数
    for arg in "$@"; do
        case $arg in
            -a)
                show_all=true
                ;;
            --all)
                columns=("{{.ID}}" "{{.Image}}" "{{.Names}}" "{{.Status}}" "{{.Ports}}")
                ;;
            --id)
                columns+=("{{.ID}}")
                ;;
            --image)
                columns+=("{{.Image}}")
                ;;
            --names)
                columns+=("{{.Names}}")
                ;;
            --status)
                columns+=("{{.Status}}")
                ;;
            --ports)
                columns+=("{{.Ports}}")
                ;;
        esac
    done

    # 如果没有指定列,使用默认列
    if [ ${#columns[@]} -eq 0 ]; then
        columns=("{{.ID}}" "{{.Image}}" "{{.Names}}" "{{.Status}}")
    fi

    # 构建格式字符串
    local format_str="$format"
    for col in "${columns[@]}"; do
        format_str="$format_str\t$col"
    done

    # 执行 docker ps 命令并通过 less 分页显示
    if [ "$show_all" = true ]; then
        docker ps -a --format "$format_str" | less -S
    else
        docker ps --format "$format_str" | less -S
    fi
}

参数说明

参数 说明
-a 显示所有容器(包括已停止的),等同于 docker ps -a
--all 格式化显示所有列信息,包括 IDImageNamesStatusPorts
--id 仅显示容器的 ID 列。
--image 仅显示容器使用的 Image 列。
--names 仅显示容器的 Names 列。
--status 仅显示容器的 Status 列。
--ports 仅显示容器的 Ports 列。

默认行为

  • 若不提供任何参数,函数将显示运行中容器的 IDImageNamesStatus 列。
  • 若使用 -a 参数,将显示所有容器的 IDImageNamesStatus 列。
2
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin

评论区