私はdockerを学んでおり、Rubyアプリケーション(コンテナ)を接続してpgデータベース(postgresコンテナ)を使用したいと思います。
しかし、それ以前は、次のコマンドを使用してPostgresに接続することはできません。ドッカーハブ文書
docker run --name pg1 -e POSTGRES_PASSWORD=mysecretpassword POSTGRES_USER=seceretuser postgres
docker run -it --rm postgres psql -h pg1 -U seceretuser
ただし、次のエラーが発生します。
psql: error: could not translate host name "pg1" to address: Name or service not known
ネットワークを提供しないことの私の理解(ドッカーハブのドキュメントで言及されているように)は、ネットワークが提供されていない場合、ドッカーはデフォルトのブリッジネットワークを使用することです。
答え1
いいえ、具体的には、プライマリブリッジネットワークでコンテナができないことの1つは、名前でお互いを確認することです。https://docs.docker.com/network/bridge/
--link
プライマリブリッジネットワークのコンテナは、レガシーと見なされるこのオプションを使用しない限り、IPアドレスを介してのみ相互に接続できます。カスタムブリッジネットワークで、コンテナは名前またはエイリアスで互いに確認できます。
直面する問題は、コンテナがIPを介して互いに通信できるが、2番目のコンテナがホスト名を見つけてpsql
IPpg1
に変換できないことです。
次のガイドラインに従うことができます。ドッカー文書カスタムブリッジネットワークを作成し、ここに接続されている2つのコンテナを実行します。
docker-compose
ヒント:このタイプの作業を完了する方が簡単かもしれません。これにより、ネットワークを簡単に作成し、コマンドラインではなくコードでそのネットワークにコンテナを接続できます。