docker 컨테이너에서 CMD 명령어에 관한 질문입니다.

힘들다의 이미지

제가 centos7을 호스트로 사용할 때 어떤 서비스를 시작하거나 등록할때 systemctl 을 사용했었는데요..

docker 컨테이너안에서 systemctl 을 사용할 수도 있지만 별로 좋은 방법은 아니라 그래서

일반적으로 컨테이너실행 시킬때 CMD입력란에 만약 웹서버라면 apachectl -DBACKGROUND 이런식으로 명령을 주잖

아요... 근데 apachectl -DBACKGROUND 명령어가 익숙하지않고 ,, 어디서 공부해야될지도 모르겠고.. 앞으로

더 많은 서비스를 컨테이너화 할거같은데 저런 CMD 명령어를 어디서 공부할수 있나요. 혹은 어디서 알 수 있을

까요??

jick의 이미지

뭐 저도 docker 전문가는 아닙니다만... 일반적으로 컨테이너를 실행할 때 서버를 백그라운드로 돌리지는 않을 텐데요?

컨테이너가 시작할 때 처음으로 실행시키는 프로세스가 그 컨테이너의 "주인" 역할을 하고, 그 프로세스가 종료되면 도커는 컨테이너 전체가 종료되었다고 간주하고 컨테이너를 종료시킵니다.

그런데 프로세스를 백그라운드로 돌린다는 건 일반적으로 프로세스가 child process를 만든 다음, 부모 프로세스는 종료해서 프로세스가 끝나는 척 하고(?) 뒤에서 자식 프로세스가 일을 시작하는 거죠. 도커에서 이렇게 하면, 부모 프로세스가 끝나는 순간 전체 컨테이너가 종료되어 버립니다.

그러니까 도커를 이용해 서비스를 시작하려면 프로세스가 foreground로 도는 게 맞습니다.

힘들다의 이미지

지적 감사합니다.. 막연하게 알았던것을 설명해주셔서 감사합니다.

raymundo의 이미지

CMD 명령어 자체가 아니라 어떤 서비스를 도커로 만들 때 CMD를 써서 지정할 명령어 부분에 뭘 적어줘야 할지를 어떻게 알 수 있냐는 말씀이신데,

저도 매번 그것 때문에 아주 골치 아프더라고요. (어찌어찌 하더라도 이게 제대로 한 건지, 별 문제는 없을지 확인하기가 어렵네요)

일단 말씀하신 apache 라거나, 웬만큼 유명하고 많이 쓰인 것들은 공식적으로 도커 이미지를 제공하니까 docker hub에서 찾아보시고, 아마도 설명을 읽다보면 github 등 링크가 되어 있어서 따라가면 Dockerfile 도 볼 수 있습니다. 그걸 참고하게 되는데, 보통은 메인 서비스를 바로 띄우도록 지정된 게 아니라 docker-entry.sh 이런 스크립트를 실행하도록 되어 있고 이 스크립트 안에서 bash 스크립트의 온갖 기교를 부리면서 ㅠ_ㅠ 환경 세팅, 사용자 전환 등을 하지요.

공식 도커 이미지가 없는 경우라도 어지간한 것들은 누군가 올려놓은 이미지가 있을 텐데 거기에 있는 Dockerfile도 참고해보고...

systemctl 이나 init.d 같은 걸 보면 각 서비스를 관리하는 스크립트나 설정이 있고 (/etc/init.d/apache 같은) 그 안을 보면 실제로 서비스를 시작하는 명령어가 있을 테니 기본적으로는 그 명령어를 넣어주시면 되겠지만, 역시나 이런 스크립트에서도 명령 실행 전 이런 저런 설정 검사나 세팅을 하는 부분이 있으니 그것도 같이 챙기려면 까다롭더라고요.

좋은 하루 되세요!

힘들다의 이미지

감사합니다..

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.