nginx、php、postgresを使用してubuntuイメージを作成しました。
現在のイメージのpostgresデータベースをpgadmin
ローカルマシンにあるものに接続したいと思います。
docker inspectorを使用して、image ipを使用してローカルのpgadminと接続しようとしましたが、あまり成功しませんでした。また、接続を機能させるために、ローカルでいくつかのポートを構成してみました。
nginx、php、postgresを使用してubuntuイメージを作成しました。
現在のイメージのpostgresデータベースをpgadmin
ローカルマシンにあるものに接続したいと思います。
docker inspectorを使用して、image ipを使用してローカルのpgadminと接続しようとしましたが、あまり成功しませんでした。また、接続を機能させるために、ローカルでいくつかのポートを構成してみました。
回答:
なぜ人々が「その質問に答えることができないように思われる」と感じるのかわからないのは有効な質問です。
だから、これがあなたがやろうとしていることを私がする方法です:
DockerHubからpostgresイメージをプルする
docker pull postgres:latest
以下のコマンドを使用してコンテナを実行します
docker run -p 5432:5432 postgres
dockerのinspectコマンドを使用してIPを見つけます
そのIP、ポート、ユーザー名、およびパスワードを使用してPGADMINに接続します
以下のような簡単なtelnetを実行して、dockerpostgresコンテナにアクセスできるかどうかを確認することもできます。
telnet IP_ADDRESS 5432
-p 5432:5432
、ホストIPを使用できるコンテナーのIPを見つける必要はありません。または127.0.0.1
、単にlocalhost
Windows 1.12.6(9655)用のdockerを実行しているWindows 10で成功したことは、次のような手順です。
最新のpostgresをプルする
docker pull postgres:latest
postgresコンテナを実行します。
docker run -d -e POSTGRES_USER=user -e POSTGRES_PASSWORD=password123 --name db-my -p 5432:5432 --restart=always postgres
次に、pgadminWebサイトから最新バージョンのpgAdmin4をインストールしました
pgAdmin 4を実行して新しいサーバーを作成し、次のように入力します。ホスト:127.0.0.1ポート:5432ユーザー名:ユーザーパスワード:password123
または、PostgresとPgadminを1つのdocker-compose
ファイルにまとめて、ユーザーpgadmin4@pgadmin.org
pwd:としてログインすることもできますadmin
。Posgresサーバーを追加するには、hostname postgres
、portを使用します5432
。
version: '3'
services:
postgres:
image: postgres
hostname: postgres
ports:
- "6543:5432"
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: TEST_SM
volumes:
- postgres-data:/var/lib/postgresql/data
restart: unless-stopped
pgadmin:
image: dpage/pgadmin4
depends_on:
- postgres
ports:
- "5555:80"
environment:
PGADMIN_DEFAULT_EMAIL: pgadmin4@pgadmin.org
PGADMIN_DEFAULT_PASSWORD: admin
restart: unless-stopped
volumes:
postgres-data:
docker network ls
、postgresからpgadminへのネットワークへのブリッジが表示されます(私のものはpostgres_postgresです)。次に、docker network inspect postgres_postgres
それぞれがip / hostnameを持つ2つのコンテナーを確認できます。Postgres(私のものはpostgres_db_1)から1つを取得して、pgAdminから正常に接続します。
これは私がしたことです
docker run -p 5432:5432 --name container-postgresdb -e POSTGRES_PASSWORD=admin -d postgres
docker run -p 5050:80 -e "PGADMIN_DEFAULT_EMAIL=name@example.com" -e "PGADMIN_DEFAULT_PASSWORD=admin" -d dpage/pgadmin4
host: host.docker.internal
database: postgres
user: postgres
password: admin
それはうまくいきます!!!!!
Unable to connect to server: could not translate host name "host.docker.internal" to address: Try again
私の場合、コマンドを使用してpostgreイメージを検査する問題を解決できました
docker inspect CONTAINER_ID | grep IPAddress.
そのため、docker ipアドレスを使用してpgadmin4接続を構成しましたが、すべて問題ありませんでした。@AfshinGhaziに感謝します
pgAdminが同じUbuntuホスト/ゲストで実行されることを意図している場合は、postgresコンテナーをリンクする必要があるため、名前で解決できます。
1.postgresコンテナを実行します。
docker run --name some-postgres -e POSTGRES_PASSWORD=postgres -d postgres
2.pgAdminコンテナを実行します。
docker run -p 80:80 --link some-postgres -e "PGADMIN_DEFAULT_EMAIL=email@domain.com" -e "PGADMIN_DEFAULT_PASSWORD=postgres" -d dpage/pgadmin4
3. phAdmin Webアプリに新しいサーバーを追加するときにsome-postgres
、サーバー名として使用します
--link some-postgres
pgAdminを起動したときのことに注意してください。このコマンドは、postgresコンテナをpgAdminコンテナに表示します。
Warning: The --link flag is a legacy feature of Docker. It may eventually be removed. Unless you absolutely need to continue using it, we recommend that you use user-defined networks to facilitate communication between two containers instead of using --link.
使用--link
することもできませんでした。ただし、pgadminのローカルインストールからpostgresにアクセスできます。
データベースとpgAdminを取得するために、これをdockeryamlファイルに含めました。
database:
image: postgres:10.4-alpine
container_name: kafka-nodejs-example-database
environment:
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
expose:
- "5432"
ports:
- 8000:5432
volumes:
- ./services/database/schema.sql:/docker-entrypoint-initdb.d/1-schema.sql
- ./services/database/seed.sql:/docker-entrypoint-initdb.d/2-seed.sql
pgadmin:
image: dpage/pgadmin4
ports:
- 5454:5454/tcp
environment:
- PGADMIN_DEFAULT_EMAIL=admin@mydomain.com
- PGADMIN_DEFAULT_PASSWORD=postgres
- PGADMIN_LISTEN_PORT=5454
postgresのユーザー名はalphaoneで、パスワードはxxxxxxxxxxxです。
を実行しdocker ps
てコンテナIDを取得してから、docker inspect <dockerContainerId> | grep IPAddress
例えば: docker inspect 2f50fabe8a87 | grep IPAddress
IpアドレスをpgAdminに挿入し、dockerで使用されるデータベース資格情報を挿入します。
localhost
が機能しませんでした。
私の場合、PostgreSQLコンテナを持っていたので、コンテナを変更したり、docker-composeアプローチを作成したりしませんでした。数か月後に、PostgreSQLをインストールするためにpgadmingが必要だったので、これが私のアプローチです。
docker inspect my_container_id_postgreSQL
PostgreSQLに割り当てられたネットワークは次のとおりです。
"ネットワーク":{"docker_default":{"IPアドレス": "172.18.0.2"、...}}
--network
コマンドを使用してPGADMINを実行しました。
docker run -p 85:80 --network docker_default -e'PGADMIN_DEFAULT_EMAIL = user@domain.com '-e'PGADMIN_DEFAULT_PASSWORD = SuperSecret' -d dpage / pgadmin4
IpアドレスをpgAdminに挿入し、dockerで使用されるデータベース資格情報を挿入します。
これが誰かに役立つことを願っています。よろしく。
コンテナのIPを注文または検索するには、次のコマンドを使用します
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container_name_or_id
この問題に2日間直面した後、私はその問題を解決することができました。
この問題の解決策は、検査を行うような人々によってすでに答えられています
docker inspect CONTAINER_ID
しかし、このコマンドを実行している間、Host Config Config Network Settingsなどのログがたくさんあるので、0.0.0.0とconfig、host、networkSettingsの異なる-2 IPAddressを試したため、pgAdmin接続に追加するIPAddressが混乱しました。ログを記録しますが、最終的にはa-lotを試した後に機能します。
どのIPで動作するので、そのネットワークIPアドレス(postgresとpgAdminを接続するために作成したもの)を追加する必要があります。
私が走るときの私の場合のように:-
docker inspect postgres_container
"NetworkSettings": {
"Bridge": "",
"SandboxID": "sdffsffsfsfsfsf123232e2r3pru3ouoyoyuosyvo8769696796",
"HairpinMode": false,
"LinkLocalIPv6Address": "",
"LinkLocalIPv6PrefixLen": 0,
"Ports": {
"5432/tcp": [
{
"HostIp": "0.0.0.0",
"HostPort": "5432"
}
]
},
"SandboxKey": "/var/run/docker/231231Ad132",
"SecondaryIPAddresses": null,
"SecondaryIPv6Addresses": null,
"EndpointID": "",
"Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"IPAddress": "",
"IPPrefixLen": 0,
"IPv6Gateway": "",
"MacAddress": "",
"Networks": {
"postgres": {
"IPAMConfig": null,
"Links": null,
"Aliases": [
"postgres",
"0e2j3bn2m42"
],
"NetworkID": "35rhlhl3l53l5hlh3523233k3k4k22l3hk2k4",
"EndpointID":"b3424n43k52o2i4n235k1k4l2l4hj234f14n2",
"Gateway": "192.168.16.1",
"IPAddress": "192.168.16.2",
"IPPrefixLen": 20,
"IPv6Gateway": "",
したがって、NetworkSettings-> Network-> Postgres(mine created network)-> IPAddress ie "IPAddress": "192.168.16.2"を追加する必要があります。
このIPを追加すると、機能します。
お役に立てば幸いです。
これを行うためにDockerブリッジネットワークを作成することもできます。
$ docker network create pgnet
a0ae44aaf6f806fc37302e4c603b4828c4edb8d487fd9cd90e2fb19ae1d5c65f
$ docker run --detach \
--name pg \
--network pgnet \
--publish 5432:5432 \
--restart always \
--env POSTGRES_PASSWORD=pg123 \
--volume ${PWD}/data:/var/lib/postgresql/data \
postgres:12.1
b60611e43727dabe483c1f08fdf74961b886ce05b432a10a0625bd1b6db87899
$ docker run --detach \
--name pgadm \
--network pgnet \
--publish 8000:80 \
--volume ${PWD}/pgadmin:/var/lib/pgadmin \
--env PGADMIN_DEFAULT_EMAIL=user@domain.com \
--env PGADMIN_DEFAULT_PASSWORD=pgadm123 \
dpage/pgadmin4:4.20
27f9ce1c1c4c383ee1507f4e2d88f6ef33d4fcf5b209a8a03b87519f90d56312
上記で使用されているホスト名/アドレスは、によって指定されたPostgresコンテナの名前です。 --name pg
コンテナの正しいIPを見つけるには、次のコマンドを実行します。
コンテナIDを確認してください:
docker ps
コンテナの正しいIPを確認するには:
docker inspect <ID_CONTAINER> | grep "IPAddress"
Dockerを使用したPostgreSQLとPgAdminの両方の構成は単純ですが、正しくない場合は、問題がさらに深刻な場合は、構成を最初からやり直すことをお勧めします。
これは、この問題を解決するために私が開発したスクリプトです。 script-sh / install-docker-postgres-and-pgadmin
macOSのIPの場合、postgres
およびpgadmin4
がdocker inspect
提供するものとは異なります。タイプ
docker-machine ls
左側のサーバーの名前を見てください。それはだdefault
、デフォルトで。
docker-machine ip default
ブラウザと設定の両方で使用する必要のあるIPpgadmin4
にpostgres
なりpgadmin4
ます。
私が試し、働いた解決策は、postgressとpgadminをサービスとして含めたdockercomposeファイルを作成することでした。詳細:dockerでpgadminをpostgresに接続する