🔗 Docker docs : 공식 문서 및 설치 경로, 가이드를 볼 수 있습니다.
새로 산 노트북에 개발환경을 구성을 해야해서 겸사겸사 공부할 겸 Docker를 사용해 환경을 구성해보려고 한다. 2년 전에 회사에선 윈도우를 사용해서 WSL을 활용해서 Docker를 구성해보다가 중간에 사내 사용 불가 프로그램으로 확정되어 그냥 설치 도중에 삭제해버렸었다. 이후 까맣게 잊고 있다가 새로 산 노트북에 Spring Boot를 실습해볼겸 MySQL 서버를 도커를 이용해 구성하기로 결정했다.
Docker를 설치하기 전, 먼저 Docker가 무엇이고 왜 해당 플랫픔을 활용하는지에 대한 내용을 정리하였다.
Go언어로 작성된 리눅스 컨테이너 기반으로 하는 오픈소스 가상화 플랫폼
VM 가상화
기존 VM 가상화 플랫폼은 호스트와 완벽하게 분리되는 장점이 있지만, 그만큼 무겁고 느림
→ 더 높은 격리 레벨을 지원해서 보안적인 측면에서 더욱 유리하며, 커널을 공유하지 않아 멀티 OS가 가능함
컨테이너 기반 가상화
기존 OS를 가상화 시키는 VM 가상화 플랫폼과 달리 OS레벨의 가상화로 프로세스를 격리시켜 동작하는 방식
즉, 컨테이너 기반 가상화는 호스트의 커널을 공유하기 때문에 Host OS가 사용하는 자원을 분리하여 여러 환경을 만들 수 있도록 함
→ 커널 공유 시, I/O처리가 쉽게 되어 성능의 효율을 높일 수 있는 반면 멀티 OS는 불가함
Docker Image: 컨테이너를 실행할 수 있는 실행 파일, 설정 값 등을 담은 것
Docker File: 이미지 생성의 출발점, 이미지를 구성하기 위한 명령어들을 작성한 파일로서 해당 파일을 실행하게 되면 컨테이너에 설정한 이미지들이 구성되게 됨
FROM jdk8:latest
WORKDIR /app
RUN mkdir /app/nexus-2.14.9-01
RUN mkdir /app/sonatype-work
RUN yum -y install httpd
ENV JAVA_HOME /usr/local/jdk1.8.0_181
ENV PATH=$JAVA_HOME/bin:$PATH
ENV CLASSPATH=.
EXPOSE 3411
ADD run.sh /app/
CMD["/app/run.sh"]
독립된 개발 환경 보장
비교적 가볍고 빠른 성능과 유동적인 자원성
도커 이미지와 도커 파일을 통해 실행 시점에 상관없이 여러 컨테이너를 동일한 환경으로 구성
쉽게 Scale Out 을 할 수 있는 유연성