2016-02-26 109 views
1

直到最近,我可以启动容器如下之前附加容器到网络之前到网络:搬运工-PY:连接启动容器

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']) 

不过,现在我总是得到一个错误,因为

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 
容器时,我将它连接到网络尚未启动

所以我需要当我创建容器的容器直接连接到网络:

% docker create --net=test busybox test 

docker-py,我怎么创建过程中直接附加容器到网络?

回答

1

可以使用HostConfig配置网络的容器连接到:

network_mode是自1.11可用,并设置网络模式为容器(“桥”:创建一个新的网络堆栈对于Docker桥上的容器,'none':对此容器没有联网,'container:[name | id]':重用另一个容器网络堆栈'host':使用容器内的主机网络堆栈或任何名称标识现有的Docker网络)。

举个例子,你可以运行:

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

该容器连接到网络test

0

尝试这种方式:

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 
)