我正在使用 docker-py 构建图像并创建容器。容器应包括端口绑定。这个想法是我将有多个客户端访问图像并能够打开多个容器。因此,我希望每次创建新容器时端口都会增加,例如: container1 port:5000 ;容器2端口:5001;ETC...
我将如何在 python 中实现这个功能?
谢谢
事实上,在构建阶段,Dockerfile 只暴露了容器的内部端口。
当你运行一个新容器时,你会在 Docker 主机端口和容器暴露端口之间创建一个映射。
所以你只需要在调用容器创建 API 时增加你的运行端口映射:
import docker
docker_client = docker.Client(version="1.18", base_url="unix:///var/run/docker.sock")
def create_new_container(port):
my_port_mappings = {}
my_port_mappings[5000] = port
host_config = docker_client.create_host_config(
port_bindings=my_port_mappings
)
container = docker_client.create_container(
image="my_image",
detach=True,
ports=my_port_mappings.keys(),
name=container_name,
host_config=host_config)
create_container(5000)
create_container(5001)
create_container(5002)
create_container(5003)