docker-py 中容器的端口绑定不起作用
Port binding with a container in docker-py doesn't work
我正在尝试 运行 使用 docker-py 的容器并将端口与主机绑定。恐怕我没有尝试过 Docker,但我尝试了很多东西,但我看不出我的错误在哪里。
我的dockerAPI版本是1.22
这是我创建容器的代码:
from docker import Client
cli = Client(base_url='tcp://172.16.3.87:2375', version='1.22')
container_id = cli.create_container( 'busybox', 'ls', name='test', ports=[1111], host_config=cli.create_host_config(port_bindings={ 1111:8000 }, publish_all_ports=True) )
print(container_id)
容器已创建,但没有绑定:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d3ad8566958d busybox "ls" 42 seconds ago Created test
但是,宿主收到了命令。我捕获了 2375 端口上的传入流量。这是结果:
{"Tty": false, "NetworkDisabled": false, "Image": "busybox", "Cmd": ["ls"], "StdinOnce": false, "HostConfig": {"PortBindings": {"1111/tcp": [{"HostPort": "8000", "HostIp": ""}]}, "PublishAllPorts": true}, "AttachStdin": false, "MemorySwap": 0, "Memory": 0, "ExposedPorts": {"1111/tcp": {}}, "AttachStderr": true, "AttachStdout": true, "OpenStdin": false}
当我尝试直接在主机上绑定时,运行没有任何问题。
有人试验过同样的问题吗?
提前致谢!
您发布的代码创建了一个容器。为了绑定端口,您需要启动容器。
from docker import Client
cli = Client(base_url='tcp://172.16.3.87:2375', version='1.22')
container_id = cli.create_container(
'busybox',
'ls',
name='test',
ports=[1111],
host_config=cli.create_host_config(port_bindings={ 1111:8000 }, publish_all_ports=True)
)
response = cli.start(container=container_id.get('Id'))
print(container_id)
print(response)
启动容器后,它应该绑定端口。
我正在尝试 运行 使用 docker-py 的容器并将端口与主机绑定。恐怕我没有尝试过 Docker,但我尝试了很多东西,但我看不出我的错误在哪里。
我的dockerAPI版本是1.22
这是我创建容器的代码:
from docker import Client
cli = Client(base_url='tcp://172.16.3.87:2375', version='1.22')
container_id = cli.create_container( 'busybox', 'ls', name='test', ports=[1111], host_config=cli.create_host_config(port_bindings={ 1111:8000 }, publish_all_ports=True) )
print(container_id)
容器已创建,但没有绑定:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d3ad8566958d busybox "ls" 42 seconds ago Created test
但是,宿主收到了命令。我捕获了 2375 端口上的传入流量。这是结果:
{"Tty": false, "NetworkDisabled": false, "Image": "busybox", "Cmd": ["ls"], "StdinOnce": false, "HostConfig": {"PortBindings": {"1111/tcp": [{"HostPort": "8000", "HostIp": ""}]}, "PublishAllPorts": true}, "AttachStdin": false, "MemorySwap": 0, "Memory": 0, "ExposedPorts": {"1111/tcp": {}}, "AttachStderr": true, "AttachStdout": true, "OpenStdin": false}
当我尝试直接在主机上绑定时,运行没有任何问题。
有人试验过同样的问题吗?
提前致谢!
您发布的代码创建了一个容器。为了绑定端口,您需要启动容器。
from docker import Client
cli = Client(base_url='tcp://172.16.3.87:2375', version='1.22')
container_id = cli.create_container(
'busybox',
'ls',
name='test',
ports=[1111],
host_config=cli.create_host_config(port_bindings={ 1111:8000 }, publish_all_ports=True)
)
response = cli.start(container=container_id.get('Id'))
print(container_id)
print(response)
启动容器后,它应该绑定端口。