用一个可变的端口创build一个容器

我想为couchdb创build一个图像来运行多个couchdb实例。 由于需要澄清的原因,我希望容器中的couchdb实例侦听非默认端口,这在图像定义时也是未知的,因为这将是一个容器参数。

从主机我会运行的容器:

sudo docker run -d -p 10000:30000 --name couchdb -e COUCHDB_PORT=30000 my/couchdb 

这将使容器中的端口(30000),其中couchdb正在监听,可通过主机中的端口10000访问。 这个端口应该是每个容器的参数。

从容器中我可以这样做:

 curl -X GET localhost:30000 

从主持人我可以做到:

 curl -X GET localhost:10000 

这两个请求都会碰到同一个couchdb服务器。

设置容器很简单(只是处理环境variables来自动编辑couchdbconfiguration文件),但是现在我遇到了阻塞问题。 在Dockerfile的最后我有:

 # the default couchdb port, which in my case is not # known at image creation time EXPOSE 5984 

显然我需要暴露在我的服务在容器内运行的端口,但我不知道,当创build图像。 这是一个运行时参数,每个容器都有所不同。

启动容器时如何显示端口?