저는 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
아니요, 구체적으로 말하면 기본 브리지 네트워크에서 컨테이너가 할 수 없는 한 가지는 이름으로 서로를 확인하는 것입니다.https://docs.docker.com/network/bridge/
--link
기본 브리지 네트워크의 컨테이너는 레거시로 간주되는 이 옵션을 사용하지 않는 한 IP 주소를 통해서만 서로 연결할 수 있습니다 .사용자 정의 브리지 네트워크에서, 컨테이너는 이름이나 별칭으로 서로를 확인할 수 있습니다.
직면한 문제는 컨테이너가 IP를 통해 서로 통신할 수 있지만 두 번째 psql
컨테이너가 호스트 이름을 찾아 pg1
IP로 변환할 수 없다는 것입니다.
다음 지침을 따를 수 있습니다.도커 문서사용자 정의 브리지 네트워크를 생성하고 여기에 연결된 두 개의 컨테이너를 실행합니다.
docker-compose
팁: 이 유형의 작업을 완료하는 것이 더 쉬울 수도 있습니다 . 이를 통해 더 쉽게 네트워크를 만들고 명령줄이 아닌 코드로 해당 네트워크에 컨테이너를 연결할 수 있습니다.