---
title: "Cara Memakai Docker Network agar Container Saling Bicara"
description: "Panduan membuat user-defined network di Docker agar container saling memanggil lewat nama, memisahkan jaringan internal, dan memakainya di Compose."
url: "https://nivelva.com/insight/cara-memakai-docker-network-container-saling-bicara"
category: "Server \u0026 Infrastruktur"
tags: ["docker","docker network","container","docker compose","jaringan"]
author: "Lucas Tan"
published: "2026-11-11T12:53:00+07:00"
updated: "2026-11-11T12:53:00+07:00"
language: "id"
publisher: "Nivelva (https://nivelva.com)"
---

# Cara Memakai Docker Network agar Container Saling Bicara

> **Jawaban singkat:** Buat jaringan sendiri dengan docker network create, lalu jalankan container di jaringan itu. Container di user-defined network bisa saling memanggil lewat nama berkat DNS bawaan Docker, sesuatu yang tidak tersedia di jaringan bridge default.

Pernah menjalankan container aplikasi dan container database terpisah, lalu aplikasinya gagal tersambung ke `db:5432` dengan pesan nama host tidak ditemukan? Penyebabnya hampir selalu jaringan. Keduanya mungkin berada di jaringan bridge bawaan Docker, yang tidak menyediakan pencarian nama antar container.

Solusinya adalah membuat **user-defined network**. Container yang tergabung di jaringan buatanmu bisa saling memanggil lewat nama container atau alias, dan terisolasi dari container lain yang tidak ikut jaringan itu. Berikut langkahnya dari nol sampai rapi di Compose.

## Kenapa jaringan bridge default tidak cukup?

Saat Docker terpasang, ia membuat jaringan bernama `bridge`. Container yang dijalankan tanpa opsi `--network` otomatis masuk ke sana. Container di jaringan ini memang bisa saling terhubung, tetapi hanya lewat alamat IP, dan IP itu bisa berubah setiap container dibuat ulang. Fitur lama `--link` untuk mengatasi hal ini sudah lama berstatus legacy.

User-defined bridge network memperbaiki semua itu. Dokumentasi Docker menyebut beberapa kelebihannya: pencarian nama otomatis antar container, isolasi yang lebih baik karena hanya container yang kamu masukkan yang bisa saling bicara, serta container bisa disambung dan dilepas dari jaringan tanpa harus dihentikan.

## Langkah membuat jaringan dan menyambungkan container

### 1. Lihat jaringan yang sudah ada

```bash
docker network ls
```

Kamu akan melihat setidaknya `bridge`, `host`, dan `none`. Jaringan buatan Compose juga muncul di sini dengan nama `<nama-proyek>_default`.

### 2. Buat jaringan baru

```bash
docker network create appnet
```

Tanpa opsi tambahan, driver yang dipakai adalah `bridge`. Kalau perlu subnet tertentu agar tidak bentrok dengan jaringan kantor atau VPN, tambahkan `--subnet 172.30.0.0/24`.

### 3. Jalankan container di jaringan itu

```bash
docker run -d --name db --network appnet \
  -e POSTGRES_PASSWORD=rahasia postgres:17

docker run -d --name app --network appnet \
  -e DATABASE_HOST=db -p 8080:8080 contoh/app:latest
```

Perhatikan bahwa database tidak diberi `-p`. Ia tidak perlu dibuka ke internet, cukup dijangkau oleh `app` lewat jaringan internal. Hanya `app` yang mempublikasikan port ke host.

### 4. Uji pencarian nama

```bash
docker exec -it app getent hosts db
```

Bila keluar alamat IP diikuti nama `db`, DNS bawaan Docker bekerja. Di dalam container, resolver menunjuk ke `127.0.0.11`, server DNS internal milik Docker yang menjawab nama container di jaringan yang sama. Kalau image tidak punya `getent`, coba `ping db` atau `nslookup db` bila tersedia.

### 5. Sambungkan container yang sudah berjalan

```bash
docker network connect appnet nama-container-lain
docker network disconnect appnet nama-container-lain
```

Satu container boleh tergabung di beberapa jaringan sekaligus. Ini berguna untuk reverse proxy yang harus menjangkau beberapa aplikasi yang saling terpisah.

### 6. Periksa isi jaringan

```bash
docker network inspect appnet
```

Bagian `Containers` menampilkan container yang tergabung beserta IP-nya. Perintah ini yang pertama kali dibuka saat ada koneksi yang tidak nyambung.

## Memisahkan jaringan publik dan internal

Pola yang aman untuk server produksi adalah dua jaringan. Jaringan `frontend` berisi reverse proxy dan aplikasi. Jaringan `backend` berisi aplikasi dan database. Reverse proxy tidak bisa menyentuh database secara langsung, karena tidak satu jaringan.

Untuk jaringan yang sama sekali tidak boleh keluar ke internet, ada opsi `--internal`:

```bash
docker network create --internal backend
```

Container yang hanya tergabung di jaringan internal tidak punya rute keluar. Cocok untuk database yang tidak perlu mengunduh apa pun. Ingat juga bahwa port yang dipublikasikan dengan `-p` bisa melewati aturan firewall host di beberapa konfigurasi, jadi baca juga [cara mengamankan Docker agar port tidak bocor](https://nivelva.com/insight/cara-mengamankan-docker-vps-port-tidak-bocor).

## Jaringan di Docker Compose

Compose otomatis membuat satu jaringan default per proyek, dan setiap service bisa memanggil service lain lewat nama service-nya. Untuk pemisahan seperti di atas, deklarasikan jaringan sendiri:

```yaml
services:
  proxy:
    image: nginx:stable
    ports:
      - "80:80"
    networks: [frontend]

  app:
    image: contoh/app:latest
    networks: [frontend, backend]

  db:
    image: postgres:17
    environment:
      POSTGRES_PASSWORD: rahasia
    networks: [backend]

networks:
  frontend:
  backend:
    internal: true
```

Di sini `proxy` bisa memanggil `app`, `app` bisa memanggil `db`, tapi `proxy` tidak bisa menjangkau `db`. Kalau dua proyek Compose berbeda perlu berbagi jaringan, buat jaringan lebih dulu dengan `docker network create`, lalu di Compose tandai dengan `external: true`.

## Ringkasan driver jaringan Docker

| Driver | Kapan dipakai | Pencarian nama antar container |
|:--|:--|:--|
| `bridge` default | Uji cepat satu container | Tidak |
| `bridge` buatan sendiri | Hampir semua kebutuhan di satu host | Ya |
| `host` | Container memakai jaringan host langsung, tanpa isolasi | Tidak relevan |
| `none` | Container tanpa jaringan sama sekali | Tidak |
| `overlay` | Beberapa host dalam Docker Swarm | Ya |
| `macvlan` | Container butuh alamat MAC sendiri di LAN | Tergantung konfigurasi |

Untuk satu VPS, user-defined bridge sudah cukup di hampir semua kasus. Overlay baru relevan saat kamu menjalankan beberapa server sekaligus, topik yang dibahas di [Docker Swarm atau Kubernetes untuk tim kecil](https://nivelva.com/insight/docker-swarm-kubernetes-tim-kecil).

## Pertanyaan yang sering diajukan

### Apakah nama container bisa dipakai lintas jaringan yang berbeda?

Tidak. DNS bawaan Docker hanya menjawab nama container yang berada di jaringan yang sama. Kalau dua container perlu bicara, keduanya harus tergabung di minimal satu jaringan yang sama.

### Apakah localhost di dalam container menunjuk ke host?

Tidak. localhost di dalam container adalah container itu sendiri. Untuk menjangkau layanan di host, pakai IP gateway jaringan atau host.docker.internal yang di Linux perlu ditambahkan dengan opsi --add-host=host.docker.internal:host-gateway.

### Bagaimana menghapus jaringan yang tidak terpakai?

Pakai docker network rm nama-jaringan untuk satu jaringan, atau docker network prune untuk menghapus semua jaringan yang tidak dipakai container mana pun.

### Kenapa subnet jaringan Docker bentrok dengan jaringan kantor atau VPN?

Docker memilih subnet dari rentang privat secara otomatis. Bila bentrok, buat jaringan dengan --subnet yang jelas berbeda, atau atur default-address-pools di /etc/docker/daemon.json lalu restart Docker.

Checklist singkat sebelum selesai:

- Container yang perlu saling bicara berada di user-defined network yang sama.
- Database dan layanan internal tidak memakai `-p`.
- Jaringan backend ditandai `internal` bila tidak butuh internet.
- `docker network inspect` menampilkan anggota yang sesuai rencana.

## Sumber

- <https://docs.docker.com/engine/network/>
- <https://docs.docker.com/engine/network/drivers/bridge/>
- <https://docs.docker.com/compose/how-tos/networking/>

---

Diterbitkan oleh Nivelva Insight (https://nivelva.com/insight/). Artikel ini: https://nivelva.com/insight/cara-memakai-docker-network-container-saling-bicara
Kontak Nivelva: WhatsApp https://wa.me/6285111245007, email hello@nivelva.com
