直到最近,我可以按照以下步骤在启动容器之前将容器连接到网络:
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
,如何在创建过程中直接将容器连接到网络?
您可以使用HostConfig来配置容器连接到的网络:
network_mode
自v1.11起可用,并为容器设置了网络模式(“网桥”:在Docker网桥上为该容器创建一个新的网络堆栈,“无”:此容器未联网,“容器:[名称| id] ':重用另一个容器网络堆栈,'host':使用容器内的主机网络堆栈或标识现有Docker网络的任何名称)。
例如,您将运行:
params = {
'image': 'busybox',
'name': 'test',
'host_config': docker_client.create_host_config(network_mode='test')
}
docker_client.create_container(**params)
这将容器连接到网络test
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句