Pernah merasa kerepotan harus mengetik sudo sebelum setiap perintah Docker? Artikel ini untuk Anda.
Secara bawaan, Docker membatasi akses ke daemon-nya, hanya mengizinkan root dan anggota grup docker untuk menjalankan perintah. Ini membuat sistem Anda lebih aman, tetapi bisa mengganggu saat Anda bekerja dengan container sepanjang hari. Grup docker dibuat tepat untuk alasan ini - untukmemungkinkan Anda menggunakan Docker tanpa kata sandi sudo yang memperlambat.
Saat Anda menambahkan diri ke grup docker, Anda akan langsung merasakan bedanya. Anda bisa menjalankan docker build, docker run, dan perintah lainnya tanpa error izin atau permintaan kata sandi.
Di artikel ini, Anda akan mempelajari cara menambahkan pengguna ke grup docker di berbagai sistem, risiko keamanan yang perlu diwaspadai, dan cara melindungi sistem sambil membuat Docker lebih mudah digunakan.
Saat mulai bekerja dengan Docker, Anda akan segera menemui masalah perizinan jika belum menyiapkan semuanya dengan benar.
Mari kita uraikan apa sebenarnya grup docker itu dan mengapa penting untuk alur kerja Anda.
Definisi dan fungsionalitas
Grup docker adalah grup pengguna sistem yang memberikan izin kepada anggotanya untuk menggunakan Docker daemon tanpa perlu hak sudo.
Saat Anda menginstal Docker di sistem Linux, grup ini biasanya dibuat secara otomatis. Berkas socket Docker (/var/run/docker.sock) dimiliki oleh root tetapi memiliki izin grup yang diatur ke grup docker, itulah cara kontrol akses ini bekerja.
Pengguna dalam grup ini dapat membangun image, menjalankan container, mengelola jaringan, dan melakukan operasi Docker lainnya tanpa menambahkan sudo di depan perintah. Ini berarti lebih sedikit ketikan dan tanpa permintaan kata sandi saat Anda bekerja dengan container. Jika Anda mencoba menjalankan perintah Docker tanpa berada di grup ini, Anda akan mendapat error "permission denied", yang pada akhirnya memperlambat progres Anda.
Implikasi keamanan dari keanggotaan grup
Menambahkan pengguna ke grup docker memiliki risiko keamanan nyata yang tidak boleh diabaikan.
Anggota grup docker dapat memperoleh hak istimewa root di sistem host. Ini terjadi karena Docker memungkinkan Anda me-mount direktori host ke dalam container, termasuk direktori sistem yang sensitif. Pengguna dengan akses Docker dapat membuat container yang me-mount seluruh filesystem root dan memodifikasi file apa pun di host.
Kerentanan breakout container juga menjadi risiko lain, karena dapat memungkinkan penyerang keluar dari isolasi container.
Anda hanya boleh menambahkan pengguna tepercaya ke grup docker, dan bahkan demikian, anggap itu setara dengan memberi mereka akses root. Banyak profesional keamanan merekomendasikan membatasi keanggotaan grup docker hanya untuk pengguna yang benar-benar membutuhkannya untuk pekerjaan sehari-hari.
Implementasi Langkah demi Langkah
Sekarang Anda memahami apa itu grup docker dan implikasinya, mari kita langsung ke langkah penyiapannya.
Membuat grup docker
Dalam banyak kasus, Anda tidak perlu membuat grup docker secara manual karena grup ini dibuat otomatis saat instalasi Docker. Anda bisa memeriksa apakah grupnya ada dengan menjalankan:
Flag -a berarti "append" dan -G menentukan grup yang ingin Anda tambahkan untuk pengguna tersebut. Variabel $USER secara otomatis menggunakan nama pengguna Anda saat ini.
Untuk macOS dan Windows, Anda dapat menambahkan pengguna ke grup melalui Pengaturan Sistem atau Control Panel - cukup aktifkan sakelar untuk menambahkan semua pengguna yang Anda inginkan:
Gambar 3 - Menambahkan pengguna ke grup
Setelah menambahkan diri Anda ke grup, Anda harus logout lalu login kembali agar perubahan berlaku. Sesi saat ini tidak akan mengenali keanggotaan grup baru sampai Anda benar-benar logout. Untuk beberapa sistem, Anda mungkin perlu melakukan restart:
Anda akan melihat "docker" tercantum di antara keanggotaan grup Anda:
Gambar 4 - Melihat grup pengguna
Pemecahan masalah umum
Jika Anda masih mendapatkan error "permission denied" setelah menambahkan diri ke grup, Anda mungkin perlu memperbaiki izin socket Docker:
sudochown root:docker /var/run/docker.sock
sudochmod660 /var/run/docker.sockDidukung oleh
Masalah umum lainnya terjadi ketika layanan Docker melakukan restart, yang dapat mengatur ulang izin socket. Jika Docker dijalankan setelah Anda membuat perubahan grup, coba restart layanan Docker:
Untuk masalah izin yang persisten, periksa bahwa konfigurasi layanan Docker Anda benar. Di beberapa sistem, Docker mungkin dikonfigurasi untuk menggunakan nama grup atau lokasi socket yang berbeda. Anda dapat memeriksa berkas konfigurasi daemon Docker di /etc/docker/daemon.json atau berkas layanan di /lib/systemd/system/docker.service.
Ingat bahwa perubahan izin apa pun yang Anda buat hanya akan berlaku untuk sesi login Anda saat ini setelah Anda logout dan login kembali. Ini adalah penyebab utama masalah "sudah diubah, tapi masih tidak berfungsi".
Pertimbangan Keamanan dan Mitigasi
Menambahkan pengguna ke grup docker dapat menimbulkan risiko keamanan yang perlu Anda pahami. Mari kita tinjau risikonya dan apa yang dapat Anda lakukan untuk melindungi sistem.
Risiko keanggotaan grup docker
Keanggotaan grup docker pada praktiknya sama dengan memiliki akses root ke sistem Anda. Ini bukan berlebihan – memang demikianlah cara kerja Docker.
Saat Anda berada di grup docker, Anda dapat menjalankan container yang me-mount bagian sensitif dari filesystem host Anda. Misalnya, perintah sederhana ini memberi Anda akses penuh untuk memodifikasi file apa pun di host:
docker run -it--rm-v /:/hostroot alpine chroot /hostrootDidukung oleh
Anda juga dapat mengubah pengaturan Docker daemon, membuat container privileged, atau menggunakan mode jaringan host untuk melewati isolasi jaringan. Kapabilitas ini memungkinkan pengguna berbahaya (atau aplikasi yang terkompromi dengan akses Docker) untuk mengambil alih sistem host Anda sepenuhnya.
Ada beberapa potensi risiko lain yang harus Anda ketahui:
Menjalankan container yang mengakses perangkat keras secara langsung.
Binding ke port jaringan bernomor rendah.
Menjalankan container dengan profil seccomp kustom yang menonaktifkan kontrol keamanan.
Membuat container yang menggunakan namespace proses milik host.
Masing-masing bisa disalahgunakan untuk mendapatkan hak istimewa lebih tinggi atau mengganggu operasi sistem.
Praktik terbaik untuk mitigasi risiko
Untuk mengurangi risiko ini, ikuti prinsip hak istimewa paling sedikit (least privilege)—hanya berikan keanggotaan grup docker kepada pengguna yang benar-benar membutuhkannya. Jika banyak orang perlu menggunakan sistem bersama, pertimbangkan membuat akun pengguna terpisah khusus untuk operasi Docker.
Mode rootless dari Docker menawarkan alternatif yang lebih aman dibanding pendekatan grup docker. Mode rootless memungkinkan Anda menjalankan Docker daemon dan container sebagai pengguna non-root, tanpa memerlukan keanggotaan grup khusus:
# Install Docker in rootless mode
dockerd-rootless-setuptool.sh install# Start the rootless Docker daemon
systemctl --user start dockerDidukung oleh
Namespace pengguna (user namespaces) memberikan lapisan keamanan lain dengan memetakan UID container ke rentang yang berbeda di host. Ini berarti meskipun container berjalan sebagai root (UID 0), proses tersebut dipetakan ke pengguna tidak berprivilegi di host:
# Add to /etc/docker/daemon.json{"userns-remap":"default"}Didukung oleh
Pertimbangkan menggunakan alokasi UID/GID statis untuk pengguna container guna menjaga pemetaan identitas yang konsisten. Di Dockerfile Anda, buat pengguna khusus dengan ID yang telah ditentukan:
# Create a user with a static UID/GID
RUN groupadd-g10001 appgroup &&\useradd-u10000-g appgroup -s /bin/bash appuser
# Switch to that userUSER appuserDidukung oleh
Secara berkala audit siapa saja yang menjadi anggota grup docker dengan perintah seperti:
Secara kombinasi, pendekatan ini memberi Anda dan tim kenyamanan keanggotaan grup docker sekaligus meminimalkan risiko keamanan yang ditimbulkannya.
Konfigurasi Lanjutan dan Alternatif
Jika Anda mencari cara berbeda untuk mengelola akses Docker selain pendekatan keanggotaan grup standar, ada beberapa opsi. Mari kita jelajahi beberapa konfigurasi lanjutan dan alternatif yang mungkin lebih sesuai dengan kebutuhan keamanan Anda.
Penguatan keamanan Dockerfile
Anda dapat membangun keamanan langsung ke dalam Dockerfile untuk mengurangi risiko meskipun pengguna memiliki akses grup docker.
Pada contoh di bawah, saya akan menggunakan build multi-tahap untuk menjaga image Python tetap kecil dan mengurangi permukaan serangan.
Untuk mengikuti, buat berkas-berkas ini:
app.py:
from flask import Flask, jsonify
app = Flask(__name__)@app.route("/api/health")defhealth():return jsonify({"status":"healthy"})if __name__ =="__main__":
app.run(host="0.0.0.0", port=8000, debug=True)Didukung oleh
FROM python:3.13-slim AS builder
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
FROM python:3.13-slim
WORKDIR /app
COPY --from=builder /usr/local/lib/python3.13/site-packages /usr/local/lib/python3.13/site-packages
COPY ..
RUN useradd-r-u1000-gusers appuser
USER appuser
CMD ["python", "app.py"]Didukung oleh
Singkatnya, Dockerfile ini menyertakan instruksi USER dengan pengguna non-root dan menyalin konten yang relevan (paket Python) dari langkah build sebelumnya.
Anda dapat membangun dan menjalankan container seperti ini dengan perintah berikut:
# Build the imagedocker build -t my-python-app .# Run the containerdocker run --cap-drop=ALL --cap-add=NET_BIND_SERVICE my-python-appDidukung oleh
Gambar 5 - Menjalankan container dengan hak minimal
Perintah yang baru ditambahkan - --cap-drop=ALL - menghapus semua kapabilitas Linux dari container (membatasi hak), sementara perintah --cap-add=NET_BIND_SERVICE menambahkan kembali kapabilitas NET_BIND_SERVICE yang memungkinkan container melakukan bind ke port bernomor rendah.
Teknik-teknik ini membatasi apa yang dapat dilakukan container, bahkan jika seseorang dengan akses grup docker mencoba menyalahgunakannya.
sudo sebagai alternatif
Jika Anda tidak ingin menambahkan pengguna ke grup docker, menggunakan sudo adalah alternatif yang layak. Pendekatan ini memberi Anda kontrol lebih dan jejak audit atas perintah Docker.
Anda dapat membuat entri sudoers khusus yang memungkinkan pengguna tertentu menjalankan hanya perintah Docker tanpa kata sandi:
# Add to /etc/sudoers.d/docker
username ALL=(root) NOPASSWD: /usr/bin/dockerDidukung oleh
Untuk kegunaan yang lebih baik, buat alias di berkas .bashrc atau .zshrc Anda:
aliasdocker='sudo docker'alias docker-compose='sudo docker-compose'Didukung oleh
Pendekatan sudo ini menawarkan keamanan yang lebih baik karena:
Semua perintah Docker tercatat di log sistem.
Anda dapat membatasi subperintah Docker yang diizinkan.
Pengguna tidak dapat memodifikasi konfigurasi Docker daemon.
Kekurangannya adalah sedikit lebih banyak pengetikan dan potensi masalah dengan alat yang mengharapkan akses Docker langsung.
Pertimbangan Windows
Windows menangani perizinan Docker secara berbeda dari Linux. Alih-alih grup docker, Windows menggunakan grup docker-users.
Untuk menambahkan pengguna ke grup docker-users di Windows, lakukan hal berikut:
Buka Computer Management (klik kanan Start dan pilih "Computer Management").
Masuk ke System Tools > Local Users and Groups > Groups.
Klik ganda pada "docker-users".
Klik "Add" dan masukkan nama pengguna.
Klik "OK" dan tutup Computer Management.
Gambar 6 - Grup pengguna di Windows
Sebagai alternatif, Anda dapat menggunakan PowerShell dengan hak administrator:
Add-LocalGroupMember -Group"docker-users"-Member"username"Didukung oleh
Setelah menambahkan pengguna, mereka harus logout dan login kembali agar perubahan berlaku, sama seperti di Linux.
Perlu dicatat juga bahwa Windows menawarkan fitur keamanan tambahan melalui Windows Defender Application Control dan mode isolasi Hyper-V yang tidak tersedia di Linux. Untuk lingkungan berkeamanan tinggi di Windows, Anda dapat menggunakan fitur-fitur ini untuk membuat batas yang lebih kuat antara container dan host.
Kini Anda telah mendapatkan gambaran lengkap tentang cara menambahkan pengguna ke grup docker dan mengapa itu penting. Mari kita rekap apa yang telah dibahas.
Menambahkan pengguna ke grup docker membuat bekerja dengan container jauh lebih mudah dengan menghilangkan kebutuhan perintah sudo. Prosesnya sederhana: periksa apakah grup ada, tambahkan pengguna Anda dengan usermod -aG docker $USER, lalu logout dan login kembali. Jika mengalami masalah, periksa izin socket Anda dan restart Docker.
Namun jangan lupa bahwa memberikan seseorang akses grup docker hampir sama dengan menyerahkan kata sandi root. Siapa pun dalam grup ini dapat me-mount seluruh filesystem Anda, memasang perangkat lunak, atau bahkan memodifikasi file sistem melalui container. Itulah mengapa penting untuk selektif dalam memberikan akses ini.
Jadi, apa pendekatan yang tepat untuk lingkungan Anda?
Secara umum, bagi pengembang yang bekerja di mesin sendiri, keanggotaan grup docker sudah cukup. Untuk server bersama atau lingkungan produksi, pertimbangkan alternatif seperti mode rootless, user namespaces, atau menggunakan sudo dengan perintah terbatas. Dan apa pun yang Anda lakukan, selalu ikuti praktik terbaik keamanan di Dockerfile Anda dengan menggunakan pengguna non-root dan menghapus kapabilitas yang tidak perlu.
Pantau siapa saja yang memiliki akses grup docker dengan melakukan audit rutin. Orang berganti peran, keluar dari tim, atau sekadar tidak lagi membutuhkan izin tertentu seiring waktu. Pemeriksaan cepat dengan getent group docker dapat membantu Anda menemukan pengguna yang seharusnya sudah tidak ada di sana.
Jika Anda ingin mempelajari lebih lanjut tentang Docker dan containerization secara umum, kursus DataCamp berikut adalah langkah terbaik berikutnya:
Grup Docker adalah grup pengguna sistem yang memberikan izin kepada anggotanya untuk menggunakan Docker daemon tanpa hak sudo. Grup ini ada untuk memudahkan perintah Docker dengan menghilangkan permintaan kata sandi dan error perizinan. Saat Anda menginstal Docker di sistem Linux, grup ini dibuat secara otomatis dan mengontrol akses ke berkas socket Docker. Menambahkan pengguna ke grup ini memungkinkan mereka menjalankan semua perintah Docker secara langsung, yang sangat meningkatkan efisiensi alur kerja.
Apa risiko keamanan yang menyertai keanggotaan grup Docker?⌄
Keanggotaan grup Docker pada dasarnya memberikan akses setara root ke sistem Anda. Anggota dapat me-mount filesystem host ke dalam container, memodifikasi file sistem, dan berpotensi memperoleh akses administratif penuh. Mereka juga dapat mengubah konfigurasi Docker daemon dan menjalankan container privileged dengan akses langsung ke perangkat keras. Tingkat akses ini membuat Anda harus hanya menambahkan pengguna tepercaya ke grup Docker dan mengikuti langkah penguatan keamanan tambahan.
Bisakah saya menggunakan Docker tanpa menambahkan pengguna ke grup Docker?⌄
Ya, Anda dapat menggunakan Docker tanpa menambahkan pengguna ke grup Docker. Alternatif paling umum adalah menggunakan sudo sebelum setiap perintah Docker, yang memberikan keamanan dan kemampuan audit yang lebih baik. Opsi lain adalah menyiapkan mode rootless Docker, yang memungkinkan menjalankan daemon dan container sebagai pengguna non-root. Anda juga dapat membuat entri sudoers khusus yang memungkinkan pengguna tertentu menjalankan hanya perintah Docker tanpa kata sandi.
Bagaimana cara memverifikasi apakah pengguna berhasil ditambahkan ke grup Docker?⌄
Anda dapat memverifikasi penambahan ke grup Docker dengan menjalankan perintah groups $USERNAME untuk menampilkan semua grup yang diikuti pengguna. Jika "docker" muncul di daftar, pengguna tersebut adalah anggota. Sebagai alternatif, Anda dapat memeriksa dengan getent group docker untuk melihat semua anggota grup Docker. Ingat bahwa pengguna harus logout dan login kembali sebelum keanggotaan grup baru berlaku, yang sering menjadi poin pemecahan masalah.
Bagaimana perbedaan pengelolaan grup Docker di Windows dibandingkan Linux?⌄
Windows menggunakan grup "docker-users" alih-alih grup "docker" yang ada di sistem Linux. Di Windows, Anda menambahkan pengguna melalui Computer Management atau PowerShell dengan hak administrator menggunakan perintah Add-LocalGroupMember. Tidak seperti Linux, Windows menawarkan keamanan tambahan melalui Windows Defender Application Control dan mode isolasi Hyper-V. Namun, sama seperti di Linux, pengguna harus logout dan login kembali setelah ditambahkan ke grup agar perubahan berlaku.
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.
Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.
Pelajari kekuatan Docker dan Kubernetes, jalur interaktif ini akan memungkinkan Anda untuk membangun dan mengimplementasikan aplikasi di lingkungan modern.
Pernah merasa kerepotan harus mengetik sudo sebelum setiap perintah Docker? Artikel ini untuk Anda.
Secara bawaan, Docker membatasi akses ke daemon-nya, hanya mengizinkan root dan anggota grup docker untuk menjalankan perintah. Ini membuat sistem Anda lebih aman, tetapi bisa mengganggu saat Anda bekerja dengan container sepanjang hari. Grup docker dibuat tepat untuk alasan ini - untuk memungkinkan Anda menggunakan Docker tanpa kata sandi sudo yang memperlambat.
Saat Anda menambahkan diri ke grup docker, Anda akan langsung merasakan bedanya. Anda bisa menjalankan
docker build,docker run, dan perintah lainnya tanpa error izin atau permintaan kata sandi.Di artikel ini, Anda akan mempelajari cara menambahkan pengguna ke grup docker di berbagai sistem, risiko keamanan yang perlu diwaspadai, dan cara melindungi sistem sambil membuat Docker lebih mudah digunakan.
> Hype LLM sedang tinggi di 2025. Ikuti panduan langkah demi langkah ini untuk deployment aplikasi LLM menggunakan Docker.
Memahami Grup Docker
Saat mulai bekerja dengan Docker, Anda akan segera menemui masalah perizinan jika belum menyiapkan semuanya dengan benar.
Mari kita uraikan apa sebenarnya grup docker itu dan mengapa penting untuk alur kerja Anda.
Definisi dan fungsionalitas
Grup docker adalah grup pengguna sistem yang memberikan izin kepada anggotanya untuk menggunakan Docker daemon tanpa perlu hak sudo.
Saat Anda menginstal Docker di sistem Linux, grup ini biasanya dibuat secara otomatis. Berkas socket Docker (
/var/run/docker.sock) dimiliki oleh root tetapi memiliki izin grup yang diatur ke grup docker, itulah cara kontrol akses ini bekerja.Pengguna dalam grup ini dapat membangun image, menjalankan container, mengelola jaringan, dan melakukan operasi Docker lainnya tanpa menambahkan sudo di depan perintah. Ini berarti lebih sedikit ketikan dan tanpa permintaan kata sandi saat Anda bekerja dengan container. Jika Anda mencoba menjalankan perintah Docker tanpa berada di grup ini, Anda akan mendapat error "permission denied", yang pada akhirnya memperlambat progres Anda.
Implikasi keamanan dari keanggotaan grup
Menambahkan pengguna ke grup docker memiliki risiko keamanan nyata yang tidak boleh diabaikan.
Anggota grup docker dapat memperoleh hak istimewa root di sistem host. Ini terjadi karena Docker memungkinkan Anda me-mount direktori host ke dalam container, termasuk direktori sistem yang sensitif. Pengguna dengan akses Docker dapat membuat container yang me-mount seluruh filesystem root dan memodifikasi file apa pun di host.
Kerentanan breakout container juga menjadi risiko lain, karena dapat memungkinkan penyerang keluar dari isolasi container.
Anda hanya boleh menambahkan pengguna tepercaya ke grup docker, dan bahkan demikian, anggap itu setara dengan memberi mereka akses root. Banyak profesional keamanan merekomendasikan membatasi keanggotaan grup docker hanya untuk pengguna yang benar-benar membutuhkannya untuk pekerjaan sehari-hari.
Implementasi Langkah demi Langkah
Sekarang Anda memahami apa itu grup docker dan implikasinya, mari kita langsung ke langkah penyiapannya.
Membuat grup docker
Dalam banyak kasus, Anda tidak perlu membuat grup docker secara manual karena grup ini dibuat otomatis saat instalasi Docker. Anda bisa memeriksa apakah grupnya ada dengan menjalankan:
Gambar 1 - Memeriksa apakah grup docker ada
Jika karena suatu alasan grupnya tidak ada (seperti pada kasus saya), Anda bisa membuatnya dengan perintah ini (khusus Linux):
Perintah ini membuat grup docker di sistem Anda, tetapi terbatas pada sistem operasi Linux.
Untuk macOS, Anda dapat mengikuti instruksi resmi dari Apple, karena grup dibuat melalui GUI. Prosesnya serupa untuk sistem operasi Windows.
Setelah mengikuti langkah-langkahnya, Anda akan melihat grup Anda telah dibuat:
Gambar 2 - Memeriksa apakah grup docker ada (2)
Menambahkan pengguna ke grup
Untuk menambahkan pengguna saat ini ke grup docker, jalankan perintah ini pada sistem operasi Linux:
Flag
-aberarti "append" dan-Gmenentukan grup yang ingin Anda tambahkan untuk pengguna tersebut. Variabel$USERsecara otomatis menggunakan nama pengguna Anda saat ini.Untuk macOS dan Windows, Anda dapat menambahkan pengguna ke grup melalui Pengaturan Sistem atau Control Panel - cukup aktifkan sakelar untuk menambahkan semua pengguna yang Anda inginkan:
Gambar 3 - Menambahkan pengguna ke grup
Setelah menambahkan diri Anda ke grup, Anda harus logout lalu login kembali agar perubahan berlaku. Sesi saat ini tidak akan mengenali keanggotaan grup baru sampai Anda benar-benar logout. Untuk beberapa sistem, Anda mungkin perlu melakukan restart:
Untuk memverifikasi bahwa pengguna Anda kini menjadi bagian dari grup docker, jalankan:
Anda akan melihat "docker" tercantum di antara keanggotaan grup Anda:
Gambar 4 - Melihat grup pengguna
Pemecahan masalah umum
Jika Anda masih mendapatkan error "permission denied" setelah menambahkan diri ke grup, Anda mungkin perlu memperbaiki izin socket Docker:
Masalah umum lainnya terjadi ketika layanan Docker melakukan restart, yang dapat mengatur ulang izin socket. Jika Docker dijalankan setelah Anda membuat perubahan grup, coba restart layanan Docker:
Untuk masalah izin yang persisten, periksa bahwa konfigurasi layanan Docker Anda benar. Di beberapa sistem, Docker mungkin dikonfigurasi untuk menggunakan nama grup atau lokasi socket yang berbeda. Anda dapat memeriksa berkas konfigurasi daemon Docker di
/etc/docker/daemon.jsonatau berkas layanan di/lib/systemd/system/docker.service.Ingat bahwa perubahan izin apa pun yang Anda buat hanya akan berlaku untuk sesi login Anda saat ini setelah Anda logout dan login kembali. Ini adalah penyebab utama masalah "sudah diubah, tapi masih tidak berfungsi".
Pertimbangan Keamanan dan Mitigasi
Menambahkan pengguna ke grup docker dapat menimbulkan risiko keamanan yang perlu Anda pahami. Mari kita tinjau risikonya dan apa yang dapat Anda lakukan untuk melindungi sistem.
Risiko keanggotaan grup docker
Keanggotaan grup docker pada praktiknya sama dengan memiliki akses root ke sistem Anda. Ini bukan berlebihan – memang demikianlah cara kerja Docker.
Saat Anda berada di grup docker, Anda dapat menjalankan container yang me-mount bagian sensitif dari filesystem host Anda. Misalnya, perintah sederhana ini memberi Anda akses penuh untuk memodifikasi file apa pun di host:
Anda juga dapat mengubah pengaturan Docker daemon, membuat container privileged, atau menggunakan mode jaringan host untuk melewati isolasi jaringan. Kapabilitas ini memungkinkan pengguna berbahaya (atau aplikasi yang terkompromi dengan akses Docker) untuk mengambil alih sistem host Anda sepenuhnya.
Ada beberapa potensi risiko lain yang harus Anda ketahui:
Masing-masing bisa disalahgunakan untuk mendapatkan hak istimewa lebih tinggi atau mengganggu operasi sistem.
Praktik terbaik untuk mitigasi risiko
Untuk mengurangi risiko ini, ikuti prinsip hak istimewa paling sedikit (least privilege)—hanya berikan keanggotaan grup docker kepada pengguna yang benar-benar membutuhkannya. Jika banyak orang perlu menggunakan sistem bersama, pertimbangkan membuat akun pengguna terpisah khusus untuk operasi Docker.
Mode rootless dari Docker menawarkan alternatif yang lebih aman dibanding pendekatan grup docker. Mode rootless memungkinkan Anda menjalankan Docker daemon dan container sebagai pengguna non-root, tanpa memerlukan keanggotaan grup khusus:
Namespace pengguna (user namespaces) memberikan lapisan keamanan lain dengan memetakan UID container ke rentang yang berbeda di host. Ini berarti meskipun container berjalan sebagai root (UID 0), proses tersebut dipetakan ke pengguna tidak berprivilegi di host:
Pertimbangkan menggunakan alokasi UID/GID statis untuk pengguna container guna menjaga pemetaan identitas yang konsisten. Di Dockerfile Anda, buat pengguna khusus dengan ID yang telah ditentukan:
Secara berkala audit siapa saja yang menjadi anggota grup docker dengan perintah seperti:
Dan hapus pengguna yang sudah tidak memerlukan akses:
Secara kombinasi, pendekatan ini memberi Anda dan tim kenyamanan keanggotaan grup docker sekaligus meminimalkan risiko keamanan yang ditimbulkannya.
Konfigurasi Lanjutan dan Alternatif
Jika Anda mencari cara berbeda untuk mengelola akses Docker selain pendekatan keanggotaan grup standar, ada beberapa opsi. Mari kita jelajahi beberapa konfigurasi lanjutan dan alternatif yang mungkin lebih sesuai dengan kebutuhan keamanan Anda.
Penguatan keamanan Dockerfile
Anda dapat membangun keamanan langsung ke dalam Dockerfile untuk mengurangi risiko meskipun pengguna memiliki akses grup docker.
Pada contoh di bawah, saya akan menggunakan build multi-tahap untuk menjaga image Python tetap kecil dan mengurangi permukaan serangan.
Untuk mengikuti, buat berkas-berkas ini:
app.py:
requirements.txt:
Dockerfile:
Singkatnya,
Dockerfileini menyertakan instruksiUSERdengan pengguna non-root dan menyalin konten yang relevan (paket Python) dari langkah build sebelumnya.> Jika Anda baru dalam melakukan containerization aplikasi, jangan khawatir - panduan lengkap kami siap membantu.
Anda dapat membangun dan menjalankan container seperti ini dengan perintah berikut:
Gambar 5 - Menjalankan container dengan hak minimal
Perintah yang baru ditambahkan -
--cap-drop=ALL- menghapus semua kapabilitas Linux dari container (membatasi hak), sementara perintah--cap-add=NET_BIND_SERVICEmenambahkan kembali kapabilitasNET_BIND_SERVICEyang memungkinkan container melakukan bind ke port bernomor rendah.Teknik-teknik ini membatasi apa yang dapat dilakukan container, bahkan jika seseorang dengan akses grup docker mencoba menyalahgunakannya.
sudo sebagai alternatif
Jika Anda tidak ingin menambahkan pengguna ke grup docker, menggunakan sudo adalah alternatif yang layak. Pendekatan ini memberi Anda kontrol lebih dan jejak audit atas perintah Docker.
Anda dapat membuat entri sudoers khusus yang memungkinkan pengguna tertentu menjalankan hanya perintah Docker tanpa kata sandi:
Untuk kegunaan yang lebih baik, buat alias di berkas
.bashrcatau.zshrcAnda:Pendekatan sudo ini menawarkan keamanan yang lebih baik karena:
Kekurangannya adalah sedikit lebih banyak pengetikan dan potensi masalah dengan alat yang mengharapkan akses Docker langsung.
Pertimbangan Windows
Windows menangani perizinan Docker secara berbeda dari Linux. Alih-alih grup docker, Windows menggunakan grup docker-users.
Untuk menambahkan pengguna ke grup docker-users di Windows, lakukan hal berikut:
Gambar 6 - Grup pengguna di Windows
Sebagai alternatif, Anda dapat menggunakan PowerShell dengan hak administrator:
Setelah menambahkan pengguna, mereka harus logout dan login kembali agar perubahan berlaku, sama seperti di Linux.
Perlu dicatat juga bahwa Windows menawarkan fitur keamanan tambahan melalui Windows Defender Application Control dan mode isolasi Hyper-V yang tidak tersedia di Linux. Untuk lingkungan berkeamanan tinggi di Windows, Anda dapat menggunakan fitur-fitur ini untuk membuat batas yang lebih kuat antara container dan host.
> Profesional data membutuhkan Docker di 2025, dan panduan ini akan menunjukkan cara mempelajarinya.
Merangkum Grup Pengguna Docker
Kini Anda telah mendapatkan gambaran lengkap tentang cara menambahkan pengguna ke grup docker dan mengapa itu penting. Mari kita rekap apa yang telah dibahas.
Menambahkan pengguna ke grup docker membuat bekerja dengan container jauh lebih mudah dengan menghilangkan kebutuhan perintah sudo. Prosesnya sederhana: periksa apakah grup ada, tambahkan pengguna Anda dengan
usermod -aG docker $USER, lalu logout dan login kembali. Jika mengalami masalah, periksa izin socket Anda dan restart Docker.Namun jangan lupa bahwa memberikan seseorang akses grup docker hampir sama dengan menyerahkan kata sandi root. Siapa pun dalam grup ini dapat me-mount seluruh filesystem Anda, memasang perangkat lunak, atau bahkan memodifikasi file sistem melalui container. Itulah mengapa penting untuk selektif dalam memberikan akses ini.
Jadi, apa pendekatan yang tepat untuk lingkungan Anda?
Secara umum, bagi pengembang yang bekerja di mesin sendiri, keanggotaan grup docker sudah cukup. Untuk server bersama atau lingkungan produksi, pertimbangkan alternatif seperti mode rootless, user namespaces, atau menggunakan sudo dengan perintah terbatas. Dan apa pun yang Anda lakukan, selalu ikuti praktik terbaik keamanan di Dockerfile Anda dengan menggunakan pengguna non-root dan menghapus kapabilitas yang tidak perlu.
Pantau siapa saja yang memiliki akses grup docker dengan melakukan audit rutin. Orang berganti peran, keluar dari tim, atau sekadar tidak lagi membutuhkan izin tertentu seiring waktu. Pemeriksaan cepat dengan
getent group dockerdapat membantu Anda menemukan pengguna yang seharusnya sudah tidak ada di sana.Jika Anda ingin mempelajari lebih lanjut tentang Docker dan containerization secara umum, kursus DataCamp berikut adalah langkah terbaik berikutnya: