我的 postgresql docker 容器正在使用所有 ram 并且表现得很奇怪

My postgresql docker container is using all the ram and acting weird

我在 2GO digitalOcean 服务器上使用 docker compose 来部署我的应用程序,但我注意到 postgresql 容器正在使用他可用的所有 ram! 这是不正常的,我想知道如何解决这个问题..? 所以我进入容器的日志(docker logs postgres),我发现了这个:

postgresql container logs

我没想到 'database is ready to accept connections' 之后会有日志 日志就像我没有在容器中安装包一样,但我使用的是官方镜像所以我认为它应该可以工作...

帮你帮我哈哈:

我的docker-撰写文件:

version: "3"
services: 
    monapp:
        image: registry.gitlab.com/touretchar/workhouse-api-bdd/master:latest
        container_name: monapp
        depends_on: 
            - postgres
        ports:
            - "3000:3000"
        command: "npm run builded-test"
        restart: always
        deploy:
            resources:
                limits:
                    cpus: 0.25
                    memory: 500M
                reservations:
                    memory: 150M
    postgres:
        image: postgres:13.1
        container_name: postgres
        environment:
            - POSTGRES_HOST_AUTH_METHOD=trust
            - POSTGRES_USER=postgres
            - POSTGRES_PASSWORD=postgres
        volumes: 
            - postgres_datas:/var/lib/postgresql/data/
            - postgres_dumps:/home/dumps/test
        ports:
            - "5432:5432"
        restart: always
        deploy:
            resources:
                limits:
                    cpus: 0.25
                    memory: 500M
                reservations:
                    memory: 150M


volumes:
  postgres_datas:
    driver: local
    driver_opts:
      type: none
      device: $PWD/util/databases/pgDatas
      o: bind
  
  postgres_dumps:
    driver: local
    driver_opts:
      type: none
      device: $PWD/util/databases/test
      o: bind

和 docker 统计数据的输出:

enter image description here

如果你有想法!提前致谢:)

我终于找到了解决办法,那是因为我的容器被泄露了!

事实上,我的 postgres 容器在 5432 上有一个开放端口到互联网,所以每个人都可以使用 digitalocean droplet ip 和端口 (:port) 连接到它,我认为有人在入侵我的容器并使用我所有的Ram/cpu允许容器!

我确信这个是因为要纠正这个问题,我通过使用 iptables 添加防火墙规则来阻止从我的 Droplet 外部访问容器(你应该在链 DOCKER-USER 中添加规则) ,并且由于我添加了规则,容器的 ram 消耗恢复正常,并且我不再有我在问题中发布的奇怪日志!

结论:当 Docker 容器在网络上 运行 时,请注意它们的安全!

谢谢希望对大家有帮助:)