docker-撰写容器名称使用破折号(-)而不是下划线(_)
docker-compose container name use dash (-) instead of underscore (_)
我一直在 Ubuntu 上使用 docker-compose,在这种环境下,容器的命名带有下划线:
- <项目>_<服务>_<副本>
但现在,我切换到 Windows 10(使用 Docker 桌面)并且命名约定已更改:
- <项目>-<服务>-<副本>
我不知道这是否与 OS 相关,但这是一个问题。我的脚本失败了,因为它们依赖于用下划线命名的容器。
有没有办法自定义它并使用下划线而不是破折号?
此命名约定差异似乎是 Docker Compose 版本 v1 (Python) 和 v2 (Go) 之间的差异。与 Docker Desktop 打包在一起的最新 docker/compose 存储库是此分支中 docker/compose v2 branch. Looking at the source code here 中的 golang 版本:
// Separator is used for naming components
var Separator = "-"
python 分支源代码使用组件的 _
命名约定,here 例如:
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)
)
关于解决这个问题,您可能需要卸载 Docker Desktop 中包含的 compose 并恢复到 1.28.x 版本。 compose readme says you can use pip install docker-compose
to install. The compose docs have a section about upgrading this and commands to migrate to v2: https://docs.docker.com/compose/install/#upgrading 但你的问题表明你想保留 _
v1 命名约定。
如评论中所述,以下选项保留了撰写兼容性:
- 在
docker-compose
命令中使用 --compatibility
标志
- 设置
COMPOSE_COMPATIBILITY=true
环境变量
其他文档链接:
- 此处讨论向后兼容性:https://github.com/docker/compose#about-update-and-backward-compatibility
- Docs/Readmes 建议安装 compose-switch 用于翻译 docker-compose 命令
- 如果您想在 Ubuntu 上升级到 v2 并修改脚本:https://docs.docker.com/compose/cli-command/#install-on-linux
上次 Docker 桌面更新后,“docker-compose”自动降级到 v1。
现在 select 您的“docker-compose”版本有一个新选项,默认情况下是禁用的:
只是为了避免人们精神错乱:Docker 桌面包装似乎有问题。
我是 运行 Docker Desktop 4.3.0 (71786) Windows 11,使用 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
Docker Desktop 已全新安装。在此版本中,_
用作分隔符。
现在,让我们切换到相同版本的 docker-compose,从 GitHub 下载:
% 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
在 GitHub 版本中,-
被用作分隔符,正如预期的那样。
这意味着 Docker 不只是重新打包 GitHub 上可用的二进制文件,而是从不同于 GitHub 上标有相同版本的源树中构建自己的构建=63=]。 (感谢 指出定义分隔符的代码行!)
最后的一些注意事项:
- docker-从其他最新版本的 Docker 桌面编写,如预期的那样使用
-
。
-
和_
之间的切换不是第一次了。有趣的是,我记得几个月前遇到过同样的问题,但升级后它就消失了。
- 如果您不破坏环境,
docker-compose up
将使用现有的容器名称。这意味着您可能需要一段时间才能注意到变化。
- 我已将此报告给 Docker 的 GitHub Issue Tracker Windows。
我们注意到命令
docker compose up
和
docker-compose up
会给出 _ 或 - 取决于您使用的是哪个。
我一直在 Ubuntu 上使用 docker-compose,在这种环境下,容器的命名带有下划线:
- <项目>_<服务>_<副本>
但现在,我切换到 Windows 10(使用 Docker 桌面)并且命名约定已更改:
- <项目>-<服务>-<副本>
我不知道这是否与 OS 相关,但这是一个问题。我的脚本失败了,因为它们依赖于用下划线命名的容器。
有没有办法自定义它并使用下划线而不是破折号?
此命名约定差异似乎是 Docker Compose 版本 v1 (Python) 和 v2 (Go) 之间的差异。与 Docker Desktop 打包在一起的最新 docker/compose 存储库是此分支中 docker/compose v2 branch. Looking at the source code here 中的 golang 版本:
// Separator is used for naming components
var Separator = "-"
python 分支源代码使用组件的 _
命名约定,here 例如:
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)
)
关于解决这个问题,您可能需要卸载 Docker Desktop 中包含的 compose 并恢复到 1.28.x 版本。 compose readme says you can use pip install docker-compose
to install. The compose docs have a section about upgrading this and commands to migrate to v2: https://docs.docker.com/compose/install/#upgrading 但你的问题表明你想保留 _
v1 命名约定。
如评论中所述,以下选项保留了撰写兼容性:
- 在
docker-compose
命令中使用--compatibility
标志 - 设置
COMPOSE_COMPATIBILITY=true
环境变量
其他文档链接:
- 此处讨论向后兼容性:https://github.com/docker/compose#about-update-and-backward-compatibility
- Docs/Readmes 建议安装 compose-switch 用于翻译 docker-compose 命令
- 如果您想在 Ubuntu 上升级到 v2 并修改脚本:https://docs.docker.com/compose/cli-command/#install-on-linux
上次 Docker 桌面更新后,“docker-compose”自动降级到 v1。
现在 select 您的“docker-compose”版本有一个新选项,默认情况下是禁用的:
只是为了避免人们精神错乱:Docker 桌面包装似乎有问题。
我是 运行 Docker Desktop 4.3.0 (71786) Windows 11,使用 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
Docker Desktop 已全新安装。在此版本中,_
用作分隔符。
现在,让我们切换到相同版本的 docker-compose,从 GitHub 下载:
% 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
在 GitHub 版本中,-
被用作分隔符,正如预期的那样。
这意味着 Docker 不只是重新打包 GitHub 上可用的二进制文件,而是从不同于 GitHub 上标有相同版本的源树中构建自己的构建=63=]。 (感谢
最后的一些注意事项:
- docker-从其他最新版本的 Docker 桌面编写,如预期的那样使用
-
。 -
和_
之间的切换不是第一次了。有趣的是,我记得几个月前遇到过同样的问题,但升级后它就消失了。- 如果您不破坏环境,
docker-compose up
将使用现有的容器名称。这意味着您可能需要一段时间才能注意到变化。 - 我已将此报告给 Docker 的 GitHub Issue Tracker Windows。
我们注意到命令
docker compose up
和
docker-compose up
会给出 _ 或 - 取决于您使用的是哪个。