Bagaimana untuk menyelesaikan ralat apabila bekas menggunakan docker hos

PHPz
Lepaskan: 2023-04-17 17:01:26
asal
848 orang telah melayarinya

Dalam beberapa tahun kebelakangan ini, Docker telah menjadi semakin popular sebagai penyelesaian kontena yang cekap. Walau bagaimanapun, terdapat juga beberapa masalah yang dihadapi semasa menggunakan Docker untuk penggunaan kontena Contohnya, apabila mengakses mesin hos dari dalam bekas, bekas akan melaporkan ralat menggunakan Docker hos. Artikel ini menerangkan punca masalah ini dan cara membetulkannya.

Penerangan Masalah

Apabila menggunakan Docker untuk menggunakan aplikasi, kadangkala anda perlu mengakses sistem fail hos atau daemon Docker hos dari dalam bekas. Biasanya, ini dicapai dengan menambahkan parameter -v /:/host dan -v /var/run/docker.sock:/var/run/docker.sock apabila memulakan bekas. Walau bagaimanapun, dalam beberapa kes, apabila kontena cuba mengakses daemon Docker hos, mesej ralat yang serupa dengan yang berikut akan muncul:

FATA[0000] Post http:///var/run/docker.sock/v1.18/containers/create: dial unix /var/run/docker.sock: no such file or directory. Are you trying to connect to a TLS-enabled daemon without TLS?
Salin selepas log masuk

Ini kerana proses dalam kontena akan mula-mula cuba mencari dalam direktori /var/run/docker.sock di dalam bekas, tetapi direktori ini tidak wujud di dalam bekas, jadi ralat ini akan berlaku.

Penyelesaian

Kaedah 1: Gunakan parameter --privileged

Apabila memulakan bekas, gunakan parameter --privileged untuk memberikan bekas semua kebenaran hos, termasuk akses daemon Docker. Walau bagaimanapun, menggunakan kaedah ini akan membolehkan bekas mendapatkan kebenaran yang lebih tinggi dan menimbulkan risiko keselamatan yang lebih besar, jadi disyorkan untuk menggunakannya dengan berhati-hati.

docker run --privileged -v /:/host -v /var/run/docker.sock:/var/run/docker.sock <image>
Salin selepas log masuk

Kaedah 2: Gunakan pembolehubah persekitaran

Apabila memulakan bekas, anda boleh menggunakan pembolehubah persekitaran untuk menentukan alamat daemon Docker, dengan itu menghalang bekas daripada mencari daemon Docker proses pada /var/run/docker.sock .

docker run -v /:/host -e DOCKER_HOST=unix:///host/var/run/docker.sock <image>
Salin selepas log masuk

Kaedah 3: Tukar kepada sambungan TCP

Menggunakan sambungan TCP dan bukannya Unix Socket juga boleh menyelesaikan masalah ini. Anda perlu menambah parameter -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock apabila memulakan daemon Docker, dan kemudian gunakan pembolehubah persekitaran DOCKER_HOST dalam bekas untuk menentukan penggunaan TCP untuk menyambung kepada daemon Docker.

docker daemon -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
docker run -e DOCKER_HOST=172.xx.xx.xx:2375 <image>
Salin selepas log masuk

Kesimpulan

Ralat yang dilaporkan apabila bekas menggunakan hos Docker disebabkan oleh masalah laluan apabila proses dalam bekas sedang mencari proses daemon Docker. Artikel ini memperkenalkan tiga penyelesaian: menggunakan parameter --privileged, menggunakan pembolehubah persekitaran dan menukar kaedah sambungan daemon Docker. Masalah ini boleh diselesaikan dengan mudah dengan memilih kaedah yang sesuai mengikut situasi sebenar.

Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan ralat apabila bekas menggunakan docker hos. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan