사용자 도구

사이트 도구


docker:build

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
docker:build [2018/12/04 10:37]
kwon37xi [실행 사용자 변경]
docker:build [2022/02/16 14:49] (현재)
kwon37xi [주의할 점]
줄 2: 줄 2:
 [[:docker|Docker]] Image Build 하기 및 올리기 [[:docker|Docker]] Image Build 하기 및 올리기
  
 +===== 주의할 점 =====
 +  * 최종 프로세스실행 사용자를 ''root''로 두지말고 다른 것으로 변경하는 것이 좋다. 
 +    * 그렇지 않으면 Docker Container의 프로세스가 뚫리면 Host 운영체제의 ''root'' 권한이 뚫리게 된다.
 +  * 항상 동일한 ''Dockerfile''에 대해 동일한 build 결과가 나오게 하지 않으면 새로운 버그 등에 직면할 수 있다.
 +    * ''FROM''을 명시할 때 ''latest''를 사용하지 말고 특정 버전 번호 태그까지 명시한다.
 +  * Timezone 을 명확히 맞춘다.
 +  * multi stage build로 최소 용량이 될 수 있게 한다.
 +  * 내 경험상 [[linux:alpine|Alpine Linux]] 은 JDK와 각종 문제를 일으켰다. 그냥 [[linux:debian|Debian Linux]], [[linux:rhel|RHEL - RedHat Enterprise Linux and derivations]] 계열의 이미지를 사용하는게 더 잘 작동했다. see [[java:openjdk:docker|OpenJdk Docker]]
 ===== 한 컨테이너에서 다중 프로세스 실행 ===== ===== 한 컨테이너에서 다중 프로세스 실행 =====
   * [[https://docs.docker.com/engine/admin/using_supervisord/|Use Supervisor with Docker]]   * [[https://docs.docker.com/engine/admin/using_supervisord/|Use Supervisor with Docker]]
줄 15: 줄 23:
 </code> </code>
   * ''apt-get''은 ''apt-get clean''   * ''apt-get''은 ''apt-get clean''
-  * ''apk''는 ''apk cache clean'' 인데, [[linux:alpine|Alpine Linux]] Docker 부모 이미지들은 기본적으로 cache를 비활성화해서 이 명령을 실행하지 않아도 상관없는 듯.+  * ''apk''는 ''apk cache clean'' 인데, [[linux:alpine|Alpine Linux]] Docker 부모 이미지들은 기본적으로 cache를 비활성화해서 이 명령을 실행하지 않아도 상관없는 듯. 혹은 ''rm -rf /var/cache/apk/*''
  
 ===== 실행 사용자 변경 ===== ===== 실행 사용자 변경 =====
줄 80: 줄 88:
   * 소스에서 바이너리를 빌드 한 뒤에 실제로 필요한 바이너리만 최종 Docker 이미지로 만들거나 할 수 있는 방식   * 소스에서 바이너리를 빌드 한 뒤에 실제로 필요한 바이너리만 최종 Docker 이미지로 만들거나 할 수 있는 방식
  
 +===== 참조 =====
 +  * [[https://www.baeldung.com/ops/dockerfile-git-strategies|Dockerfile Strategies for Git | Baeldung]]
 +  *   * [[https://dev.to/karanpratapsingh|Top 5 Docker Best Practices - DEV Community]]
docker/build.1543887468.txt.gz · 마지막으로 수정됨: 2018/12/04 10:37 저자 kwon37xi