>  기사  >  운영 및 유지보수  >  docker가 exec 오류를 실행하는 문제를 해결하는 방법

docker가 exec 오류를 실행하는 문제를 해결하는 방법

藏色散人
藏色散人원래의
2022-01-12 14:12:378647검색

docker가 exec를 실행할 때 발생하는 오류에 대한 해결 방법: 1. 스크립트의 첫 번째 줄을 "/bin/bash"로 바꿉니다. 2. "docker exec -d service_name /bin/bash -c '/opt/start.sh를 실행합니다. '".

docker가 exec 오류를 실행하는 문제를 해결하는 방법

이 문서의 운영 환경: centos7 시스템, Docker 버전 20.10.11, Dell G3 컴퓨터.

Docker exec가 스크립트 솔루션을 실행하지 못했습니다

배경 소개

Docker 컨테이너에 사용할 때 백그라운드에서 실행해야 하는 스크립트가 있는데, docker exec를 통해 호출됩니다. 이 스크립트는 내가 원하는 결과를 얻지 못했기 때문에 탐색을 시작했습니다!

원본 스크립트

docker exec -it service_name /bin/bash -c '/opt/start.sh'

이 start.sh의 기능은 백그라운드에서 두 개의 서비스를 시작하는 것입니다

#!/bash
nohup start1.sh > start1.log 2>&1 &
sleep 5
nohup start2.sh 2>&1 &
echo 'server started'

문제 위치

1 스크립트 작성이 표준화되지 않았습니다

Docker를 볼 수 있습니다. 위 명령 시작 시 사용된 공식은 /bin/bash이고 스크립트에 지정된 공식은 실제로 /bash입니다. 쉘 스크립트 인터프리터에 대한 경로를 지정하며, 이 지정된 경로는 파일의 첫 번째 줄에만 배치될 수 있습니다. 따라서 동일한 인터프리터를 사용하도록 스크립트의 첫 번째 줄을 /bin/bash로 바꿔야 합니다/bin/bash 而脚本中指定的确实/bash.我们都知道脚本第一行的内容指定了shell脚本解释器的路径,而且这个指定路径只能放在文件的第一行。因此需要把脚本中的第一行用/bin/bash替换了,使得它们用同一个解释器

2.启动参数有问题

docker exec 执行的过程中使用了-itdocker가 exec 오류를 실행하는 문제를 해결하는 방법

2. 시작 매개변수에 문제가 있습니다
  • 사용하는 동안. docker exec 실행 -it 매개변수를 사용하면

-t를 통해 docker가 의사 터미널을 할당하고 이를 컨테이너의 표준 입력에 바인딩할 수 있습니다.

-i는 컨테이너의 표준 입력을 열린 상태로 유지합니다.

이렇게 하면 백그라운드 스크립트를 실행한 후 첫 번째 start.sh만 클라우드에서 실행할 수 있습니다. 두 번째는 실행 후 터미널도 종료되었기 때문에 작동하지 않습니다.

도움말에 -d가 있습니다. , 백그라운드 클라우드 실행 스크립트, 이는 우리의 요구 사항을 충족합니다

수정 프로세스
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'
권장 학습: "🎜docker tutorial🎜"🎜🎜🎜

위 내용은 docker가 exec 오류를 실행하는 문제를 해결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.