假设我有这样的Dockerfile:
FROM ubuntu:16.04
EXPOSE 5000
CMD ["some", "app"]
这样的docker-compose.yml:
version: '2.3'
services:
app:
build:
context: .
exposes:
- 6000
在我做docker-compose up -d docker ps输出之后:
CONTAINER ID NAMES STATUS CREATED PORTS
3315ec1be1b3 app Up 41 hours 41 hours ago 5000/tcp, 6000/tcp
是否可以取消端口5000并仅留下6000?
答案 0 :(得分:1)
干净的方法是创建一个新图像:通常,您总是希望您的docker容器和图像可以重现。如果您手动更改偏离图像的内容,则会剥夺自己的行为(管理您正在工作的基础架构的其他人会预期的事情。)
现在,用iptables直接管理DNAT是可行的方法。这个方法的实现在这个answer中给出。
答案 1 :(得分:0)
实际上,任何dockerfile和容器都将继承曾经配置过的所有端口。它是图像元数据的一部分。没有UNEXPOSE,但有一个解决方法,以及#34; docker save
"包含所有图层的图像,编辑元数据,以及" docker load
"返回修改后的图像,包括历史记录。
由于我经常执行该任务,因此我创建了一个小脚本来完成工作,请查看docker-copyedit。