jaw*_*ira 54 containers docker docker-compose docker-desktop
我总是在 Ubuntu 上使用 docker-compose,在这个环境中容器用下划线命名:
但现在,我切换到 Windows 10(使用 Docker Desktop)并且命名约定发生了变化:
我不知道这是否取决于操作系统,但这是一个问题。我的脚本失败了,因为它们依赖于以下划线命名的容器。
有没有办法自定义它并使用下划线而不是破折号?
ten*_*ive 70
这种命名约定差异似乎是 Docker Compose 版本 v1 (Python) 和 v2 (Go) 之间的差异。与 Docker Desktop 一起打包的最新 docker/compose 存储库是docker/compose v2 分支中的 golang 版本。查看此分支中的源代码:
// Separator is used for naming components
var Separator = "-"
Run Code Online (Sandbox Code Playgroud)
python分支源代码使用_组件的命名约定,例如:
def rename_to_tmp_name(self):
"""Rename the container to a hopefully unique temporary container name
by prepending the short id.
"""
if not self.name.startswith(self.short_id):
self.client.rename(
self.id, '{}_{}'.format(self.short_id, self.name)
)
Run Code Online (Sandbox Code Playgroud)
为了解决这个问题,您可能需要卸载 Docker Desktop 附带的 compose 并恢复到 1.28.x 版本。撰写自述文件 说您可以使用它pip install docker-compose来安装。compose 文档有一个关于升级此版本以及迁移到 v2 的命令的部分: https: //docs.docker.com/compose/install/#upgrading但您的问题表明您希望保留_v1 命名约定。
正如评论中提到的,以下选项保留了撰写兼容性:
--compatibility标志docker-composeCOMPOSE_COMPATIBILITY=true环境变量其他文档链接:
jaw*_*ira 12
上次 Docker Desktop 更新后,“docker-compose”自动降级到 v1。
现在有一个新选项可以选择“docker-compose”版本,默认情况下该选项是禁用的:
只是为了让人们免于疯狂:Docker Desktop 打包似乎有问题。
我在 Windows 11 上运行 Docker Desktop 4.3.0 (71786),并使用 WSL2 后端。
以下是我的终端中的 docker-compose 信息:
% which docker-compose
/usr/bin/docker-compose
% ls -al /usr/bin/docker-compose
lrwxrwxrwx 1 root root 56 Dec 9 19:52 /usr/bin/docker-compose -> /mnt/wsl/docker-desktop/cli-tools/usr/bin/docker-compose
% sha256sum /usr/bin/docker-compose
35dd89af6820dc111991f4c9b8ed7b253fefa33a30392fed506490ddc2553e91 /usr/bin/docker-compose
% docker-compose --version
Docker Compose version v2.2.1
Run Code Online (Sandbox Code Playgroud)
Docker Desktop 已全新安装。在此版本中,_用作分隔符。
现在,让我们切换到从GitHub下载的相同版本的 docker-compose :
% sudo wget -q https://github.com/docker/compose/releases/download/v2.2.1/docker-compose-linux-x86_64 -O /usr/local/bin/docker-compose-v2.2.1-gh
% sudo chmod 755 /usr/local/bin/docker-compose-v2.2.1-gh
% sudo ln -sf /usr/local/bin/docker-compose-v2.2.1-gh /usr/bin/docker-compose
% ls -al /usr/bin/docker-compose
lrwxrwxrwx 1 root root 39 Dec 9 20:18 /usr/bin/docker-compose -> /usr/local/bin/docker-compose-v2.2.1-gh
% sha256sum /usr/bin/docker-compose
68a3bb67bd25abf0f6da2a9d171a873ac182c3cc1c51fb4866e7770675823d2f /usr/bin/docker-compose
% docker-compose --version
Docker Compose version v2.2.1
Run Code Online (Sandbox Code Playgroud)
在 GitHub 版本中,-如预期一样用作分隔符。
这意味着 Docker 不仅会重新打包 GitHub 上提供的二进制文件,还会从与 GitHub 上标记为相同版本的源树不同的源树中进行自己的构建。(感谢@tentative指出定义分隔符的代码行!)
最后一些注意事项:
-按预期使用。-和之间的切换已经不是第一次_发生了。有趣的是,我记得几个月前也遇到过同样的问题,但升级后它就消失了。docker-compose up将使用现有的容器名称。这意味着您可能需要一段时间才能注意到更改。| 归档时间: |
|
| 查看次数: |
24940 次 |
| 最近记录: |