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