docker-py:在启动容器之前连接到networking

直到最近,我可以在启动容器之前将容器附加到networking上,如下所示:

params = { 'image': 'busybox', 'name': 'test', } result = docker_client.create_container(**params) docker_client.connect_container_to_network(result['Id'], network_id) docker_client.start(result['Id']) 

但是,现在我总是得到一个错误,因为容器在连接到networking时还没有启动:

 APIError: 500 Server Error: Internal Server Error ("Container 0b1005fc86be565d1a54c44f89f2a60d338b541f8b73805c2a367116bf04a060 is not running") 

我可以重现与命令行客户端相同的错误:

 % docker create --name test busybox 7aa04b908b2ec45a37f272809ec909116cfae5ae80a13c6596822ca4d9b39a0e % docker network connect test 7aa04b908b2e Error response from daemon: Container 7aa04b908b2ec45a37f272809ec909116cfae5ae80a13c6596822ca4d9b39a0e is not running 

所以我需要在创build容器时直接将容器连接到networking:

 % docker create --net=test busybox test 

docker-py ,如何在创build过程中直接将容器连接到networking?

您可以使用HostConfig来configuration容器连接到的networking:

network_mode从v1.11开始可用,并设置容器的networking模式('bridge':为Docker网桥上的容器创build一个新的networking堆栈'none':不为此容器build立networking'container:[name | id ]':重用另一个容器networking堆栈,“主机”:使用容器内的主机networking堆栈或标识现有Dockernetworking的任何名称)。

举个例子,你可以运行:

 params = { 'image': 'busybox', 'name': 'test', 'host_config': docker_client.create_host_config(network_mode='test') } docker_client.create_container(**params) 

这将容器连接到networkingtest

试试这样:

 host_config = client.create_host_config( network_mode='my-net' ) networking_config = client.create_networking_config({ 'my-net': client.create_endpoint_config( ) }) container = client.create_container( image='josepainumkal/vwadaptor:jose_toolUI', host_config=host_config, networking_config = networking_config )