2016-02-26 7 views
1

До недавнего времени я не мог прикрепить контейнер к сети перед началом контейнера следующим образом:докер-р: прикрепить к сети перед началом контейнера

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 доступен, начиная с v1.11 и устанавливает режим сети для контейнера («мост»: создает новый сетевой стек для контейнера на мосту Докер, «нет»: нет сети для этого контейнера, «контейнер: [имя | id]»: повторное использование другого сетевого стека контейнера, «хост»: использовать сетевой стек хоста внутри контейнера или любое имя, которое идентифицирует существующую сеть Docker).

В качестве примера, вы должны запускать:

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

Это соединяет контейнер с сетью test.

0

Try таким образом:

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 
)