这个docker服务是否暴露在互联网上?
我有一套在DigitalOcean主机上运行的docker服务(由docker-compose
编排)。
摘自我docker-compose.yml
:
web: build: backend_api_using_db ports: - "80:80" depends_on: - db db: image: postgres
( 完整版本在这里 )
请注意,Docker Hub上的postgres
映像描述提到它的Dockerfile有一个EXPOSE 5432
(postgresql的默认端口),这就是为什么我的web
服务可以成功连接到它。
是否有可能从主机(互联网)之外直接连接到我的postgres数据库? 那么从内部(ssh-> localhost)呢?
我问这是因为我想知道如果我的postgres密码公开共享会有多糟糕。 攻击者可以使用它来访问我的数据库吗?
您应该阅读有关Dockernetworking与撰写文件在这里 – > https://docs.docker.com/compose/networking/ 。 后续文档将是 – > https://docs.docker.com/compose/compose-file/#links
在示例中,您可以学习如何链接容器(web < – > db)。 因此,你只需要暴露web前端端口而不是db端口。
从上面的链接修改示例(未testing):
version: "3" services: app: build: ./app networks: - backend ports: - "80:80" db: image: postgres networks: - backend networks: backend: driver: overlay