Docker
用於連接到 postgresql 容器的 Docker 集線器文件
我正在學習 docker,我正在尋找連接 Ruby 應用程序(容器)以使用 pg 數據庫(postgres 容器)。
但在此之前,我無法使用docker hub 文件連接 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
我對不提供網路的理解(如 docker hub 文件中所述)是,如果沒有提供網路,則 docker 使用預設的橋接網路。
不,非常具體地說,容器不能在預設橋接網路上做的一件事是通過名稱相互解析:https ://docs.docker.com/network/bridge/
預設橋接網路上的容器只能通過 IP 地址相互訪問,除非您使用該
--link
選項,該選項被視為舊版。在使用者定義的橋接網路上,容器可以通過名稱或別名相互解析。您面臨的問題是,雖然您的容器可以通過 IP 相互通信,但您的第二個
psql
容器無法找到主機名pg1
並將其轉換為 IP。您可以按照docker 文件中的說明創建使用者定義的橋接網路並執行附加的兩個容器。
docker-compose
提示:您可能會發現處理此類任務更容易。它讓您可以在程式碼中而不是在命令行中更輕鬆地創建網路並將容器附加到它。