很多应用都需要设置端口才能允许外部访问,docker容器内的应用也需要占用端口,但是docker容器本身就是一个微型系统它自身的端口与宿主机器是不一样的,用户想要访问容器内的应用时只能通过访问宿主机器的端口才能访问容器内的应用。所有为了访问容器内的应用,需要将宿主机器的端口与容器的端口进行映射。
可以使用-P或者-p参数指定端口映射。
-P
大写的字母P,Docker会从宿主机器随机选择一个端口映射到容器的指定端口。
例如:
$ docker run -d -P training/webapp python app.py
从上面命令执行情况可以看出,本次执行选择了宿主机器的32769端口映射到容器的5000端口。
可以从浏览器访问一下32769端口:
-p
一般来说我们都希望使用一个固定的端口号来访问应用,此时可以使用小写的字母p来指定端口映射。
用法:
-p 宿主端口:容器端口
同样以上面应用为例,新的命令如下:
$ docker run -d -p 12345:5000 training/webapp python app.py
此时映射的主机端口是12345。
从浏览器访问一下12345端口:
效果是一样的,说明端口映射成功。
多端口映射
有时我们的一个容器中可能会运行多个网络服务,或者一个网络服务需要占用多个端口,比如同时支持http和https。此时可以通过多次使用-p标签来映射多个端口。
语法如下:
$ docker run -d -p 12345:5000 -p 55555:80 training/webapp python app.py
带IP地址的端口映射
端口映射时还可以指定主机IP地址,格式如下:
-p ip:主机端口:容器端口
-p ip::容器端口
示例:
-p 127.0.0.1:12345:5000
-p 127.0.0.1::5000
查看容器端口映射
命令:
$ docker port 容器ID
$ docker port 容器ID 容器端口
閱讀更多 開發小菜鳥 的文章