是否有一个命令可以在创建新容器后运行以从主机获取容器的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:
- …Run Code Online (Sandbox Code Playgroud) 相关帖子: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
Run Code Online (Sandbox Code Playgroud)
然后连接
Name: postgres
Host: localhost
Port: 5432
user
pass
...
Run Code Online (Sandbox Code Playgroud)
方法二:
以。。开始
sudo docker run --name some-postgres -e POSTGRES_PASSWORD=mysecretpassword -d postgres
Run Code Online (Sandbox Code Playgroud)
然后检查容器的ip
sudo docker inspect
Run Code Online (Sandbox Code Playgroud)
说结果
172.17.42.1
Run Code Online (Sandbox Code Playgroud)
然后与 pgAdmin 选项卡连接属性填充信息
Name: postgres
Host: 172.17.42.1
Port: 5432
user
pass
...
Run Code Online (Sandbox Code Playgroud) 与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
Run Code Online (Sandbox Code Playgroud)
我成功连接了psql命令。
psql -h localhost -U postgres -d postgres
Run Code Online (Sandbox Code Playgroud)
但是,当我在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?