2016-02-26 102 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 
)