2015-11-18 22 views
10

DNS mặc định cho Docker (ví dụ: 8.8.8.8) bị chặn ở nơi tôi làm việc, vì vậy tôi muốn thay đổi mặc định. Tôi đã có thể thực hiện việc này bằng cách sử dụngĐặt DNS cho Docker daemon trên OS với systemd

$ docker daemon --dns <mydnsaddress> 

nhưng tôi muốn thực hiện việc này bằng cách sử dụng hệ thống thả xuống thay vì tài liệu Docker chính thức đề xuất theo cách này. Tôi đã tạo một tệp /etc/systemd/system/docker.service.d/dns.conf và sử dụng những thứ như sau:

[Service] 
DNS=<mydnsaddress> 

Nhưng tôi không biết tên biến được cho là gì. Làm thế nào để tôi thiết lập điều này? Quan trọng hơn, là có một trang tài liệu tất cả các biến cấu hình có thể được sử dụng trong systemd drop-in cho Docker?

(btw, đây là Docker 1.9 trên Ubuntu 15.10, mặc dù tôi không nghi ngờ bất kỳ lỗi)

+1

Tài liệu trình giới thiệu mô tả cách DOCKER_OPTS có thể được đặt trong tệp/etc/default/docker: https://docs.docker.com/engine/articles/configuring/ –

Trả lời

27

Tất cả các tập tin trong .conf/etc/systemd/system/docker.service.d bác bỏ các thiết lập từ tập tin /usr/lib/systemd/system/docker.service, đó là hầu hết những gì bạn đã cố gắng.

Thay vì đưa một dòng DNS=.. nhập, bạn cần phải sao chép một phần ExecStart= từ tập tin /usr/lib/systemd/system/docker.service-dns.conf (hoặc mydocker.conf). Thêm --dns $ip sau số daemon một phần của ExecStart. Ví dụ:

[Service] 
ExecStart= 
ExecStart=/usr/bin/docker daemon --dns 192.168.1.1 -H fd:// 

Trường hợp 192.168.1.1 là ip của máy chủ dns.

Bây giờ khởi động lại docker qua systemctl và docker bây giờ sẽ khởi động lại với dns của riêng bạn. (Có thể kiểm tra qua systemctl status docker.service | grep dns).

Lưu ý rằng số trống ExecStart= là bắt buộc, vì systemctl chỉ sẽ ghi đè ExecStart nếu nó bị xóa trước tiên.

Cũng lưu ý rằng cần có systemctl daemon-reload sau khi chỉnh sửa tệp trong /etc/systemd/system/.

Nhận xét cuối cùng là trên một số hệ thống docker.service không nằm trong /usr/lib/systemd/system/, nhưng ở /lib/systemd/system/.

+1

Cảm ơn bạn đã làm việc này. Nhưng là khá phức tạp ... đây là một cái gì đó được sử dụng để được dễ dàng hơn, trước khi systemd. –

Các vấn đề liên quan