docker本地注册表“exec:\”htpasswd \“:在$ PATH中找不到可执行文件”

2024-01-07

直到最近这还工作得很好

docker run --entrypoint htpasswd registry:2 -Bbn myuser  mypwd  > /my/registry2/reg/hub/auth/htpasswd

现在它出错了


docker: Error response from daemon: OCI runtime create failed: container_linux.go:349: starting container process caused "exec: \"htpasswd\": executable file not found in $PATH": unknown.

这是在 Ubuntu 18.04 和 20.04 上使用 docker

docker version
Client: Docker Engine - Community
 Version:           19.03.11
 API version:       1.40
 Go version:        go1.13.10
 Git commit:        42e35e61f3
 Built:             Mon Jun  1 09:12:22 2020
 OS/Arch:           linux/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          19.03.11
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.13.10
  Git commit:       42e35e61f3
  Built:            Mon Jun  1 09:10:54 2020
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.2.13
  GitCommit:        7ad184331fa3e55e52b890ea95e65ba581ae3429
 runc:
  Version:          1.0.0-rc10
  GitCommit:        dc9208a3303feef5b3839f4323d9beb36df0a9dd
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683


如果您将本地 docker 注册表固定到,它将继续工作

registry:2.7.0

而不是仅使用来获取最新版本 2registry:2可悲的是它已经坏了

详情请参阅https://github.com/docker/distribution-library-image/commit/ab00e8dae12d4515ed259015eab771ec92e92dd4 https://github.com/docker/distribution-library-image/commit/ab00e8dae12d4515ed259015eab771ec92e92dd4(他们删除了 apache2-utils 包)并且https://github.com/GoogleContainerTools/jib/pull/2538/commits/f816c837e34eb389c2cdee1bc9a2918c5d2e33e3 https://github.com/GoogleContainerTools/jib/pull/2538/commits/f816c837e34eb389c2cdee1bc9a2918c5d2e33e3 and https://github.com/GoogleContainerTools/jib/pull/2539 https://github.com/GoogleContainerTools/jib/pull/2539如中所引用的https://github.com/docker/distribution-library-image/issues/106 https://github.com/docker/distribution-library-image/issues/106

或者,您可以使用以下命令安装二进制 htpasswd,而不是从注册表内部执行 htpasswd:2

apt-get install apache2-utils # thankfully this is NOT the apache server

并使用语法

htpasswd -Bbn myuser  mypwd  > /my/registry2/reg/hub/auth/htpasswd

在 Ubuntu 18.04 或 20.04 上

PS 这里是来自 apache2-utils 包的所有文件...只是一些实用程序而不是任何服务器

dpkg -L apache2-utils 

/.
/usr
/usr/bin
/usr/bin/ab
/usr/bin/checkgid
/usr/bin/fcgistarter
/usr/bin/htcacheclean
/usr/bin/htdbm
/usr/bin/htdigest
/usr/bin/htpasswd
/usr/bin/logresolve
/usr/bin/rotatelogs
/usr/sbin
/usr/sbin/check_forensic
/usr/sbin/httxt2dbm
/usr/sbin/split-logfile
/usr/share
/usr/share/doc
/usr/share/doc/apache2-utils
/usr/share/doc/apache2-utils/changelog.Debian.gz
/usr/share/doc/apache2-utils/copyright
/usr/share/man
/usr/share/man/man1
/usr/share/man/man1/ab.1.gz
/usr/share/man/man1/htdbm.1.gz
/usr/share/man/man1/htdigest.1.gz
/usr/share/man/man1/htpasswd.1.gz
/usr/share/man/man1/httxt2dbm.1.gz
/usr/share/man/man1/logresolve.1.gz
/usr/share/man/man8
/usr/share/man/man8/check_forensic.8.gz
/usr/share/man/man8/checkgid.8.gz
/usr/share/man/man8/fcgistarter.8.gz
/usr/share/man/man8/htcacheclean.8.gz
/usr/share/man/man8/rotatelogs.8.gz
/usr/share/man/man8/split-logfile.8.gz

为了更好地衡量,我给 docker 订了一张票https://github.com/docker/docker.github.io/issues/11060 https://github.com/docker/docker.github.io/issues/11060

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

docker本地注册表“exec:\”htpasswd \“:在$ PATH中找不到可执行文件” 的相关文章

随机推荐

  • Django 根据 ChoiceField 选择显示字段

    我一直很难找到如何在 django 中创建一个依赖于表单中另一个字段的选择的文本字段 仅当选择设置为 购买 时才需要显示此字段 现在我遇到一个问题 它不会根据下拉选择进行更新 而是仅在我点击按钮 提交 表单后进行更新 有没有办法获取当前选择
  • RISC-V 使用 LUI 和 ADDI 构建 32 位常量

    LUI 加载立即数 用于构建32位常量并使用U型格式 LUI 将 U 立即数放入目标寄存器 rd 的高 20 位 并用零填充最低 12 位 我在手册中找到了这个 但是如果我想将 0xffffffff 移动到寄存器 我需要的所有代码是 LUI
  • 将“增强记录”分配给普通“数据类型”变量时,应重载什么运算符?

    首先 我需要知道我想做的事情是否可行 如果可能的话 我需要知道如何做 演示问题比解释问题要容易得多 所以这里是 我有一个 增强记录 目的 虽然对这个问题并不重要 是生成一个 智能字符串 类型 以替换普通的字符串类型 TLKString re
  • 计算对象数组中属性的平均值

    假设有一个由两个或多个对象组成的数组 const arr PM1 10 PM10 20 PM1 20 PM10 30 CO 27 NO2 30 如何有效地计算组成数组的对象中每个属性的平均值 我事先不知道每个对象的属性 即使有共同的属性 我
  • Bash 中的正则表达式:不想包含目录

    我有一个图像列表 使用以下行收集 find mindepth 1 type f name JPG grep MG 0 9 0 9 0 9 0 9 JPG output DCIM 103canon IMG 0039 JPG DCIM 103c
  • R.styleable无法解析

    海朋友 我的java文件表明这个错误 R styleable 无法解析 我的 xml 文件
  • 在 PHP 中使用用户输入的变量设置文件名

    我只是想知道如何使用变量的名称在 PHP 中设置文件名 当我运行以下代码时
  • Xamarin.iOS 上的 SignalR - 随机无法调用 Hub 方法

    我有一个简单的Hub在 Azure 中运行 我可以通过 Windows 中的控制台应用程序完美地工作 我刚刚构建了一个简单的测试 Xamarin iOS 应用程序 它给出了一些奇怪的行为 随机在 LTE Wifi 或模拟器 设备上 调用集线
  • 在 Windows 上使用域用户使用 Ansible

    我开始学习 Ansible 但文档并没有太大帮助 我已经在 RHEL 上安装了控制机并创建了必要的hosts文件和窗口 yml 但是 当尝试连接到远程 Windows 服务器以取回 pong 时 我收到以下错误 root myd666 an
  • 如何保存Django ModelFormSet?

    我现在很绝望 我无法弄清楚这一点 对我来说 这应该很容易做到 但我还没有找到任何解释这一点的答案 两个模型之间没有外键 class Employee models Model surname models CharField max len
  • BufferedReader 的错误使用

    s new Scanner new BufferedReader new InputStreamReader this clientSocket getInputStream while s hasNext System out print
  • Symfony2 Doctrine 无法识别的字段:

    我创建了一个实体来存储我通过 api 提取的一些数据 当我尝试 findByOne 查看该条目是否已存在时 我收到一条错误消息 指出该字段无法识别 我已经完成了 php 应用程序 控制台学说 schema update force 我可以在
  • Java检查字符串是否回文的方法[重复]

    这个问题在这里已经有答案了 我想检查一个字符串是否是回文 我想学习一种简单的方法来使用最少可能的字符串操作来检查相同的内容 Using reverse是多余的 因为您不需要生成额外的字符串 您只需要查询现有的字符串 以下示例检查第一个和最后
  • 组合列表和字典理解

    我有某种冗长的逻辑 我想用一些理解来压缩 本质上 我有一个正在读取的 dict 对象 其中有 16 个我关心的值 我通过以下理解获得了我想要的密钥 I d i for i in range 16 源字典看起来像这样 I0 0 1 5 2 I
  • .NET MVC Fire and Forget Method 也立即返回 View

    我正在寻找 Fire Forget 方法的最佳解决方案 并立即返回 View 据我所知 我是否设置了 Action 的返回类型Task
  • 将文本文件加载到 RichTextBox 的最快方法是什么?

    我使用 OpenFIleDialog 将文本文件加载到 RichTextBox 中 但是 当大量文本 例如大约 50 70 行的歌曲文本 并且我单击 打开 时 程序会挂起几秒钟 3 5 秒 正常吗 也许有一些更快的方法或组件来加载文本文件
  • 如何在bootstrap中设置datetimepicker的MinDate和maxDate属性

    我想在引导程序中为 datetimepicker 动态设置 minDate 和 maxDate 属性 请帮我解决这个问题 在这种情况下 在一个日期时间选择器中选择日期时 应将该选定日期设置为其他日期时间选择器的 minDate 在第二个日期
  • 分离的 pthread 和内存泄漏

    有人可以向我解释一下为什么这个简单的代码会泄漏内存吗 我相信 由于 pthread 是在分离状态下创建的 因此它们的资源应该在终止后立即释放 但事实并非如此 我的环境是Qt5 2 include
  • Visual Studio 2017 错误无法打开“X”进行写入 - 对路径的访问被拒绝

    抱歉 我似乎无法修复此错误 严重性代码 说明 项目文件行抑制状态 错误 CS2012 无法打开 C Users Usuario source repos WindowsFormsApp1 WindowsFormsApp1 obj Debug
  • docker本地注册表“exec:\”htpasswd \“:在$ PATH中找不到可执行文件”

    直到最近这还工作得很好 docker run entrypoint htpasswd registry 2 Bbn myuser mypwd gt my registry2 reg hub auth htpasswd 现在它出错了 dock