Postgresql 用于工作docker compose(postgres)的等效docker运行命令
如果有一个docker撰写文件的postgres,工作如预期,我可以访问它从R。请参阅下面的相关内容。但是,我还需要一个等效的“docker run”命令,但由于某些原因,无法使其工作。据我所知,命令/设置是等效的。有什么建议吗Postgresql 用于工作docker compose(postgres)的等效docker运行命令,postgresql,docker,docker-compose,Postgresql,Docker,Docker Compose,如果有一个docker撰写文件的postgres,工作如预期,我可以访问它从R。请参阅下面的相关内容。但是,我还需要一个等效的“docker run”命令,但由于某些原因,无法使其工作。据我所知,命令/设置是等效的。有什么建议吗 postgres: image: postgres environment: POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres PGDATA: /var/lib
postgres:
image: postgres
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
PGDATA: /var/lib/postgresql/data
ports:
- 5432:5432
restart: always
volumes:
- ~/postgresql/data:/var/lib/postgresql/data
我使用的docker run命令是:
docker run -p 5432:5432 \
--name postgres \
-e POSTGRES_USER=postgres \
-e POSTGRES_PASSWORD=postgres \
-e PGDATA=/var/lib/postgresql/data \
-v ~/postgresql/data:/var/lib/postgresql/data \
-d postgres
编辑1:在这两种设置中,我试图从另一个docker容器/服务连接。在docker compose设置中,不同的服务在同一个yml文件中描述
编辑2:大卫的回答提供了我需要的所有信息。创建一个docker网络,并在每次docker运行调用中引用该网络。对于使用此设置连接postgres、pgadmin4和带有R和Python的数据科学容器的shell脚本感兴趣的用户,请参见以下链接:
Docker Compose将为您编写(每个编写文件)。使容器间DNS工作,但任何命名网络都将工作。因此,您需要添加一些设置:
docker network创建一些名称#默认选项可以
docker run--net一些名字--name postgres。。。
#将作为“postgres”从上的其他容器访问
#“名字”网络
您的容器正在运行,您提供了-d
(分离)标志。您可以通过运行docker container ls
来检查它。使用--rm
会得到相同的结果(即无法连接)。不知何故,docker compose
安装程序正在执行的操作与docker run
安装程序正在执行的操作之间存在差异。如果您从另一个docker容器连接到数据库,请在连接字符串中使用服务名称