使用Unix域套接字从Docker容器连接到Postgresql可怕吗?

mli*_*ner 8 postgresql docker docker-network

下面是背景故事,但这是问题:我发现,如果我在docker主机上运行了postgresql,则可以通过作为文件安装的域套接字在容器中连接到它:

docker run -v /var/run/postgresql/:/var/run/postgresql
Run Code Online (Sandbox Code Playgroud)

这感觉像是一个主要的hack,所以我很好奇这在生产环境中是否真的可怕。有什么想法吗?


背景故事

背景是我在docker主机上运行了postgresql,因为我不信任docker直接运行postgresql。

所以我需要从在同一服务器上运行的Docker容器连接到该postgresql实例。我试过了:

  • 使用 --add-host

    但这也是一个黑客,因为它要求将docker run放在脚本中以找出主机的正确IP。就像是:

    docker run --add-host=postgres-host:$(ip route show | awk {print $2})
    
    Run Code Online (Sandbox Code Playgroud)

    我不喜欢那样做。

  • 我尝试使用--net=host,但这不是我们想要的。我们想要一个覆盖网络。

  • 我试图通过在容器中查找主机的IP地址来在容器中进行设置,但为此目的运行脚本并不感到很好。

所以...我想:“使用域套接字怎么办?”

Ala*_*aye 6

安装插座对我来说听起来不像黑客。事实上,/var/run/docker.sock如果您想从容器内部使用 docker 命令,挂载是使用的标准方法。