Bash命令返回一个空闲端口

rai*_*isd 4 bash docker

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

寻找这样的东西:

docker run --name frontend -p $(gimme-a-free-port):80 frontend:latest
Run Code Online (Sandbox Code Playgroud)

Far*_*ahi 12

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

docker run --name frontend -p 0:80 frontend:latest
Run Code Online (Sandbox Code Playgroud)

要么:

docker run --name frontend -p 80 frontend:latest
Run Code Online (Sandbox Code Playgroud)

在第二个例子中,我只是指定容器端口,将自动分配主机端口.

核实:

docker port <containerid or container name>
80/tcp -> 0.0.0.0:32768
Run Code Online (Sandbox Code Playgroud)

仅获取随机端口值:

docker inspect -f '{{ (index (index .NetworkSettings.Ports "80/tcp") 0).HostPort }}' <containerid or container name>
32768
Run Code Online (Sandbox Code Playgroud)