如何从父主机终端中已启动的postgres容器访问psql,createdb和其他postgress命令?

时间:2018-07-23 22:27:51

标签: postgresql docker

我正在使用以下命令在Mac上启动postgres Docker容器:

docker run --name cool-postgres -p 5433:5433 -e POSTGRES_USER=cooluser -e POSTGRES_PASSWORD=securepassword -e POSTGRES_DB=cooldb --rm postgres

对于Docker来说,我的目标是在成功启动Docker实例后,从终端父主机运行psqlcreatedb和/或其他相关的postgresql命令,最终写入上面创建的数据库。如何以可以运行其命令的方式引用容器?通读文档,我看不到一个好的解决方案。看来我可以在启动时运行psql命令,但这需要从shell脚本完成。

请让我知道是否可以在对连接进行故障排除时提供其他信息。

1 个答案:

答案 0 :(得分:1)

  

如何以一种可以运行其命令的方式来引用容器?

你不知道。容器具有自己的文件系统,该文件系统与主机隔离。主机不能(直接)在容器中运行命令,容器不能在主机上运行命令,容器也不能在其他容器中运行命令。

执行此操作的通常方法是在服务器上(在装有Homebrew,brew install postgres的OSX上)和服务器docker run上安装客户端软件包,然后在服务器上运行客户端命令。在这种非常特殊的情况下,您是直接从主机上的外壳运行命令来针对同一主机上的容器的,可以使用localhost作为$PGHOST的值。