None Network #

Di dalam Docker, network adalah salah satu komponen fundamental yang menentukan bagaimana container dapat berkomunikasi dengan dunia luar maupun dengan container lain. Kebanyakan pembahasan Docker selalu berfokus pada bridge network, host network, atau overlay network. Namun ada satu mode network yang sering terlewat, padahal sangat penting dalam konteks keamanan dan isolasi sistem, yaitu none network.

none network adalah mode network paling minimal di Docker. Container yang menggunakan mode ini tidak memiliki akses jaringan sama sekali. Tidak ada IP address eksternal, tidak bisa mengakses internet, dan tidak bisa berkomunikasi dengan container lain kecuali kita melakukan konfigurasi manual.

Agar lebih mudah dipahami, berikut gambaran sederhananya:

+-------------------+        +-------------------+
|    Host OS        |        |   Internet / LAN  |
|                   |        |                   |
|  +-------------+  |        |                   |
|  | Container A |  |  X  X  |                   |
|  | (none net)  |  |        |                   |
|  +-------------+  |        |                   |
|                   |        |                   |
+-------------------+        +-------------------+

Keterangan:
- Container A berjalan normal
- Tidak ada interface network selain loopback (lo)
- Tidak ada koneksi ke host, LAN, maupun internet

Diagram di atas menunjukkan bahwa container dengan none network benar-benar terisolasi dari sisi jaringan.


Apa Itu None Network di Docker? #

None network adalah salah satu built-in network driver di Docker selain bridge dan host. Ketika sebuah container dijalankan dengan mode --network none, Docker:

  • Tidak membuat virtual ethernet (veth)
  • Tidak menghubungkan container ke bridge mana pun
  • Tidak memberikan IP address
  • Hanya menyediakan interface lo (loopback)

Dengan kata lain, container tetap berjalan sebagai proses terisolasi (namespace, cgroups, filesystem), tetapi tanpa stack jaringan.


Cara Menjalankan Container dengan None Network #

Contoh menjalankan container dengan none network:

docker run --network none --name no-net-container alpine

Jika kita masuk ke dalam container dan mengecek interface network:

ip addr

Hasilnya kira-kira:

1: lo: <LOOPBACK,UP,LOWER_UP>
    inet 127.0.0.1/8 scope host lo

Tidak ada eth0, tidak ada IP address lain, dan tidak ada routing table ke luar.


Karakteristik Utama None Network #

1. Tidak Ada Koneksi Jaringan #

Container benar-benar offline:

  • Tidak bisa curl ke internet
  • Tidak bisa ping container lain
  • Tidak bisa expose port

2. Isolasi Maksimal #

Karena tidak ada network interface:

  • Risiko network attack hampir nol
  • Cocok untuk workload sensitif
  • Sangat berguna untuk sandbox atau proses terbatas

3. Masih Bisa Digunakan Secara Lokal #

Walaupun tanpa jaringan eksternal:

  • Aplikasi tetap bisa berjalan
  • Komunikasi internal via file, stdin/stdout, atau volume tetap bisa dilakukan

Perbandingan None Network vs Bridge Network #

Aspeknone networkbridge network
IP AddressTidak adaAda
Akses InternetTidakYa (default)
Komunikasi Antar ContainerTidakYa
KeamananSangat tinggiStandar
KonfigurasiSangat minimalOtomatis

Kapan None Network Sebaiknya Digunakan? #

1. Job atau Task Offline #

Contoh:

  • Batch processing
  • Data transformation dari file ke file
  • Enkripsi / dekripsi data

Semua input dan output dilakukan via volume, bukan network.

2. Security Hardening #

Dalam pendekatan defense in depth, none network sering digunakan untuk:

  • Mengurangi attack surface
  • Mencegah data exfiltration
  • Menjalankan proses yang tidak boleh berkomunikasi ke luar

3. Sandbox dan Testing #

Untuk:

  • Menguji aplikasi apakah benar-benar tidak bergantung pada network
  • Menjalankan untrusted code dengan risiko minimal

Apakah None Network Bisa Dikombinasikan dengan Network Manual? #

Ya, tetapi tidak otomatis.

Pendekatan lanjutan (advanced):

  • Menjalankan container dengan --network none
  • Menambahkan interface network secara manual menggunakan namespace Linux
  • Menghubungkan container ke network custom secara eksplisit

Pendekatan ini biasanya digunakan oleh:

  • Platform keamanan
  • Container runtime custom
  • Advanced networking setup

Untuk kebanyakan use case, pendekatan ini tidak disarankan karena kompleks dan rawan error.


Kesalahan Umum #

  1. Mengira container error karena tidak bisa akses internet Padahal ini adalah perilaku yang memang diinginkan.

  2. Mencoba expose port Expose port tidak akan berfungsi karena tidak ada interface jaringan.

  3. Menggunakan image yang butuh download saat runtime Pastikan semua dependency sudah ada di image.


Best Practice #

  • Gunakan hanya jika benar-benar tidak membutuhkan network
  • Pastikan dependency di-build saat image build stage
  • Gunakan volume untuk input/output data
  • Dokumentasikan dengan jelas alasan penggunaan none network

Penutup #

none network adalah mode network Docker yang sering terlupakan, tetapi sangat powerful. Ia menawarkan isolasi jaringan maksimal dengan konfigurasi paling sederhana. Dalam dunia container security, memahami dan memanfaatkan none network adalah salah satu langkah penting untuk membangun sistem yang lebih aman dan terkontrol.

Jika bridge network adalah default yang nyaman, maka none network adalah pilihan sadar untuk keamanan, isolasi, dan kontrol penuh.

About | Author | Content Scope | Editorial Policy | Privacy Policy | Disclaimer | Contact