簡體   English   中英

從安裝了`docker.sock`的docker容器內查找主機上的開放端口

[英]Find open ports on host from inside a docker container with `docker.sock` mounted

我目前正在 gitlab 中啟用評論應用程序。 為此,我需要為每個合並請求/分支部署一個應用程序。 這意味着我需要找到可以部署到的開放端口。

通常這個問題會通過這個問題的答案來解決 但是由於 Gitlab Runner 本身就是一個掛載了docker.sock容器,我不能簡單地在主機上執行腳本來查找空端口。

所以我正在尋找一個優雅的解決方案。

我當然可以總是通過 ssh 進入主機來執行這樣的腳本,但這似乎是一個非常丑陋的解決方案。

我想知道是否可以在 Runner 中安裝其他任何東西,以允許在 Runner 中執行的腳本找到主機上的開放端口。

如果這不符合我的想法,請告訴我刪除此答案:

find_empty_port.py

#!/usr/bin/env python

import socket

with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
    s.bind(('', 0))
    print(s.getsockname()[1])

Dockerfile

FROM python:3.8

COPY find_empty_port.py find_empty_port.py

ENTRYPOINT [ "python", "find_empty_port.py" ]

使用命令

docker build -t find_empty_port .

讓我像腳本一樣使用 dockercontainer:

docker run --rm --network host find_empty_port

這也可以在安裝了docker.sock的容器內docker.sock

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM