Penyelesaian kepada ralat apabila docker melaksanakan exec: 1. Gantikan baris pertama dalam skrip dengan "/bin/bash"; 2. Jalankan "docker exec -d service_name /bin/bash -c '/opt /start.sh'".
Persekitaran pengendalian artikel ini: sistem centos7, Docker versi 20.10.11, komputer Dell G3.
Penyelesaian kepada kegagalan pelaksanaan skrip eksekutif docker
Pengenalan latar belakang
Terdapat skrip dalam bekas docker yang perlu dijalankan di latar belakang apabila digunakan, tetapi memanggil skrip ini melalui docker exec tidak pernah mendapat apa yang anda mahukan Akibatnya, laluan penerokaan bermula!
Skrip asal
docker exec -it service_name /bin/bash -c '/opt/start.sh'
Fungsi start.sh adalah untuk memulakan dua perkhidmatan di latar belakang
#!/bash nohup start1.sh > start1.log 2>&1 & sleep 5 nohup start2.sh 2>&1 & echo 'server started'
Masalah lokasi
1. Penulisan skrip tidak teratur
Dari arahan di atas, anda boleh melihat bahawa formula yang digunakan semasa docker dimulakan /bin/bash
dan formula yang ditentukan dalam skrip Memang /bash
Kita semua tahu bahawa kandungan baris pertama skrip menentukan laluan penterjemah skrip shell, dan laluan yang ditentukan ini hanya boleh diletakkan pada baris pertama fail. Oleh itu, adalah perlu untuk menggantikan baris pertama dalam skrip dengan /bin/bash
supaya mereka menggunakan penterjemah yang sama
2. Terdapat masalah dengan parameter permulaan
pelaksanaan docker Exec Parameter -it
digunakan dalam proses
docker exec -d service_name /bin/bash -c '/opt/start.sh'
#!/bin/bash nohup start1.sh > start1.log 2>&1 & sleep 5 nohup start2.sh 2>&1 & echo 'server started'
tutorial buruh pelabuhan》
Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan masalah docker melaksanakan ralat exec. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!