Rumah > Operasi dan penyelenggaraan > Docker > Bagaimana untuk menyelesaikan masalah docker melaksanakan ralat exec

Bagaimana untuk menyelesaikan masalah docker melaksanakan ralat exec

藏色散人
Lepaskan: 2022-01-12 14:12:37
asal
8658 orang telah melayarinya

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'".

Bagaimana untuk menyelesaikan masalah docker melaksanakan ralat exec

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'
Salin selepas log masuk

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'
Salin selepas log masuk

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 Bagaimana untuk menyelesaikan masalah docker melaksanakan ralat exec

  • -t membolehkan docker memperuntukkan terminal pseudo dan mengikatnya pada input standard bekas
  • -i membolehkan Input standard bekas kekal terbuka
Selepas melaksanakan skrip latar belakang, hanya start.sh yang pertama boleh dilaksanakan dalam awan terminal juga keluar selepas pelaksanaan,

Sebagai bantuan, terdapat skrip awan latar belakang -d, yang hanya memenuhi keperluan kami

Proses pengubahsuaian

docker exec -d service_name /bin/bash -c '/opt/start.sh'
Salin selepas log masuk
#!/bin/bash
nohup start1.sh > start1.log 2>&1 &
sleep 5
nohup start2.sh 2>&1 &
echo 'server started'
Salin selepas log masuk
Kajian yang disyorkan: "

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!

Label berkaitan:
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