Mengkonfigurasi Docker untuk tidak menggunakan rentang 172.17.0.0

22

Karena masalah dengan portal captive dan kisaran standar Docker IP saya mencoba membuat Docker menggunakan kisaran 198.18.0.0, bukannya 172.17.0.0, yang berbenturan dengan portal captive yang digunakan pada kereta tempat saya tinggal.

Mengikuti dokumen , saya membuat /etc/docker/daemon.json, dan memasukkan yang berikut di dalamnya:

{
    "bip":"198.18.0.0/16"
}

Ini berfungsi untuk docker0, tetapi tampaknya tidak mempengaruhi jaringan lain, dan menggunakan buruh pelabuhan menulis jaringan pertama yang dibuat adalah 172.17.0.0, yang menciptakan kembali clash.

Apa yang dapat saya lakukan untuk mengubah subnet default untuk semua jaringan buruh pelabuhan (lebih disukai tanpa harus menyatakan rentang IP khusus saya di setiap file penulisan)?

jrtapsell
sumber

Jawaban:

27

Dimungkinkan untuk mendefinisikan ulang rentang default.

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

Edit atau buat file konfigurasi untuk daemon docker:

# nano /etc/docker/daemon.json

Tambahkan baris:

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

Mulai ulang dockerd:

# service docker restart

Periksa hasilnya:

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

Ini juga berfungsi untuk komposisi buruh pelabuhan. Info lebih lanjut di sini https://github.com/moby/moby/pull/29376 (digabung)

rNix
sumber
1
10.10.0.0/16 tumpang tindih dengan jaringan default global. Anda dapat menggunakan {"base": "192.168.0.0/16","size":24}. Silakan lihat github.com/moby/moby/blob/…
Root G
11

Ada tiga tempat buruh pelabuhan akan menghasilkan subnet jaringan.

  • Jembatan default
  • Jaringan jembatan yang dibuat pengguna
  • Mode Swarm menghasilkan jaringan overlay

Untuk jembatan default (disebut "jembatan"), Anda dapat menentukan BIP (saya percaya itu adalah IP Jembatan; pastikan itu adalah IP host, bukan IP jaringan ) dalam daemon.jsonfile. Dan untuk jaringan bridge yang dibuat pengguna, Anda dapat menentukan kumpulan subnet untuk dipilih (dengan asumsi pengguna tidak secara manual menentukan subnet). Untuk keduanya, Anda /etc/docker/daemon.jsonakan terlihat seperti:

{
  "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}
  ]
}

Setiap pengaturan kumpulan alamat di atas menentukan rentang CIDR dan ukuran subnet yang akan dialokasikan dari rentang itu. Jadi di atas mendefinisikan dua rentang kelas B yang dialokasikan sebagai jaringan kelas C (/ 24). Anda membutuhkan setidaknya 18,06 untuk kumpulan alamat default. Anda harus memuat ulang daemon buruh pelabuhan agar perubahan ini dapat diterapkan ( systemctl reload docker). Dan perubahan ini hanya akan memodifikasi jaringan pengguna yang baru dibuat, jadi Anda harus menghentikan kontainer dan menghapus jaringan yang ada dalam rentang yang salah.


Pada 18.09, Docker menambahkan kemampuan untuk menentukan rentang alamat untuk mode overarm jaringan overarm yang dihasilkan. Ini hanya dapat dilakukan pada saat pembuatan kawanan sekarang, mudah-mudahan itu akan diperbarui di masa depan untuk memungkinkan docker swarm updateuntuk menyesuaikan kumpulan ini:

$ 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
BMitch
sumber
1
Ringkasan hebat dari opsi 2018/2019 saat ini. Juga, jika menggunakan Docker Desktop, bipopsi di Pengaturan / Preferensi GUI. Untuk default-address-poolsAnda dapat mengedit daemon.json secara manual di GUI yang sama, dan untuk swarm default-addr-poolAnda masih mengubahnya dengan initperintah.
Bret Fisher
1

Konfigurasikan jaringan jembatan default : "... Untuk mengkonfigurasi jaringan jembatan default, Anda menentukan opsi di daemon.json. Ini adalah contoh daemon.json dengan beberapa opsi yang ditentukan. Hanya tentukan pengaturan yang perlu Anda sesuaikan. ..."

Dengan menulis: Tetapkan jaringan khusus : "... Alih-alih hanya menggunakan jaringan aplikasi default, Anda dapat menentukan jaringan Anda sendiri dengan kunci jaringan tingkat atas. Ini memungkinkan Anda membuat topologi yang lebih kompleks dan menentukan driver dan opsi jaringan kustom. Anda juga dapat menggunakannya untuk menghubungkan layanan ke jaringan yang dibuat secara eksternal yang tidak dikelola oleh Compose.… "

poige
sumber
Apakah mungkin untuk mengubah rentang IP yang digunakan untuk jaringan implisit yang digunakan oleh docker-compose, dan yang tidak memiliki kisaran yang ditetapkan secara eksplisit?
jrtapsell
-1

Mungkin agak brutal tapi saya hanya melakukan sudo ifconfig docker0 downuntuk mematikan antarmuka yang bertentangan dengan wifi yang saya coba gunakan.

Falko Menge
sumber
Pertanyaannya adalah tentang menggunakan rentang lain, bukan tentang mematikan jaringan.
RalfFriedl
@RalfFriedl Itu benar. Tetapi sebagai seorang yang sering bepergian yang menggunakan banyak jaringan wifi yang berbeda, saya telah melihat segala macam rentang port sedang dalam konflik. Jadi, alih-alih mencari rentang port, seseorang juga dapat mematikan sementara jaringan.
Falko Menge