GNU/Linux >> Belajar Linux >  >> Panels >> Docker

Pemecahan Masalah Izin Docker Ditolak Masalah

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.

  1. Jalankan groupadd perintah di bawah ini untuk membuat grup baru bernama docker . 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?


Docker
  1. Masalah Docker Di Ubuntu 20.04?

  2. Cara Menjalankan Perintah di Running Docker Container

  3. Contoh yang Berguna dari Perintah Docker ps

  1. banyak (Izin ditolak) di catalina.out

  2. Mengapa docker container meminta Izin ditolak?

  3. izin docker.sock ditolak

  1. Memecahkan masalah perangkat keras di Linux

  2. Cara Menggunakan Perintah Inspeksi Docker

  3. Cara Memperbaiki Docker Permission Denied Error di Ubuntu