1

docker-py を使用してイメージをビルドし、コンテナーを作成しています。コンテナにはポート バインディングが含まれている必要があります。アイデアは、複数のクライアントがイメージにアクセスし、複数のコンテナーを開くことができるようにすることです。そのため、新しいコンテナーが作成されるたびにポートを増やしたいと思います。たとえば、次のようになります。コンテナー 2 ポート: 5001 ; 等...

この関数をPythonで実装するにはどうすればよいですか?

ありがとう

4

1 に答える 1

0

実際、ビルド段階では、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)
于 2016-02-16T15:24:46.740 に答える