문서의 이전 판입니다!
Docker Image Build 하기 및 올리기
RUN 명령은 그 하나하나가 이미지로 구워지는데, RUN 명령에서 대용량 데이터를 저장했다가 그 다음 RUN 명령에서 그 파일을 지우더라도 이미지 용량을 줄어들지 않는다.RUN 명령 한 줄에 용량을 줄이는 명령까지 죽 나열 해야만 한다. yum clean all(다운로드한 패키지 캐시 삭제) 처럼.RUN yum update -y && \ yum instal .... && \ yum clean all
apt-get은 apt-get cleanroot' 권한이 host 까지 권한을 행사할 수도 있음.
* 따라서 항상 non-root 권한으로 명령을 실행할 수 있도록 해야 한다.
===== ENTRYPOINT =====
* run/start 후 docker 컨테이너 내부에서 실행할 스크립트
* PYRASIS.COM: 가장 빨리 만나는 Docker 7장 - 6. ENTRYPOINT
===== Timezone 보정 =====
from Docker Container time & timezone (will not reflect changes)
<code>
ENV TZ=Asia/Seoul
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
</code>
* tzdata 패키지 없을 경우 미리 설치할 것.
* Alpine Linux 도 참조.
===== LANG =====
* UTF-8로 인코딩 설정 필요.
<code sh>
ENV LANG=ko_KR.UTF-8
</code>
===== JAVA JMX =====
JMX_PORT를 …port, …rmi.port 두 군데 지정해주고, hostname에 Host의 IP를 지정해준다.
<code>
-Dcom.sun.management.jmxremote=true \
-Dcom.sun.management.jmxremote.port=$JMX_PORT \
-Dcom.sun.management.jmxremote.rmi.port=$JMX_PORT \
-Dcom.sun.management.jmxremote.ssl=false \
-Dcom.sun.management.jmxremote.authenticate=false \
-Djava.rmi.server.hostname=$HOST_IP“
</code>
docker 실행시 JMX_PORT를 -p''로 노출시킨다.Local에 있는 빌드에 버전이 있는 tag 와 :latest 태그를 함께 만들고 둘 다 push 하면 된다. tag가 달라도 이미 push 된 데이터가 있으면, 중복 Push하지 않기 때문에 데이터가 중복저장되거나 하지는 않는다.
docker build --tag my/name:customversion . docker tag my/name:customversion my/name:customversion docker tag my/name:customversion my/name:latest docker push my/name:customversion dpcler push my/name:latest