Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 用于工作docker compose(postgres)的等效docker运行命令_Postgresql_Docker_Docker Compose - Fatal编程技术网

Postgresql 用于工作docker compose(postgres)的等效docker运行命令

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

如果有一个docker撰写文件的postgres,工作如预期,我可以访问它从R。请参阅下面的相关内容。但是,我还需要一个等效的“docker run”命令,但由于某些原因,无法使其工作。据我所知,命令/设置是等效的。有什么建议吗

  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容器连接到数据库,请在连接字符串中使用服务名称