作为构建管道的一部分,我想使用一个自由端口启动容器。

寻找这样的事情:

docker run --name frontend -p $(gimme-a-free-port):80 frontend:latest

最佳答案

您可以使用端口0。应用程序将0传递给内核,内核将未使用的端口分配给应用程序。

docker run --name frontend -p 0:80 frontend:latest

或者:
docker run --name frontend -p 80 frontend:latest

在第二个示例中,我仅指定容器端口,主机端口将自动分配。

确认:
docker port <containerid or container name>
80/tcp -> 0.0.0.0:32768

要仅获取随机端口值:
docker inspect -f '{{ (index (index .NetworkSettings.Ports "80/tcp") 0).HostPort }}' <containerid or container name>
32768

关于Bash命令返回空闲端口,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42482278/

10-16 23:51