httpd 이미지에 지정된 명령 "httpd-foreground"는 무엇입니까?
2990 단어 도커
docker container ls
그래서 조사해 보았습니다.대전제로서 컨테이너는 CMD 커멘드나 ENTRYPOINT 커멘드로 지정한 커멘드가 종료하면 컨테이너 자체도 종료하는 구조입니다(아래의 기사를 알기 쉬웠습니다)
참고 : htps // // r치테 c친g. 는 bぉ. jp/엔트리/2020/08/13/153842
결론 : httpd -DFOREGROUND 명령을 실행하여 httpd 데몬을 포그라운드에서 시작했습니다.
실제로 httpd 이미지의 리포지토리를 살펴 보겠습니다.
httpd 이미지의 dockerfile CMD 명령이 이와 같이 지정되었습니다.
~省略~
COPY httpd-foreground /usr/local/bin/
EXPOSE 80
CMD ["httpd-foreground"]
COPY 명령은 httpd-foreground를/usr/local/bin/에 복사합니다. CMD 명령에 지정된 httpd-foreground를 살펴봅니다.
#!/bin/sh
set -e
# Apache gets grumpy about PID files pre-existing
rm -f /usr/local/apache2/logs/httpd.pid
exec httpd -DFOREGROUND "$@"
httpd -DFOREGROUND
가 실행 중입니다. 이것은 httpd 데몬을 포그라운드에서 시작하는 것을 의미합니다.service 커멘드를 사용하면 백그라운드에서 실행한 후 service 커멘드 자체는 종료하기 때문에 컨테이너도 종료해 버립니다만, 이 방법이라면 httpd 데몬이 포그랜드로 기동되어 컨테이너가 종료하지 않습니다.
실제로 시도해보십시오.
httpd-foreground
우선 보통 apache 이미지를 시작해 보겠습니다.
docker run -dit -p 8080:80 httpd:2.4
컨테이너가 시작되었는지 확인해 봅니다.
docker conteiner ls
컨테이너를 시작하고 시간이 지나도 컨테이너는 시작된 상태로 유지됩니다.
서비스 httpd start
그런 다음 이전의 docker run 명령에
service httpd start
명령을 인수로 전달합니다.docker run -dit -p 8080:80 httpd:2.4 service httpd start
컨테이너를 살펴 보겠습니다.
COMMAND의 란이
service httpd start
로 되어 있어 status가 곧바로 Exited가 되었습니다. service 명령이 종료되면 거의 동시에 컨테이너가 중지되었습니다. 덤
-DFOREGROUND
옵션 없이 httpd
명령만으로 컨테이너를 시작해 봅니다.docker run -dit -p 8080:80 httpd:2.4 httpd
여기도 즉시 컨테이너가 종료되었습니다.
뭔가 실수 등이 있었던 사양없이 지적하십시오.
Reference
이 문제에 관하여(httpd 이미지에 지정된 명령 "httpd-foreground"는 무엇입니까?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ryoutaka/items/343f048e6a3e0cefdab5텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)