初學者碼頭工人的問題在這裏,本地主機名的Docker容器
所以我在我運行一個模塊化的應用程序開發環境,它是使用泊塢窗撰寫運行3個容器的工作:服務器,客戶端,數據庫。
的docker-compose.yml
看起來是這樣的:
#############################
# Server
#############################
server:
container_name: server
domainname: server.dev
hostname: server
build: ./server
working_dir: /app
ports:
- "3000:3000"
volumes:
- ./server:/app
links:
- database
#############################
# Client
#############################
client:
container_name: client
domainname: client.dev
hostname: client
image: php:5.6-apache
ports:
- "80:80"
volumes:
- ./client:/var/www/html
#############################
# Database
#############################
database:
container_name: database
domainname: database.dev
hostname: database
image: postgres:9.4
restart: always
environment:
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=root
- POSTGRES_DB=dbdev
- PG_TRUST_LOCALNET=true
ports:
- "5432:5432"
volumes:
- ./database/scripts:/docker-entrypoint-initdb.d # init scripts
你可以看到我指定一個.dev域名,以每個人,這工作正常,看一臺機器從另一個(泊塢窗內部網絡),例如我在這裏從client.dev
的CLI查驗server.dev
:
[email protected]:/var/www/html# ping server.dev
PING server.dev (127.0.53.53): 56 data bytes
64 bytes from 127.0.53.53: icmp_seq=0 ttl=64 time=0.036 ms
這種內部的偉大工程,但不是我的主機操作系統的網絡上。
爲方便起見,我想在我的本地網絡中分配域名,而不是在Docker容器網絡中,以便我可以在我的瀏覽器URL中鍵入:client.dev並加載Docker容器。
現在,我只能訪問,如果我使用泊塢IP,這是動態的:
client: 192.168.99.100:80
server: 192.168.99.100:3000
database: 192.168.99.100:5432
是否有自動/方便的方式來做到這一點,不涉及我手動添加到IP我的/ etc/hosts文件?
順便說一句我在OSX上,如果有任何相關性。
謝謝!
編輯:我發現這個Github的問題,這似乎是相關的:https://github.com/docker/docker/issues/2335
據我瞭解,他們似乎說,它的東西是不可用盒子的外面,他們建議外工具,如:
- https://github.com/jpetazzo/pipework
- https://github.com/bnfinet/docker-dns
- https://github.com/gliderlabs/resolvable
這是正確的嗎?如果是這樣,我應該在特定場景中選擇哪一個?
我從來沒有使用docker,但127.0.0.0/8範圍內的IPv4地址被定義爲環回。這將不允許任何機器外的通信 – infixed
這不是一個碼頭問題,因爲它是一個網絡問題。你想知道你的hostOS如何擁有動態主機別名(如果docker的ip變化)yes?我想你可以結合一個'docker ps -a | grep 192'命令,其中的概念來自https://books.google.com/books?id=HggtWI1ShvMC&pg=PT142&lpg=PT142&dq=how+to+set+a+host+alias+as+an+environment+variable+/etc/hosts&source = BL&OTS = PSOwZZOwVs與SIG = TEHiz2Ef_a36AEhXigSAi0hWsI0&HL = EN&SA = X&VED = 0ahUKEwjdmpz-tdTLAhUIy2MKHZW3CTcQ6AEIWDAJ#v = onepage&q =如何%20to%20set%20A%20host%20alias%20AS%20AN%20environment%20variable%20%2Fetc%2Fhosts&F =假 – CtheGood