docker不设置端口映射就不可以外部访问吗

在弄小米的open-falcon,其中有个部件是从docker取回来的。
按照教程,执行了docker的:

# make the image,run commands under dir of dashboard:
docker build -t falcon-dashboard:v1.0 .

# start the container
docker run -itd --name aaa --net host \
    -e API_ADDR=http://127.0.0.1:8080/api/v1 \
    -e PORTAL_DB_HOST=127.0.0.1 \
    -e PORTAL_DB_PORT=3306 \
    -e PORTAL_DB_USER=root \
    -e PORTAL_DB_PASS=123456 \
    -e PORTAL_DB_NAME=falcon_portal \
    -e ALARM_DB_PASS=123456 \
    -e ALARM_DB_HOST=127.0.0.1 \
    -e ALARM_DB_PORT=3306 \
    -e ALARM_DB_USER=root \
    -e ALARM_DB_PASS=123456 \
    -e ALARM_DB_NAME=alarms \
    falcon-dashboard:v1.0

从上面命令中,并没有看到-p用于绑定端口映射的东西,但是不知为何,依然可以请求到docker这个容器里面的某个项目的端口。
好奇怪。

阅读 5.6k
2 个回答

--net选项已经设置了docker的网络,参见network settings
network可以自定义网络,连接相同网络的docker可以相互通信。

你还是没注意看命令


host模式
host它可以与主机共享Root Network Namespace,容器有完整的权限操纵主机的网络配置,出于安全考虑,不推荐使用这种模式。
启动host模式非常简单,依旧是在docker run中加入--net=host参数即可。

另外,还有none模式、container模式、bridge模式(默认模式)、overlay模式

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进