문서의 선택한 두 판 사이의 차이를 보여줍니다.
| 양쪽 이전 판 이전 판 다음 판 | 이전 판 | ||
|
docker:build [2017/05/16 14:47] kwon37xi [Timezone 보정] |
docker:build [2022/02/16 14:49] (현재) kwon37xi [주의할 점] |
||
|---|---|---|---|
| 줄 2: | 줄 2: | ||
| [[: | [[: | ||
| + | ===== 주의할 점 ===== | ||
| + | * 최종 프로세스실행 사용자를 '' | ||
| + | * 그렇지 않으면 Docker Container의 프로세스가 뚫리면 Host 운영체제의 '' | ||
| + | * 항상 동일한 '' | ||
| + | * '' | ||
| + | * Timezone 을 명확히 맞춘다. | ||
| + | * multi stage build로 최소 용량이 될 수 있게 한다. | ||
| + | * 내 경험상 [[linux: | ||
| ===== 한 컨테이너에서 다중 프로세스 실행 ===== | ===== 한 컨테이너에서 다중 프로세스 실행 ===== | ||
| * [[https:// | * [[https:// | ||
| * [[https:// | * [[https:// | ||
| + | |||
| + | ===== 용량 줄이기 ===== | ||
| + | * Dockerfile 의 각 '' | ||
| + | * 따라서 '' | ||
| + | <code sh> | ||
| + | RUN yum update -y && \ | ||
| + | yum instal .... && \ | ||
| + | yum clean all | ||
| + | </ | ||
| + | * '' | ||
| + | * '' | ||
| + | |||
| + | ===== 실행 사용자 변경 ===== | ||
| + | * 기본적으로 root 사용자로 ENTRYPOINT, CMD 의 명령이 실행되는데 이 경우 보안상 문제가 될 수 있다. Docker 컨테이너가 해킹당하면 '' | ||
| + | * 따라서 항상 non-root 권한으로 명령을 실행할 수 있도록 해야 한다. | ||
| + | |||
| + | <code sh> | ||
| + | # alpine linux 사용자 추가 | ||
| + | RUN adduser -D -h / | ||
| + | USER worker | ||
| + | </ | ||
| + | ===== COPY와 ADD chown ===== | ||
| + | * Docker 17.x 이후부터 '' | ||
| + | <code sh> | ||
| + | COPY --chown=< | ||
| + | </ | ||
| 줄 18: | 줄 52: | ||
| </ | </ | ||
| * '' | * '' | ||
| + | * [[linux: | ||
| + | |||
| + | ===== LANG ===== | ||
| + | * **UTF-8**로 인코딩 설정 필요. | ||
| + | |||
| + | <code sh> | ||
| + | ENV LANG=ko_KR.UTF-8 | ||
| + | </ | ||
| + | |||
| ===== JAVA JMX ===== | ===== JAVA JMX ===== | ||
| '' | '' | ||
| 줄 40: | 줄 83: | ||
| dpcler push my/ | dpcler push my/ | ||
| </ | </ | ||
| + | |||
| + | ===== Multi Stage Build ===== | ||
| + | * [[https:// | ||
| + | * 소스에서 바이너리를 빌드 한 뒤에 실제로 필요한 바이너리만 최종 Docker 이미지로 만들거나 할 수 있는 방식 | ||
| + | |||
| + | ===== 참조 ===== | ||
| + | * [[https:// | ||
| + | * * [[https:// | ||