在内部IP的随机端口上暴露容器

我希望能够使用-P参数运行容器,同时绑定到内部10.10.0.0/22子网。

默认情况下,一次做这样的事情:

 docker run -d -P --name=nginx nginx 

它看起来像这样:

 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES dbb556c99c81 nginx "/usr/sbin/nginx" 2 minutes ago Up 2 minutes 0.0.0.0:32773->80/tcp nginx 

暴露在0.0.0.0/0有没有办法让这个我的内部IP?

使用-pselect单个端口时,可以手动绑定到特定的接口,例如:

 $ docker run -d -p 127.0.0.1:8080:80/tcp --name test-nginx nginx 2e07ebc61bcdc82a187a27eabca10211a4c9ac09d66e516e5c176d7282cffe2b $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 2e07ebc61bcd nginx "nginx -g 'daemon off" 5 seconds ago Up 2 seconds 443/tcp, 127.0.0.1:8080->80/tcp test-nginx 

使用-P ,它使用在守护进程( dockerddockerd docker daemon )上configuration的接口。 默认情况下是0.0.0.0,但您可以将其更改为任何其他IP:

 $ dockerd --help # ... --ip=0.0.0.0 Default IP when binding container ports 

请注意,0.0.0.0正在监听所有接口,因此指定特定IP的唯一原因是进一步locking容器,而不是为您的环境打开容器。