Định cấu hình Docker để không sử dụng phạm vi 172.17.0.0


21

Do sự cố với cổng bị khóa và phạm vi IP Docker mặc định, tôi đang cố gắng tạo Docker sử dụng phạm vi 198,18.0.0, thay vì 172,17.0.0, xung đột với cổng bị giam giữ được sử dụng trên các chuyến tàu nơi tôi sống.

Theo các tài liệu , tôi đã tạo /etc/docker/daemon.jsonvà đặt các mục sau vào đó:

{
    "bip":"198.18.0.0/16"
}

Điều này hoạt động với docker0, nhưng dường như nó không ảnh hưởng đến bất kỳ mạng nào khác và sử dụng docker soạn mạng đầu tiên được tạo là 172.17.0.0, tạo lại xung đột.

Tôi có thể làm gì để thay đổi mạng con mặc định cho tất cả các mạng docker (tốt nhất là không phải nêu phạm vi IP tùy chỉnh của mình trong mỗi tệp soạn thảo)?

Câu trả lời:


27

Có thể xác định lại phạm vi mặc định.

$ docker -v
Docker version 18.06.0-ce, build 0ffa825

Chỉnh sửa hoặc tạo tập tin cấu hình cho docker daemon:

# nano /etc/docker/daemon.json

Thêm dòng:

{
  "default-address-pools":
  [
    {"base":"10.10.0.0/16","size":24}
  ]
}

Khởi động lại dockerd:

# service docker restart

Kiểm tra kết quả:

$ docker network create foo
$ docker network inspect foo | grep Subnet
                    "Subnet": "10.10.1.0/24"

Nó hoạt động cho docker-compose quá. Thêm thông tin tại đây https://github.com/moby/moby/pull/29376 (đã hợp nhất)


10.10.0.0/16 trùng lặp với các mạng mặc định toàn cầu. Bạn có thể sử dụng {"cơ sở": "192.168.0.0/16","size":24}. Vui lòng xem github.com/moby/moby/blob/ Kẻ
Root G

11

Có ba nơi docker sẽ tạo mạng con.

  • Cầu mặc định
  • Mạng cầu do người dùng tạo
  • Chế độ quét được tạo ra các mạng lớp phủ

Đối với cầu nối mặc định (được gọi là "cầu"), bạn có thể chỉ định BIP (Tôi tin rằng đó là Bridge IP; đảm bảo đó là IP máy chủ chứ không phải IP mạng ) trong daemon.jsontệp. Và đối với các mạng cầu do người dùng tạo, bạn có thể xác định nhóm mạng con để chọn (giả sử người dùng không chỉ định thủ công mạng con). Đối với hai, bạn /etc/docker/daemon.jsonsẽ trông như:

{
  "bip": "10.200.0.1/24",
  "default-address-pools":[
    {"base":"10.201.0.0/16","size":24},
    {"base":"10.202.0.0/16","size":24}
  ]
}

Mỗi cài đặt nhóm địa chỉ ở trên xác định phạm vi CIDR và ​​kích thước của các mạng con sẽ được phân bổ từ phạm vi đó. Vì vậy, ở trên định nghĩa hai phạm vi lớp B được phân bổ là mạng lớp C (/ 24). Bạn cần ít nhất 18,06 cho nhóm địa chỉ mặc định. Bạn sẽ cần tải lại trình nền docker cho thay đổi này để áp dụng ( systemctl reload docker). Và thay đổi này sẽ chỉ sửa đổi các mạng người dùng mới được tạo, vì vậy bạn sẽ cần dừng các container và xóa các mạng hiện có trong phạm vi sai.


Vào ngày 18 tháng 9, Docker đã thêm khả năng chỉ định phạm vi địa chỉ cho các mạng lớp phủ được tạo ở chế độ swarm. Điều này chỉ có thể được thực hiện tại thời điểm tạo ra bầy đàn ngay bây giờ, hy vọng rằng nó sẽ được cập nhật trong tương lai để cho phép docker swarm updateđiều chỉnh các nhóm này:

$ docker swarm init \
  --default-addr-pool 10.202.0.0/16 \
  --default-addr-pool 10.203.0.0/16 \
  --default-addr-pool-mask-length 24

1
Tóm tắt tuyệt vời về các lựa chọn 2018/2019 hiện tại. Ngoài ra, nếu sử dụng Docker Desktop, biptùy chọn trong GUI Cài đặt / Tùy chọn. Để default-address-poolsbạn có thể chỉnh sửa daemon.json theo cách thủ công trong cùng GUI đó và đối với swarm, default-addr-poolbạn vẫn thay đổi chúng bằng initlệnh.
Bret Fisher

1

Định cấu hình mạng cầu mặc định : "Để định cấu hình mạng cầu mặc định, bạn chỉ định các tùy chọn trong daemon.json. Dưới đây là ví dụ daemon.json với một số tùy chọn được chỉ định. Chỉ chỉ định cài đặt bạn cần tùy chỉnh.

Với compose: Chỉ định mạng tùy chỉnh : "Thay vì chỉ sử dụng mạng ứng dụng mặc định, bạn có thể chỉ định mạng của mình bằng khóa mạng cấp cao nhất. Điều này cho phép bạn tạo các cấu trúc liên kết phức tạp hơn và chỉ định các tùy chọn và trình điều khiển mạng tùy chỉnh. Bạn cũng có thể sử dụng nó để kết nối các dịch vụ với các mạng được tạo bên ngoài mà Compose không quản lý. "


Có thể thay đổi phạm vi IP được sử dụng cho các mạng ẩn được sử dụng bởi docker-compose và các mạng không có phạm vi được đặt rõ ràng không?
jrtapsell

-1

Nó có thể hơi tàn bạo nhưng tôi chỉ đơn giản là làm sudo ifconfig docker0 downtắt giao diện xung đột với wifi tôi đang cố sử dụng.


Câu hỏi là về việc sử dụng một phạm vi khác, không phải về việc tắt mạng.
RalfFriedl

@RalfFriedl Đó là sự thật. Nhưng là một khách du lịch thường xuyên sử dụng nhiều mạng wifi khác nhau, tôi đã thấy tất cả các loại cổng bị xung đột. Vì vậy, thay vì tìm kiếm một phạm vi cổng, người ta cũng có thể tạm thời tắt mạng.
Falko Menge
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.