在 docker-py 中公开网络上的端口
Exposing ports on a network in docker-py
使用 Python docker 客户端 docker-py,如何创建连接到特定网络并公开特定端口的容器?
即撰写文件可能如下所示:
foo:
...
expose:
- "1234"
networks:
- my-network
我们在 my-network 中公开了一个端口,但没有将其映射到主机。
使用 docker-py 的高级 containers.run 方法只允许使用它的 ports
kwarg 进行端口映射(即在外部发布端口),而不是简单地在内部公开端口。
docker-py 的低级 create_container 方法不接受要使用的简单网络名称。
如何使用docker-py复制上面的compose文件?
谢谢
如你所见here,你可以通过主机ip,没有主机端口,这将让你的愿望成真。
docker.utils.create_host_config(port_bindings={1111: ('127.0.0.1',)})
"Expose" 作为动词并没有多大意义,因为 Docker 引入了多个命名为 Docker 的内部网络。您可以从 docker-compose.yml
文件中删除此设置,它不会影响任何东西;同一网络上的其他服务仍然可以访问您的服务。也就是应该够运行
client.containers.run('my-image', network: 'my-network')
据我所知,docker-py 库从不支持此选项(即使在 --link
是连接容器的唯一方式的时候,手动 --expose
也从不支持有用)。 docker/docker-py#2242 问了一个相似的问题,答案也相似。
使用 Python docker 客户端 docker-py,如何创建连接到特定网络并公开特定端口的容器?
即撰写文件可能如下所示:
foo:
...
expose:
- "1234"
networks:
- my-network
我们在 my-network 中公开了一个端口,但没有将其映射到主机。
使用 docker-py 的高级 containers.run 方法只允许使用它的 ports
kwarg 进行端口映射(即在外部发布端口),而不是简单地在内部公开端口。
docker-py 的低级 create_container 方法不接受要使用的简单网络名称。
如何使用docker-py复制上面的compose文件?
谢谢
如你所见here,你可以通过主机ip,没有主机端口,这将让你的愿望成真。
docker.utils.create_host_config(port_bindings={1111: ('127.0.0.1',)})
"Expose" 作为动词并没有多大意义,因为 Docker 引入了多个命名为 Docker 的内部网络。您可以从 docker-compose.yml
文件中删除此设置,它不会影响任何东西;同一网络上的其他服务仍然可以访问您的服务。也就是应该够运行
client.containers.run('my-image', network: 'my-network')
据我所知,docker-py 库从不支持此选项(即使在 --link
是连接容器的唯一方式的时候,手动 --expose
也从不支持有用)。 docker/docker-py#2242 问了一个相似的问题,答案也相似。