Lewati ke konten utama

Pasang Docker di Debian: Panduan Pemasangan Lengkap

Panduan ini mencakup empat pendekatan pemasangan, dari repositori resmi Docker hingga pemasangan paket manual, plus konfigurasi pascapemasangan yang penting untuk penerapan tingkat perusahaan. Anda akan mempelajari cara mengamankan lingkungan Docker, menelusuri masalah umum, dan mempertahankan setup yang siap produksi.
· 15 mnt Baca

Jelajahi bersama AI

Menginstal Docker di Debian tidak seharusnya membuat Anda menebak-nebak metode mana yang tidak akan merusak sistem.

Sebagian besar panduan menawarkan banyak opsi instalasi tanpa menjelaskan kapan harus menggunakan masing-masing. Akibatnya, Anda berakhir dengan paket usang dari repositori Debian, atau lebih buruk lagi, galat izin yang membuat Anda terkunci dari kontainer sendiri. Hasilnya? Anda menghabiskan berjam-jam untuk pemecahan masalah alih-alih menerapkan aplikasi.

Siklus rilis yang dapat diprediksi dan stabilitas tinggi Debian menjadikannya sempurna untuk penerapan Docker produksi. Anda mendapatkan kinerja kontainer yang konsisten tanpa pembaruan sistem mendadak yang merusak penyiapan. Secara teori, Anda tidak akan mengalami masalah setelah bagian yang paling rumit: instalasi.

Dalam tutorial ini, saya akan memandu Anda melalui empat metode instalasi, penguatan keamanan penting, konfigurasi penyimpanan, dan langkah pemecahan masalah agar Docker berjalan andal di Debian.

Baru sama sekali dengan Docker? Mulai dari dasar-dasar Docker sebelum melanjutkan ke langkah instalasi.

Prasyarat Sistem

Docker berjalan di sebagian besar sistem Debian modern, tetapi Anda perlu memastikan beberapa hal terlebih dahulu. Pada bagian ini, saya akan tunjukkan kebutuhan sistem yang tepat sebelum Anda memulai instalasi.

Debian 10 (Buster) atau lebih baru diperlukan untuk versi Docker saat ini. Rilis lama seperti Debian 9 tidak akan berfungsi dengan build Docker Engine terbaru. Versi kernel Anda harus 3.10 atau lebih tinggi — sebagian besar instalasi Debian dalam beberapa tahun terakhir sudah memenuhi syarat ini secara otomatis.

Anda memerlukan akses root atau hak sudo untuk memasang paket Docker dan mengonfigurasi sistem. Docker juga membutuhkan paket inti ini: apt-transport-https, ca-certificates, curl, dan gnupg. Sebagian besar sistem Debian sudah memasangnya, tetapi Anda akan memverifikasinya nanti.

Kebutuhan perangkat keras minimal:

  • RAM 2GB untuk menangani beban kerja kontainer dasar, meski 4GB atau lebih lebih baik untuk lingkungan pengembangan
  • Ruang disk kosong 10GB adalah minimum untuk image Docker dan data kontainer. Penyiapan produksi harus merencanakan jauh lebih banyak.

Jika Anda menggunakan lingkungan desktop GNOME, pastikan paket gnome-terminal terpasang. Beberapa alat manajemen Docker mengandalkannya untuk sesi kontainer interaktif.

Hapus instalasi Docker lama sebelum memulai. Paket lawas seperti docker, docker.io, atau docker-engine dapat bertentangan dengan Docker Engine saat ini. Jalankan perintah ini untuk membersihkan versi lama:

sudo apt remove docker docker-engine docker.io containerd runc

Konfigurasi firewall dan jaringan Anda dapat memengaruhi jaringan kontainer. Docker membuat antarmuka jaringan dan aturan iptables sendiri. Jika Anda menggunakan UFW atau aturan firewall kustom, Anda mungkin perlu menyesuaikannya setelah instalasi agar lalu lintas kontainer diizinkan.

Periksa prasyarat ini sekarang — ini akan menghemat waktu pemecahan masalah nanti.

Metode Instalasi

Ada empat cara memasang Docker di Debian, masing-masing dengan kompromi berbeda. Saya akan membantu Anda memilih metode yang sesuai dengan lingkungan dan kebutuhan keamanan Anda.

Mencari instruksi instalasi untuk Ubuntu? Kami memiliki panduan langkah demi langkah lengkap untuk menginstal Docker di Ubuntu.

Metode 1: Repositori resmi Docker (direkomendasikan)

Metode ini memberi Anda versi Docker terbaru dengan pembaruan keamanan rutin.

Repositori resmi Docker selalu menyediakan rilis stabil terbaru, ditambah Anda mendapat pembaruan otomatis melalui manajer paket. Anda tidak akan terjebak pada versi usang yang melewatkan tambalan keamanan penting atau fitur baru.

Mulai dengan memperbarui sistem dan memasang paket yang dibutuhkan Docker:

sudo apt update
sudo apt install apt-transport-https ca-certificates curl gnupg lsb-release

Lalu, tambahkan kunci GPG resmi Docker untuk memverifikasi keaslian paket:

curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

Konfigurasikan repositori dengan menambahkannya ke daftar sumber Anda:

echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Terakhir, pasang Docker Engine, CLI, dan Compose:

sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin

Ini memberi Anda semua yang dibutuhkan untuk penerapan Docker produksi.

Metode 2: Repositori bawaan Debian

Pendekatan ini memasang Docker dengan satu perintah, tetapi Anda akan mendapatkan versi yang lebih lama.

Repositori bawaan Debian memudahkan instalasi — cukup jalankan sudo apt install docker.io. Namun ada catatan: Anda sering kali mendapatkan versi Docker yang tertinggal berbulan-bulan atau bertahun-tahun dari rilis saat ini.

sudo apt update
sudo apt install docker.io

Metode ini baik-baik saja untuk pengujian dasar atau saat Anda membutuhkan versi lama tertentu demi kompatibilitas. Namun Anda akan melewatkan pembaruan keamanan, peningkatan kinerja, dan fitur baru yang hadir pada rilis Docker terbaru.

Gunakan metode ini hanya jika repositori resmi bukan opsi.

Metode 3: Instalasi paket DEB manual

Saya akan menunjukkan cara mengunduh dan memasang paket secara langsung saat Anda tidak dapat mengakses repositori.

Metode ini cocok untuk sistem terisolasi (air-gapped), jaringan perusahaan dengan akses internet terbatas, atau saat Anda perlu memasang versi Docker yang sama di banyak mesin tanpa mengunduh berulang kali.

Unduh paket DEB dari situs Docker:

  1. Buka https://download.docker.com/linux/debian/dists/

  2. Pilih versi Debian Anda (bullseye, bookworm, dll.)

  3. Arahkan ke pool/stable/amd64/

  4. Unduh paket ini: docker-ce_*.deb, docker-ce-cli_*.deb, dan containerd.io_*.deb

Pasang paketnya berurutan:

sudo dpkg -i containerd.io_*.deb
sudo dpkg -i docker-ce-cli_*.deb
sudo dpkg -i docker-ce_*.deb

Jika Anda mendapat galat dependensi, jalankan sudo apt-get install -f untuk memperbaikinya.

Metode ini membutuhkan lebih banyak pekerjaan manual untuk pembaruan, tetapi memberi Anda kendali penuh atas versi yang dipasang.

Metode 4: Skrip praktis (convenience scripts)

Metode terakhir ini menawarkan instalasi cepat untuk lingkungan uji, tetapi Anda harus mengaudit skripnya terlebih dahulu.

Docker menyediakan skrip instalasi yang mendeteksi sistem Anda dan memasang Docker secara otomatis. Ini praktis untuk menyiapkan lingkungan uji dengan cepat atau saat Anda memasang Docker di banyak sistem.

curl -fsSL https://get.docker.com -o get-docker.sh

Selalu tinjau skrip sebelum menjalankannya:

cat get-docker.sh

Cari hal-hal yang mencurigakan atau tidak terduga. Skrip akan memodifikasi konfigurasi sistem Anda, jadi Anda perlu tahu apa yang dilakukannya.

Jalankan skrip setelah Anda meninjaunya:

sudo sh get-docker.sh

Jangan gunakan skrip praktis di produksi. Skrip ini dibuat untuk penyiapan cepat, bukan penerapan yang aman dan dapat direproduksi. Tetap gunakan metode repositori resmi untuk sistem yang penting.

Saya menyarankan memilih metode repositori resmi kecuali Anda memiliki kendala khusus yang mengharuskan pendekatan berbeda.

Memverifikasi Instalasi Anda

Instalasi hanyalah langkah pertama — Anda perlu memastikan Docker benar-benar berfungsi sebelum menerapkan apa pun. Uji cepat ini akan memberi tahu apakah penyiapan Docker Anda siap untuk beban kerja nyata.

Periksa versi Docker untuk mengonfirmasi instalasi selesai:

docker --version

Anda akan melihat keluaran seperti Docker version xx.x.x, build x. Jika Anda mendapat galat "command not found", berarti Docker tidak terpasang dengan benar atau tidak ada di PATH Anda.

Dapatkan informasi build terperinci untuk melihat komponen apa yang berjalan:

docker version

Ini menampilkan versi klien dan server secara terpisah, plus detail arsitektur. Bagian server mengonfirmasi daemon Docker berjalan dan dapat diakses.

Jalankan kontainer uji untuk memvalidasi semuanya berfungsi end-to-end:

docker run hello-world

Docker akan mengunduh image hello-world dan menjalankannya. Anda akan melihat pesan yang menjelaskan cara kerja kontainer Docker jika semuanya berjalan benar. Uji ini mengonfirmasi Docker bisa menarik image, membuat kontainer, dan mengeksekusi perintah.

Anda dapat memverifikasi Docker Compose terpasang dan berfungsi:

docker compose version

Anda akan melihat keluaran seperti Docker Compose version vX.xx.x. Perlu dicatat instalasi Docker yang lebih baru menggunakan docker compose (dengan spasi) alih-alih perintah lama docker-compose.

Jika semua perintah ini berjalan tanpa galat, instalasi Docker Anda siap digunakan di produksi.

Siap menjalankan kontainer pertama yang sesungguhnya? Pelajari cara menjalankan image Docker langkah demi langkah.

Konfigurasi Pasca-Instalasi

Docker langsung bisa digunakan, tetapi Anda sebaiknya mengonfigurasi beberapa hal untuk pemakaian harian. Di bagian ini, saya bahas manajemen layanan dan izin pengguna agar Docker lebih nyaman dan aman.

Manajemen layanan

Anda dapat mengontrol kapan Docker berjalan dengan perintah systemd berikut:

sudo systemctl start docker    # Mulai Docker
sudo systemctl stop docker     # Hentikan Docker
sudo systemctl restart docker  # Mulai ulang layanan Docker

Untuk mengaktifkan Docker agar otomatis berjalan saat sistem boot, jalankan perintah berikut:

sudo systemctl enable docker

Ini memastikan Docker berjalan setiap kali Anda me-restart server, yang diinginkan untuk sistem produksi.

Jika Anda perlu memeriksa apakah Docker berjalan dan melihat status saat ini, jalankan perintah ini:

sudo systemctl status docker

Anda akan melihat apakah layanan aktif, sudah berjalan berapa lama, dan pesan log terbaru. Jika Docker tidak berfungsi, perintah ini biasanya menunjukkan alasannya.

Untuk memecahkan masalah layanan, periksa log:

sudo journalctl -u docker.service

Ini menampilkan log daemon Docker terperinci yang membantu mendiagnosis masalah startup, galat izin, atau isu konfigurasi.

Akses pengguna non-root

Jika Anda perlu menambahkan pengguna Anda ke grup docker untuk menjalankan perintah Docker tanpa sudo:

sudo usermod -aG docker $USER

Ini menambahkan pengguna saat ini ke grup docker, yang memberi izin untuk berkomunikasi dengan daemon Docker.

Anda kemudian perlu log keluar dan masuk kembali agar perubahan grup berlaku:

logout

Atau, mulai ulang sesi terminal Anda. Anda juga dapat menjalankan newgrp docker untuk mengaktifkan grup di sesi saat ini tanpa keluar.

Terakhir, untuk menguji akses non-root, jalankan perintah Docker ini:

docker run hello-world

Jika ini berfungsi tanpa sudo, Anda siap.

Namun ada kompromi keamanan: Pengguna dalam grup docker memiliki akses setara root ke sistem Anda. Mereka dapat me-mount direktori host, mengakses file sensitif, dan berpotensi keluar dari kontainer untuk mengkompromikan host.

Hanya tambahkan pengguna tepercaya ke grup docker, dan jangan pernah melakukan ini di sistem bersama yang tidak Anda kendalikan semua penggunanya.

Konfigurasikan pengaturan ini sekali dan Docker menjadi jauh lebih mudah digunakan setiap hari.

Konfigurasi Storage Driver

Storage driver Docker mengelola cara penyimpanan image dan data kontainer di sistem Anda. Sebagian besar pengguna tidak perlu mengubahnya, tetapi memahami opsi Anda membantu mengoptimalkan kinerja untuk beban kerja tertentu.

Docker secara otomatis memilih storage driver terbaik untuk sistem Anda saat instalasi. Di Debian, biasanya overlay2, yang menawarkan kinerja dan stabilitas sangat baik untuk sebagian besar kasus.

Periksa storage driver Anda saat ini dengan perintah ini:

docker info | grep "Storage Driver"

Driver overlay2 bekerja baik karena:

  • Menangani operasi copy-on-write dengan cepat saat kontainer memodifikasi file
  • Berbagi layer antar image untuk menghemat ruang disk
  • Mendukung semua fitur Docker tanpa masalah kompatibilitas
  • Bekerja andal di berbagai tipe filesystem

Anda mungkin memerlukan storage driver berbeda jika menjalankan beban kerja khusus atau memiliki kebutuhan filesystem spesifik. 

Misalnya, beberapa sistem penyimpanan enterprise bekerja lebih baik dengan driver devicemapper, atau Anda mungkin perlu vfs untuk membedah masalah filesystem kontainer.

Anda dapat mengganti storage driver dengan mengedit konfigurasi daemon Docker:

sudo nano /etc/docker/daemon.json

Di sini, tambahkan atau ubah pengaturan storage-driver:

{
  "storage-driver": "devicemapper"
}

Terakhir, ingat untuk me-restart Docker agar perubahan diterapkan:

sudo systemctl restart docker

Perlu diingat, mengganti storage driver membuat kontainer dan image yang ada menjadi tidak dapat diakses. Cadangkan data penting terlebih dahulu, atau ekspor kontainer yang ingin Anda simpan.

Sekarang Anda bisa menguji driver baru dengan menarik image dan menjalankan kontainer:

docker pull hello-world
docker run hello-world

Singkatnya, tetap gunakan overlay2 kecuali Anda memiliki kebutuhan khusus yang menuntut driver berbeda.

Penguatan Keamanan

Instalasi Docker bawaan cocok untuk pengembangan, tetapi lingkungan produksi membutuhkan lapisan keamanan tambahan. Konfigurasi ini melindungi sistem host Anda dari pelarian kontainer dan serangan kelelahan sumber daya.

Integrasi SELinux/AppArmor

Mandatory access control menambah lapisan keamanan yang membatasi apa yang bisa dilakukan kontainer, bahkan jika dikompromikan. Tanpa kontrol ini, kontainer yang berjalan sebagai root berpotensi mengakses sumber daya host yang tidak semestinya.

Anda dapat mengaktifkan AppArmor untuk Docker, yang merupakan kerangka kerja keamanan default Debian, dengan menjalankan perintah ini:

sudo apt install apparmor-utils
sudo systemctl enable apparmor
sudo systemctl start apparmor

Setelah AppArmor berjalan, muat profil keamanan Docker:

sudo apparmor_parser -r /etc/apparmor.d/docker

Kini Anda bisa menjalankan kontainer dengan perlindungan AppArmor aktif:

docker run --security-opt apparmor=docker-default nginx

Profil docker-default membatasi kapabilitas kontainer seperti me-mount filesystem, mengakses antarmuka jaringan mentah, dan memuat modul kernel.

Untuk sistem SELinux (jika Anda menggunakannya alih-alih AppArmor), terlebih dahulu aktifkan manajemen kontainer:

sudo setsebool -P container_manage_cgroup on

Lalu jalankan kontainer dengan label SELinux:

docker run --security-opt label=type:container_t nginx

Kontrol ini memblokir banyak teknik pelarian kontainer umum dan membatasi dampak dari kontainer yang dikompromikan.

Konfigurasi daemon

Anda bisa (dan sebaiknya) menyesuaikan pengaturan daemon Docker untuk mengurangi permukaan serangan dan meningkatkan postur keamanan. Buat atau edit berkas /etc/docker/daemon.json:

{
  "live-restore": true,
  "userland-proxy": false,
  "no-new-privileges": true,
  "icc": false,
  "disable-legacy-registry": true
}

Berikut fungsi masing-masing pengaturan:

  • live-restore: true menjaga kontainer tetap berjalan jika daemon Docker crash

  • userland-proxy: false menggunakan iptables langsung alih-alih proxy userland untuk kinerja lebih baik

  • no-new-privileges: true mencegah kontainer memperoleh hak istimewa baru

  • icc: false menonaktifkan komunikasi antar-kontainer secara default disable-legacy-registry: true memblokir akses ke protokol registry lama yang tidak aman

Setelah membuat perubahan ini, mulai ulang Docker untuk menerapkannya:

sudo systemctl restart docker

Anda juga sebaiknya menjalankan kontainer sebagai pengguna non-root jika memungkinkan:

docker run --user 1000:1000 nginx

Ini membatasi apa yang dapat dilakukan kontainer yang dikompromikan pada sistem Anda.

Batas sumber daya dengan control groups (cgroups)

Kontainer tanpa batas sumber daya dapat menghabiskan semua CPU, memori, dan I/O yang tersedia, dan pada akhirnya membuat seluruh host Anda tumbang. Control groups (cgroups) mencegah hal ini dengan menerapkan batas keras pada penggunaan sumber daya.

Mulailah dengan batas memori untuk mencegah kontainer menggunakan RAM berlebihan:

docker run --memory=512m nginx

Anda juga bisa membatasi penggunaan CPU agar satu kontainer tidak memonopoli daya proses:

docker run --cpus=1.5 nginx

Untuk sistem dengan I/O disk tinggi, kendalikan kecepatan baca/tulis:

docker run --device-read-bps /dev/sda:1mb nginx

Anda juga bisa menggabungkan beberapa batas untuk kontrol sumber daya yang lengkap:

docker run \
  --memory=1g \
  --cpus=2 \
  --pids-limit=100 \
  nginx

Untuk batas yang konsisten di semua kontainer, konfigurasikan default di daemon.json Anda:

{
  "default-ulimits": {
    "nofile": {
      "Hard": 64000,
      "Name": "nofile",
      "Soft": 64000
    }
  }
}

Batas-batas ini mencegah serangan kelelahan sumber daya dan memastikan pembagian sumber daya yang adil antar kontainer.

Konfigurasikan langkah-langkah keamanan ini sekali dan lingkungan Docker Anda akan jauh lebih sulit dikompromikan.

Perlu menguasai perintah Docker untuk pengelolaan harian? 18 perintah Docker penting ini akan membuat Anda produktif.

Pemecahan Masalah Umum

Bahkan dengan instalasi yang benar, Docker bisa tersendat dan mencegah kontainer berjalan dengan benar. Berikut masalah paling umum dan cara memperbaikinya dengan cepat.

Galat izin

Sebagian besar masalah izin Docker terjadi karena pengguna Anda tidak memiliki akses yang tepat ke berkas socket Docker. Saat Anda melihat Got permission denied while trying to connect to the Docker daemon socket, artinya Anda belum masuk ke grup docker.

Ini terjadi karena Docker berjalan sebagai root, tetapi membuat socket yang dapat diakses anggota grup docker. Tambahkan diri Anda ke grup:

sudo usermod -aG docker $USER

Anda perlu log keluar dan masuk kembali agar perubahan berlaku. Jika Anda tidak ingin keluar sekarang, Anda bisa mengaktifkan grup di sesi saat ini:

newgrp docker

Galat izin berkas di dalam kontainer berbeda namun sama umumnya. Ini terjadi saat proses kontainer tidak bisa membaca atau menulis berkas yang Anda kaitkan (mount) dari sistem host. Kontainer mungkin berjalan dengan ID pengguna berbeda dari pemilik berkas Anda.

Periksa siapa pemilik berkas Anda:

ls -la /path/to/your/files

Sebagian besar kontainer Docker berjalan sebagai ID pengguna 1000 secara default. Jika berkas Anda dimiliki oleh root atau pengguna lain, ubah kepemilikannya:

sudo chown -R 1000:1000 /path/to/your/files

Jika Anda menjalankan SELinux (bukan AppArmor), Anda mungkin melihat penolakan izin berbeda yang muncul di log audit. Ini lebih kompleks karena SELinux mengontrol apa yang dapat diakses proses berdasarkan konteks keamanan, bukan hanya ID pengguna.

Cari pelanggaran akses terbaru:

sudo ausearch -m avc -ts recent

Perbaiki konteks SELinux dengan mengaktifkan manajemen kontainer dan memulihkan label yang tepat pada volume Docker Anda:

sudo setsebool -P container_manage_cgroup on
sudo restorecon -R /path/to/your/volume

Kegagalan layanan

Saat Docker tidak mau mulai atau terus crash, Anda perlu memahami apa yang gagal sebelum bisa memperbaikinya. Status layanan systemd memberi gambaran cepat:

sudo systemctl status docker

Ini menunjukkan apakah Docker berjalan dan menampilkan pesan galat terbaru. Namun untuk pemecahan masalah mendetail, Anda perlu memantau log langsung saat Docker mencoba mulai:

sudo journalctl -u docker.service -f

Salah satu kegagalan startup umum terjadi saat Docker tidak dimatikan dengan bersih. Anda akan melihat galat seperti "failed to start daemon: pid file found, ensure docker is not running." Artinya ada berkas proses tertinggal yang membingungkan skrip startup.

Hapus berkas usang dan coba mulai lagi:

sudo rm /var/run/docker.pid
sudo systemctl start docker

Masalah penyimpanan juga sering menyebabkan kegagalan daemon. Docker menyimpan semua datanya di /var/lib/docker, dan jika direktori ini kehabisan ruang atau rusak, Docker tidak bisa mulai dengan benar.

Periksa berapa banyak ruang yang tersedia:

df -h /var/lib/docker

Jika ruang hampir habis, bersihkan kontainer dan image lama yang tidak Anda gunakan:

docker system prune -a

Konflik jaringan juga dapat mencegah Docker mulai. Ini terjadi saat jaringan bridge default Docker (biasanya 172.17.0.0/16) berbenturan dengan penyiapan jaringan Anda. Anda akan melihat galat tentang rentang alamat yang tidak tersedia.

Perbaiki dengan mengonfigurasi IP bridge kustom yang tidak bertabrakan dengan jaringan Anda. Edit /etc/docker/daemon.json:

{
  "bip": "192.168.1.1/24"
}

Setelah melakukan perubahan, mulai ulang Docker untuk menggunakan konfigurasi jaringan baru:

sudo systemctl restart docker

Masalah kernel usang

Docker bergantung pada fitur kernel Linux untuk kontainerisasi, jaringan, dan keamanan. Jika kernel Anda terlalu lama, Anda akan mengalami masalah yang tidak bisa diperbaiki tanpa peningkatan.

Periksa versi kernel yang Anda jalankan dengan perintah ini:

uname -r

Docker membutuhkan setidaknya kernel 3.10 untuk fungsi dasar, tetapi untuk produksi sebaiknya 4.0 atau lebih baru. Apa pun yang lebih lama daripada 3.10 tidak akan berfungsi dengan versi Docker modern.

Memperbarui kernel Anda di Debian mudah, cukup pasang paket kernel terbaru:

sudo apt update
sudo apt install linux-image-amd64

Kernel baru tidak akan aktif sampai Anda me-reboot sistem:

sudo reboot

Terkadang kernel sudah cukup baru, tetapi modul kernel tertentu tidak dimuat. Docker membutuhkan modul spesifik untuk fitur jaringan dan kontainerisasi. Anda akan melihat galat tentang antarmuka jaringan yang tidak tersedia atau kontainer tidak bisa mulai dengan benar.

Muat modul penting secara manual:

sudo modprobe bridge
sudo modprobe ip_tables
sudo modprobe iptable_nat

Modul-modul ini seharusnya termuat otomatis, tetapi jika tidak, jadikan permanen dengan menambahkannya ke konfigurasi sistem Anda:

echo "bridge" | sudo tee -a /etc/modules
echo "ip_tables" | sudo tee -a /etc/modules  
echo "iptable_nat" | sudo tee -a /etc/modules

Bahkan dengan kernel terbaru, Anda mungkin menemui galat runtime kontainer yang berbunyi "operation not supported." Ini biasanya berarti kernel Anda dikompilasi tanpa fitur tertentu yang diharapkan Docker. Sayangnya, tidak ada solusi untuk fitur kernel yang hilang — Anda memerlukan kernel yang dikonfigurasi dengan benar.

Sebagian besar masalah instalasi Docker bermuara pada tiga area ini: izin pengguna, konfigurasi layanan, atau kompatibilitas kernel. Perbaiki masalah mendasar alih-alih mengakali gejalanya, dan lingkungan Docker Anda akan jauh lebih stabil.

Bekerja dengan basis data di dalam kontainer? Konfigurasi PostgreSQL di Docker ternyata lebih mudah dari yang Anda kira.

Menghapus Instalasi Docker

Terkadang Anda perlu menghapus Docker sepenuhnya dari sistem, entah karena beralih ke runtime kontainer lain atau memulai ulang setelah masalah konfigurasi. 

Proses ini lebih dari sekadar menghapus paket — Anda juga sebaiknya membersihkan data dan perubahan sistem.

Mulailah dengan menghapus semua paket Docker dari sistem Anda. Perintah pastinya bergantung pada cara Anda memasang Docker sebelumnya.

Jika Anda memasang dari repositori resmi Docker:

sudo apt purge docker-ce docker-ce-cli containerd.io docker-compose-plugin

Jika Anda memasang dari repositori bawaan Debian:

sudo apt purge docker.io docker-compose

Ini menghapus paketnya tetapi menyisakan berkas konfigurasi dan dependensi yang mungkin masih dibutuhkan paket lain. Untuk menghapusnya juga:

sudo apt autoremove --purge

Lalu, hapus direktori data Docker jika Anda ingin menghapus semua image, container, dan volume. Langkah ini opsional tetapi direkomendasikan untuk pembersihan menyeluruh.

Secara bawaan Docker menyimpan semuanya di /var/lib/docker. Menghapus direktori ini akan menghapus semua container, image, jaringan, dan volume Anda secara permanen:

sudo rm -rf /var/lib/docker

Anda juga sebaiknya menghapus direktori konfigurasi Docker:

sudo rm -rf /etc/docker

Lanjutkan dengan membersihkan grup dan pengguna sistem yang dibuat Docker saat pemasangan. Docker menambahkan grup docker ke sistem Anda dan mungkin telah mengubah izin pengguna.

Hapus grup docker:

sudo groupdel docker

Jika Anda menambahkan pengguna ke grup docker, keanggotaan grup mereka akan dibersihkan secara otomatis saat Anda menghapus grupnya. Namun Anda juga bisa menghapus pengguna tertentu dari grup tersebut secara manual sebelum menghapusnya:

sudo gpasswd -d username docker

Lalu, hapus berkas layanan systemd Docker dan berkas socket-nya:

sudo rm -f /lib/systemd/system/docker.service
sudo rm -f /lib/systemd/system/docker.socket
sudo systemctl daemon-reload

Terakhir, periksa proses Docker yang tersisa yang mungkin masih berjalan:

ps aux | grep docker

Jika Anda menemukannya, hentikan secara manual:

sudo pkill -f docker

Setelah langkah-langkah ini, Docker seharusnya sudah sepenuhnya dihapus dari sistem Anda tanpa berkas atau konfigurasi tertinggal.

Mempertimbangkan alternatif Docker? Jelajahi platform kontainerisasi lain sebelum beralih.

Kesimpulan dan Praktik Terbaik

Sekarang Anda telah menjalankan Docker di Debian, namun pemasangan hanyalah permulaan. Cara Anda mengonfigurasi dan memelihara lingkungan Docker menentukan apakah Anda akan mendapatkan pengalaman produksi yang lancar atau begadang mengatasi masalah container.

Membangun container multi-platform untuk arsitektur yang berbeda? Docker Buildx memudahkan pembuatan lintas platform.

Pilih metode pemasangan berdasarkan batasan Anda. Repositori resmi Docker paling cocok untuk sebagian besar lingkungan produksi karena Anda mendapatkan fitur terbaru dan tambalan keamanan. Namun jaringan air-gapped atau kebutuhan konsistensi versi mungkin menuntut pemasangan DEB manual sebagai gantinya.

Amankan lingkungan Docker Anda segera. Aktifkan AppArmor atau SELinux untuk kontrol akses wajib, konfigurasikan pengaturan daemon yang restriktif, dan gunakan cgroups untuk membatasi sumber daya container. Jaga Docker tetap mutakhir dengan pembaruan keamanan otomatis, tetapi uji terlebih dahulu di staging.

Gunakan Docker Compose untuk aplikasi multi-container. Alih-alih mengelola perintah docker run yang kompleks, definisikan tumpukan aplikasi Anda dalam YAML.

Pantau penggunaan disk dan lakukan pembersihan secara berkala. Jalankan docker system prune untuk menghapus image yang tidak terpakai dan atur rotasi log agar container tidak memenuhi disk Anda.

Saat Anda membutuhkan informasi yang lebih mendetail, dokumentasi resmi membahas topik lanjutan yang panduan ini tidak sentuh. Lihat dokumentasi Docker untuk penjelasan mendalam tentang jaringan, penyimpanan driver, dan orkestrasi. Dokumentasi paket Docker Debian menjelaskan konfigurasi spesifik paket dan masalah yang diketahui.

Docker di Debian memberi Anda platform yang stabil dan andal untuk aplikasi terkontainer — tetapi hanya jika Anda mengonfigurasinya dengan cermat dan memeliharanya secara konsisten.

Ingin mempelajari lebih lanjut tentang Docker, kontainerisasi, serta penerapannya dalam data science dan machine learning? Kursus DataCamp berikut adalah langkah terbaik selanjutnya:

Dario Radečić

Penulis

Dario Radečić

Senior Data Scientist yang berbasis di Kroasia. Penulis Tekno Teratas dengan lebih dari 700 artikel yang telah diterbitkan, menghasilkan lebih dari 10 juta tayangan. Penulis buku Machine Learning Automation with TPOT.

FAQ

Apa cara terbaik memasang Docker di Debian untuk penggunaan produksi?

Metode repositori resmi Docker adalah pilihan terbaik untuk lingkungan produksi karena menyediakan rilis stabil terbaru dengan pembaruan keamanan rutin. Metode ini memastikan Anda mendapatkan semua fitur terbaru dan patch kritis yang mungkin tidak tersedia di repositori bawaan Debian. Anda juga akan mendapatkan keuntungan dari pembaruan otomatis melalui manajer paket, yang menjaga pemasangan Docker Anda tetap aman tanpa intervensi manual.

Apakah saya perlu memperhatikan keamanan saat menjalankan Docker di Debian?

Ya, keamanan Docker memerlukan konfigurasi yang cermat melampaui pemasangan dasar. Container berbagi kernel host, sehingga container yang dikompromikan berpotensi mengakses sumber daya host jika tidak diisolasi dengan benar. Anda harus mengaktifkan AppArmor atau SELinux untuk kontrol akses wajib, mengonfigurasi batas sumber daya dengan cgroups, dan menjalankan container sebagai non-root jika memungkinkan. Selain itu, jaga Docker tetap mutakhir dan hindari menambahkan pengguna ke grup docker kecuali benar-benar perlu, karena ini memberikan akses setara root ke sistem.

Bisakah saya menjalankan Docker pada versi Debian yang lebih lama?

Docker memerlukan Debian 10 (Buster) atau yang lebih baru untuk bekerja dengan versi Docker Engine saat ini. Rilis lama seperti Debian 9 tidak memiliki fitur kernel dan dependensi paket yang dibutuhkan Docker modern. Jika Anda terjebak pada versi Debian yang lebih lama, Anda harus meningkatkan sistem terlebih dahulu, karena tidak ada solusi andal untuk fungsionalitas kernel yang hilang yang menjadi sandaran Docker untuk kontainerisasi dan jaringan.

Mengapa Docker gagal mulai setelah pemasangan, dan bagaimana cara memperbaiki masalah daemon?

Kegagalan daemon Docker biasanya berasal dari tiga penyebab utama: masalah penyimpanan, konflik jaringan, atau berkas proses yang tersisa dari pemasangan sebelumnya. Periksa apakah /var/lib/docker memiliki ruang disk yang cukup menggunakan df -h /var/lib/docker, dan bersihkan dengan docker system prune -a jika perlu. Untuk konflik jaringan, IP bridge default Docker (172.17.0.0/16) mungkin bertabrakan dengan pengaturan jaringan yang ada, sehingga Anda perlu mengonfigurasi IP bridge khusus di /etc/docker/daemon.json. Jika Anda melihat kesalahan "pid file found", hapus berkas yang basi dengan sudo rm /var/run/docker.pid dan mulai ulang layanan.

Bagaimana cara menghapus Docker dan seluruh datanya dari sistem Debian saya dengan benar?

Penghapusan Docker secara lengkap memerlukan lebih dari sekadar mencopot paket — Anda perlu membersihkan direktori data, grup sistem, dan berkas layanan. Mulailah dengan menghapus paket Docker menggunakan sudo apt purge docker-ce docker-ce-cli containerd.io docker-compose-plugin, lalu hapus direktori data dengan sudo rm -rf /var/lib/docker (ini akan menghapus semua container dan image secara permanen). Hapus grup docker dengan sudo groupdel docker, hapus berkas layanan systemd, dan periksa proses Docker yang tersisa dengan ps aux | grep docker. Ini memastikan kondisi bersih jika Anda perlu memasang ulang atau beralih ke runtime container lain.

Topik

Terkait

blogs

40 Pertanyaan Wawancara DBMS Teratas di 2026

blogs

Tutorial Korelasi di R

blogs

Spaghetti Plot dan Jalur Badai