如何解决Singularity 有没有类似于 Docker 网络的东西?
在 Docker 中,我可以创建一个私有网络:
docker network create my-net
在一个容器中运行 MySQL 数据库:
docker run -d --rm --name mysql-server --network my-net -e MYSQL_ROOT_PASSWORD=secret mysql/mysql-server:latest
并使用创建的网络在该数据库和我的应用程序之间进行通信:
docker run -it --rm --network my-net my_app
所有三个调用都引用同一个“my-net”,通信沿该网络发生。现在,我需要使用 Singularity 而不是 Docker 来运行它。 Singularity 用户指南中没有提到网络选项,我也找不到任何关于它的信息。 Singularity 可以做类似的事情吗?如果可以,怎么做?
天真地,我试图用 'singularity' 替换 'docker'
docker network create my-net
但是发现Singularity没有这样的直接替换。我需要在我无权访问“root”的 HPC 环境中运行此代码。
解决方法
正如上面的评论中提到的,Singularity does have virtual network capabilities 但它们通常至少涉及初始设置的 root 权限。
但是,如果您只想在容器之间进行通信,则不需要为此做任何特别的事情。默认情况下,您的奇点容器具有与直接在主机操作系统上运行相同的网络访问权限。类似地,奇异性容器使用的端口是使用主机服务器的主机名访问的。在 Docker 术语中,您可以将其视为 EXPOSE
始终在容器中使用的端口上运行。
但是,如果您需要不同的虚拟网络,您可能需要与集群管理员合作。
因此,如果您在同一节点上运行 mysql 和应用程序容器,则应用程序只需使用 localhost:3306
作为数据库 url。如果它在另一个节点上运行,请使用该节点的主机名而不是 localhost。它是双向的。因此,如果您的奇点容器尝试在默认端口上内部启动 sshd
,它将失败,因为主机 sshd
已经在使用该端口。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。