我正在使用以下命令在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实例后,从终端父主机运行psql
,createdb
和/或其他相关的postgresql命令,最终写入上面创建的数据库。如何以可以运行其命令的方式引用容器?通读文档,我看不到一个好的解决方案。看来我可以在启动时运行psql命令,但这需要从shell脚本完成。
请让我知道是否可以在对连接进行故障排除时提供其他信息。
答案 0 :(得分:1)
如何以一种可以运行其命令的方式来引用容器?
你不知道。容器具有自己的文件系统,该文件系统与主机隔离。主机不能(直接)在容器中运行命令,容器不能在主机上运行命令,容器也不能在其他容器中运行命令。
执行此操作的通常方法是在服务器上(在装有Homebrew,brew install postgres
的OSX上)和服务器docker run
上安装客户端软件包,然后在服务器上运行客户端命令。在这种非常特殊的情况下,您是直接从主机上的外壳运行命令来针对同一主机上的容器的,可以使用localhost
作为$PGHOST
的值。