Menjalankan aplikasi dengan Docker sebagai rutinitas harian dapat menjadi mimpi buruk ketika Anda mengalami kesalahan seperti izin Docker ditolak saat mencoba terhubung. Tapi jangan khawatir, artikel ini akan membantu Anda kembali berlari dalam waktu singkat.
Dalam tutorial ini, Anda akan mempelajari banyak cara untuk mengatasi pesan kesalahan izin Docker yang ditolak.
Prasyarat
Tutorial ini terdiri dari demonstrasi langsung. Untuk mengikuti, pastikan Anda memiliki yang berikut ini:
- Demo dalam tutorial ini berjalan di Ubuntu 20.04, tetapi distribusi Linux lainnya juga akan berfungsi.
- Mesin Docker, dengan tutorial yang menjalankan versi 20.10.8, build 3967b7d.
Menjalankan Perintah Docker yang Ditinggikan
Banyak faktor yang dapat menyebabkan izin ditolak kesalahan saat menghubungkan ke Docker. Salah satu faktor tersebut adalah Anda mungkin menjalankan perintah Docker tanpa menambahkan sudo
memerintah. sudo
perintah adalah apa yang memberi Anda hak administratif yang lebih tinggi bersama dengan hak keamanan saat menjalankan perintah.
Di bawah, Anda dapat melihat izin ditolak yang ditakuti kesalahan saat mencoba menjalankan docker
perintah.
Luncurkan terminal Anda dan tambahkan sudo
ke docker
perintah di bawah ini untuk run
hello-world
gambar buruh pelabuhan. Karena Anda menjalankan perintah yang ditinggikan, Anda harus memasukkan sandi untuk melanjutkan.
sudo docker run hello-world
Anda akan melihat output yang mirip dengan yang ditunjukkan di bawah ini yang menunjukkan bahwa Docker diinstal dengan benar.
Memulai Ulang Mesin Docker
Jika menjalankan perintah Docker yang ditinggikan tidak memperbaiki izin ditolak kesalahan, verifikasi bahwa Mesin Docker Anda sedang berjalan. Mirip dengan menjalankan docker
perintah tanpa sudo
perintah, Mesin Docker yang berhenti memicu izin ditolak kesalahan. Bagaimana Anda memperbaiki kesalahan? Dengan memulai ulang mesin Docker Anda.
Jalankan systemctl
perintah di bawah ini untuk mengonfirmasi status Docker Engine (status docker
) dan jika sedang berjalan.
sudo systemctl status docker
Di bawah ini, Anda dapat mengetahui bahwa Mesin Docker sedang berjalan dari status yang ditampilkan yang menunjukkanaktif (berjalan).
Jika Mesin Docker tidak aktif, jalankan systemctl
perintah di bawah ini untuk memulai Mesin Docker (start docker
).
sudo systemctl start docker
Sekarang, jalankan perintah Docker hello-world seperti yang Anda lakukan di bagian “Menjalankan Perintah Docker yang Ditinggikan” untuk memverifikasi bahwa kesalahan telah teratasi.
sudo docker run hello-world
Menambahkan Akun Pengguna ke Grup dengan Akses Pengguna Non-Root
Anda telah mengonfirmasi bahwa mesin Docker Anda berfungsi, tetapi Anda masih mendapatkan izin ditolak Docker kesalahan? Jika demikian, Anda perlu menambahkan akun pengguna Anda ke grup dengan akses pengguna non-root. Mengapa? Karena setiap perintah Docker yang Anda jalankan di mesin Linux yang tidak ada dalam grup pengguna memicu izin ditolak kesalahan.
- Jalankan
groupadd
perintah di bawah ini untuk membuat grup baru bernamadocker
. Masukkan kata sandi Anda untuk melanjutkan menjalankan perintah.
sudo groupadd docker
Jika grup buruh pelabuhan ada di grup pengguna, Anda akan melihat output seperti di bawah ini.
2. Selanjutnya, jalankan usermod
perintah di bawah ini di mana -aG
opsi memberitahu perintah untuk menambahkan akun pengguna Anda (programmer
) ke (docker
) kelompok. Perintah ini menyebabkan akun pengguna Anda memiliki akses non-pengguna.
sudo usermod -aG docker programmer
3. Jalankan newgrp
perintah di bawah ini untuk mengubah ID grup nyata saat ini menjadi docker
kelompok.
Jalankan perintah ini setiap kali Anda ingin menjalankan Docker sebagai pengguna non-root.
sudo newgrp docker
4. Terakhir, jalankan kembali gambar Docker hello-world untuk mengonfirmasi bahwa Anda tidak lagi melihat kesalahan tersebut. Jika, pada titik ini, Anda masih mendapatkan kesalahan, pertimbangkan untuk memberikan lebih banyak akses ke file docker.sock. docker.sock file adalah soket UNIX, cara untuk mengomunikasikan informasi proses antara pengguna dan sistem, yang didengarkan oleh daemon Docker sebagai titik masuk Docker API.
Jalankan chmod
perintah di bawah ini untuk mengizinkan semua pengguna membaca/menulis (666
) akses ke /var/run/docker.sock
mengajukan. Sekarang jalankan kembali gambar Docker hello-world untuk melihat apakah kesalahan telah teratasi.
sudo chmod 666 /var/run/docker.sock
Mengedit File Unit Layanan Docker
Jika menjalankan Docker sebagai pengguna non-root tidak cukup untuk memperbaiki kesalahan, coba edit Docker SystemD, sistem kontrol layanan, file unit layanan. File layanan Docker berisi parameter sensitif yang dapat mengubah perilaku daemon Docker. Anda dapat mengubah perilaku default file unit Docker dengan menambahkan perintah tambahan untuk mengubah perilaku default layanan.
1. Jalankan perintah di bawah ini untuk membuka file unit layanan Docker di editor teks favorit Anda. Untuk contoh ini, file layanan Docker terbuka di editor teks nano.
sudo nano /usr/lib/systemd/system/docker.service
2. Temukan area dengan [Layanan] header di dalam file unit layanan Docker, seperti yang ditunjukkan di bawah ini. Salin/tempel perintah di bawah ini ke file unit layanan Docker dan simpan perubahannya.
Di bawah, SupplementaryGroups
perintah mengatur grup Unix tambahan ke tempat proses dieksekusi. Pada saat yang sama, ExecStartPost
perintah membersihkan operasi yang dijalankan bahkan jika layanan gagal untuk memulai dengan benar.
SupplementaryGroups=docker
ExecStartPost=/bin/chmod 666 /var/run/docker.sock
3. Sekarang, jalankan perintah di bawah ini untuk memulai ulang dan mengaktifkan layanan Docker. Melakukannya memungkinkan Anda memulai layanan Docker lagi untuk menghindari kesalahan saat Anda menjalankan perintah Docker.
# Reloads all the Docker unit files and recreates the entire dependency tree.
sudo systemctl daemon-reload
# Restarts the Docker service
sudo systemctl start docker
# Enable the Docker to run on your computer.
sudo systemctl enable docker
4. Terakhir, jalankan kembali hello-world
Gambar Docker dan lihat apakah Anda masih mendapatkan kesalahan izin ditolak.
Menjalankan Docker dalam Mode Hak Istimewa
Last but not least, pada daftar memperbaiki izin Docker ditolak kesalahan menjalankan Docker dalam mode istimewa. Melakukannya akan memberikan akses root container Docker ke sistem.
Menjalankan Docker dalam mode istimewa berisiko dan rentan terhadap serangan peretas. Jadi berhati-hatilah dan jalankan Docker hanya dalam mode istimewa jika Anda tahu persis apa yang Anda lakukan.
1. Jalankan perintah di bawah ini untuk membuat daftar semua container Docker di sistem Anda, dan dapatkan ID container yang ingin Anda jalankan.
sudo docker ls -a
2. Selanjutnya, jalankan docker inspect
perintah di bawah ini untuk memeriksa apakah wadah yang ingin Anda jalankan sudah dalam mode istimewa (--format='{{.HostConfig.Privileged}}'
). Ganti CONTAINER_ID
di bawah ini dengan ID penampung sebenarnya yang Anda catat di langkah pertama.
docker inspect --format='{{.HostConfig.Privileged}}' CONTAINER_ID
Jika penampung berada dalam mode istimewa, perintah akan mengembalikan true nilai ke konsol. Tetapi jika perintah mengembalikan nilai salah, seperti yang ditunjukkan di bawah ini, lanjutkan ke langkah berikutnya.
3. Terakhir, jalankan docker
perintah di bawah ini untuk run
wadah Docker dalam mode istimewa (--privileged hello-world
).
sudo docker run --privileged hello-world
Kesimpulan
Sepanjang tutorial ini, Anda telah mempelajari banyak cara untuk memecahkan Docker izin ditolak kesalahan, dari menjalankan perintah yang ditinggikan hingga menjalankan Docker dalam mode istimewa.
Sekarang Anda tahu cara menghilangkan kesalahan saat membuat aplikasi yang didukung Docker; mungkin Anda juga ingin menjaga gambar Docker Anda tetap bersih setiap saat?