Beginner Docker câu hỏi ở đây,hostname địa phương cho Docker container
Vì vậy, tôi có một môi trường phát triển trong đó tôi đang chạy một ứng dụng mô-đun, nó đang làm việc sử dụng Docker Soạn thư để chạy 3 container: máy chủ, khách hàng, cơ sở dữ liệu.
Các docker-compose.yml
trông như thế này:
#############################
# 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
Bạn có thể thấy tôi đang gán một domainname .dev cho mỗi người, điều này hoạt động tốt để xem một máy với nhau (Docker mạng nội bộ), ví dụ ở đây tôi đang ping server.dev
từ CLI client.dev
's:
[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
này hoạt động tuyệt vời trong nội bộ, nhưng không phải trên mạng điều hành máy chủ của tôi.
Để thuận tiện, tôi muốn gán tên miền trong mạng cục bộ của tôi, không phải mạng vùng chứa Docker để tôi có thể gõ: client.dev trên URL trình duyệt của tôi và tải vùng chứa Docker.
Ngay bây giờ, tôi có thể truy cập nếu tôi sử dụng IP Docker, đó là năng động:
client: 192.168.99.100:80
server: 192.168.99.100:3000
database: 192.168.99.100:5432
Có một chiều/thuận tiện tự động để làm điều này mà không liên quan đến tôi bằng tay thêm IP để tệp/etc/hosts của tôi?
BTW Tôi đang sử dụng OSX nếu có bất kỳ sự liên quan nào.
Cảm ơn!
Edit: tôi thấy vấn đề này Github mà dường như có liên quan: https://github.com/docker/docker/issues/2335
Theo như tôi hiểu, họ dường như nói rằng nó là một cái gì đó mà không có sẵn bên ngoài của hộp và họ đề nghị bên ngoài công cụ thích:
- https://github.com/jpetazzo/pipework
- https://github.com/bnfinet/docker-dns
- https://github.com/gliderlabs/resolvable
Điều đó có đúng không? Và nếu có, tôi nên đi đâu trong kịch bản cụ thể của mình?
Tôi chưa bao giờ sử dụng đế cắm, nhưng địa chỉ IPv4 trong phạm vi 127.0.0.0/8 được định nghĩa là vòng lặp. Điều đó sẽ không cho phép bất kỳ communicatios nào bên ngoài máy – infixed
Đây không phải là một câu hỏi của docker, vì nó là một câu hỏi mạng. Bạn muốn biết hostOS của bạn có thể có bí danh máy chủ lưu trữ động như thế nào (trong trường hợp thay đổi ip của docker) có? Tôi nghĩ bạn có thể kết hợp một 'docker ps -a | lệnh grep 192' có các khái niệm từ 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 = vi & sa = X & ved = 0ahUKEwjdmpz-tdTLAhUIy2MKHZW3CTcQ6AEIWDAJ # v = onepage & q = cách% 20to% 20set% 20a% 20host% 20alias% 20as% 20an% 20environment% 20variable% 20% 2Fetc% 2Fhosts & f = false – CtheGood