是否有一个命令可以在创建新容器后运行以从主机获取容器的IP地址?
基本上,一旦Docker创建了容器,我想推出自己的代码部署和容器配置脚本.
我已经阅读了这方面的所有问题,就像这一个,但它没有帮助.
主机:Windows 10,运行VirtualBox和PgAdmin.
我已正确设置Docker并运行几个容器而没有问题.现在我尝试设置Postgres.我尝试了两个:
1 https://hub.docker.com/r/paintedfox/postgresql/
2 https://hub.docker.com/_/postgres/
两者都有同样的问题.当我尝试从PgAdmin连接时,它说服务器不听.
我跑的时候docker inspect postgres看到了
"NetworkSettings":{"Bridge":"","SandboxID":"6ad76f4d61017c44f814c5ec7ab9081a650d925a46c2b69902c4f0e5209076ce","HairpinMode":false,"LinkLocalIPv6Address":"","LinkLocalIPv6PrefixLen":0,"Ports":{"5432/tcp": null},"SandboxKey":"/ var/run/docker/netns/6ad76f4d6101","SecondaryIPAddresses":null,"SecondaryIPv6Addresses":null,"EndpointID":"3f14630554c972ac875cbb384725c6970d1d4d5acfba7cbc05e416b5b22f0056","Gateway":"172.17.0.1", "GlobalIPv6Address":"","GlobalIPv6PrefixLen":0,"IPAddress":"172.17.0.2",
我已经尝试将该IP地址作为PGAdmin中的主机.
我尝试使用-p 5432:5432设置容器并连接为127.0.0.1:5432.
我已经尝试在VirtualBox中为容器设置端口转发.
我也尝试过机器主机,如Kitematic:192.168.99.100所示
我有一个docker-compose与服务文件python,nginx,postgres和pgadmin:
services:
  postgres:
    image: postgres:9.6
    env_file: .env
    volumes:
      - postgres_data:/var/lib/postgresql/data
    ports:
      - "5431:5431"
  pgadmin:
    image: dpage/pgadmin4
    links:
      - postgres
    depends_on:
      - postgres
    environment:
      PGADMIN_DEFAULT_EMAIL: admin@admin.com
      PGADMIN_DEFAULT_PASSWORD: pwdpwd
    volumes:
      - pgadmin:/root/.pgadmin
    ports:
      - "5050:80"
  backend:
    build:
      context: ./foobar  # This refs a Dockerfile with Python and Django requirements
    command: ["/wait-for-it.sh", "postgres:5431", "--", "/gunicorn.sh"]
    volumes:
      - staticfiles_root:/foobar/static
    depends_on:
      - postgres
  nginx:
    build:
      context: ./foobar/docker/nginx
    volumes:
      - staticfiles_root:/foobar/static
    depends_on:
      - backend
    ports:
      - …相关帖子:1)docker postgres pgadmin 本地连接
2)https://coderwall.com/p/qsr3yq/postgresql-with-docker-on-os-x(示例中“名称”条目未填写)
有两种方法可以完成这个任务,我使用官方的postgres
方法一:
并运行它
sudo docker run --name some-postgres -e POSTGRES_PASSWORD=mysecretpassword -p 5432:5432 -d postgres
然后连接
Name: postgres
Host: localhost
Port: 5432
user
pass
...
方法二:
以。。开始
sudo docker run --name some-postgres -e POSTGRES_PASSWORD=mysecretpassword -d postgres
然后检查容器的ip
sudo docker inspect
说结果
172.17.42.1
然后与 pgAdmin 选项卡连接属性填充信息
Name: postgres
Host: 172.17.42.1
Port: 5432
user
pass
...
与docker的新手,我正在尝试通过pgAdmin容器将localhost连接到postgres容器。
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                         NAMES
0b00555238ba        dpage/pgadmin4      "/entrypoint.sh"         43 minutes ago      Up 43 minutes       0.0.0.0:80->80/tcp, 443/tcp   pedantic_turing
e79fb6440a95        postgres            "docker-entrypoint.s…"   About an hour ago   Up About an hour    0.0.0.0:5432->5432/tcp        pg-docker
我成功连接了psql命令。
psql -h localhost -U postgres -d postgres
但是,当我在pgAdmin上使用与psql相同的参数创建服务器时,出现以下错误。
无法连接到服务器:
无法连接到服务器:连接被拒绝服务器是否在主机“ localhost”(127.0.0.1)上运行并在端口5432上接受TCP / IP连接?无法连接到服务器:地址不可用服务器是否在主机“ localhost”(:: 1)上运行并接受端口5432上的TCP / IP连接?
我成功地通过docker inspect容器上给定的IPAddress连接。
顺便说一句,我检查了postgresql.conf并断言了它,listen_addresses = '*'并且还断言了pg_hba.conf包含host all all all md5。
但是我不明白,为什么我不能使用本地主机地址?为什么码头工人甚至给我一个非本地地址?
我刚刚从 GitHub 克隆了一个项目,在自述文件中它要求我运行docker-compose upPostgreSQL 映像...
我假设运行命令后,PostgreSQL 服务器映像将使用端口 5432 在我的电脑上的 Docker 容器中启动。然后我运行npm install并npm start启动项目(数据库表将使用 ORM 框架自动创建)。但是,当我打开 pgAdmin 连接到服务器时,它说它已成功连接,但我找不到创建的那些表。这里我猜测 pgAdmin 没有连接 5432 上的 PostgreSQL 服务器(Docker 镜像)...所以我的问题是是否可以使用本地电脑中安装的 pgAmin 连接到已经运行的 PostgreSQL 服务器 Docker 镜像,映射到我本地PC的端口5432?