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

Postgresql 如何从父主机终端中启动的postgres容器访问psql、createdb和其他postgress命令?,postgresql,docker,Postgresql,Docker,我正在Mac上启动一个容器,其中包含: 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命令,最终写入上面创建的数据库。如何以可以运行

我正在Mac上启动一个容器,其中包含:

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脚本完成

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

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

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


通常的方法是在OSX主机上使用Homebrew安装客户端软件包,brew安装postgres,docker运行服务器,并针对服务器运行客户端命令。在这种非常特殊的情况下,如果您直接在主机上对同一主机上的容器运行shell命令,可以使用localhost作为$PGHOST值。

您的意思是只运行docker exec命令吗?如果键入docker ps并获取容器的id,则可以运行docker exec-it bash将容器作为shell输入。从那里你可以运行任何你想要的命令。这就是进步,我会更深入地挖掘。我最初的想法是:docker run。。。。然后,下一行dropdb cooldb没有关于找不到dropdb的错误。也许这不是一个好的用例?我不确定我是否遵循。您是否正在尝试执行一个每次启动容器时都会运行的命令?如果是这样,您可能希望生成Dockerfile或使用docker compose来执行脚本,该脚本在启动时为您运行命令。否则,你介意解释一下你想做什么吗?嗯,不幸的是,我从未进行过代码构建,但是如果容器在同一个docker网络上,它们将能够相互通信。buildspec中的命令是否在容器中运行?如果是,容器是否安装了docker?如果它正在创建一个容器并运行从主机到容器的命令,那么您也可以创建另一个容器并从主机运行命令。