Tôi đang cố gắng thiết lập vùng chứa docker dnsmasq để tôi có thể chứa tất cả vùng chứa docker của mình tra cứu tên miền thay vì có IP được mã hóa cứng (nếu chúng nằm trên cùng một máy chủ). Điều này khắc phục sự cố với thực tế là các vùng chứa one cannot alter the /etc/hosts file in docker và điều này cho phép tôi dễ dàng cập nhật tất cả các vùng chứa của mình trong một lần bằng cách thay đổi một tệp duy nhất mà vùng chứa dnsmasq tham chiếu.Thiết lập Docker Dnsmasq
Có vẻ như ai đó đã thực hiện công việc khó khăn cho tôi và tạo một dnsmasq container. Thật không may, nó không phải là "làm việc" cho tôi. Tôi đã viết một kịch bản bash để bắt đầu container như hình dưới đây:
name="dnsmasq_"
timenow=$(date +%s)
name="$name$timenow"
sudo docker run \
-v="$(pwd)/dnsmasq.hosts:/dnsmasq.hosts" \
--name=$name \
-p='127.0.0.1:53:5353/udp' \
-d sroegner/dnsmasq
Trước khi chạy đó, tôi tạo thư mục dnsmasq.hosts và chèn một tập tin bên trong nó gọi là hosts.txt với các nội dung sau:
192.168.1.3 database.mydomain.com
Đáng tiếc là bất cứ khi nào tôi cố gắng ping tên miền từ bên trong:
- chủ nhà
- các dnsmasq chứa
- khác chứa trên cùng một máy chủ
tôi luôn luôn nhận được thông báo lỗi ping: unknown host
.
tôi đã cố gắng bắt đầu container dnsmasq không có chế độ daemon để tôi có thể gỡ lỗi sản lượng của nó, đó là dưới đây:
dnsmasq: started, version 2.59 cachesize 150
dnsmasq: compile time options: IPv6 GNU-getopt DBus i18n DHCP TFTP conntrack IDN
dnsmasq: reading /etc/resolv.dnsmasq.conf
dnsmasq: using nameserver 8.8.8.8#53
dnsmasq: read /etc/hosts - 7 addresses
dnsmasq: read /dnsmasq.hosts//hosts.txt - 1 addresses
Tôi đoán rằng tôi đã không quy định các tham số -p
một cách chính xác khi bắt đầu container. Ai đó có thể cho tôi biết những gì nó nên được cho container docker khác để tra cứu DNS, hoặc cho dù những gì tôi đang cố gắng làm là thực sự không thể?