728x90
Docker를 배우는 이유
Docker는 Container를 빌드, 배포, 실행, 업데이트와 같은 관리하는 기능을 합니다.
k8s의 기본 단위인 PoD는 Container로 구성되어있기 때문에 Docker를 배우고 난 뒤에
k8s를 배워야 하는 것이 맞지만 Docker에 Container를 만들기 위해서는 image가 필요합니다.
즉, Docker를 배운다는 것은 image를 만드는 것을 배우는 것인데 Docker에는 Docker Hub라는 image를 업로드하고
다운로드 받을 수 있는 공간이 있어서 다른 사람이 만든 image를 사용하는 것으로 Docker를 배우지 않고
k8s를 사용가능합니다. 하지만 Container의 생성과정을 이해하는 것은 필요하다고 생각합니다.
단순히 따라하는 것과 과정을 이해한 뒤에 따라하는 것은 정말 큰 차이이기 때문입니다.
Image 생성
Image란
서비스 운영에 필요한 소스코드, 라이브러리등과 같은 process 실행을 위한 모든 파일과 설정값이 있는 파일들을 모아 놓은 Zip같은 것입니다.
Image를 생성하는 것을 빌드라고 합니다. 이미지를 빌드하는 방법에는 4가지가 있습니다.
1. 기본적인 방법
2. 용량 줄이기
3. 컨테이너 내부 빌드
4. 멀티 스테이지
우선 기본적인 방법은 순서가 정해져있습니다.
가장 먼저 해야할 것은 소스 코드 빌드입니다. 소스 코드는 개발자가 개발한 Application을 말합니다.
Application을 개발하는 분들은 대부분 Java & Spring을 사용하기 때문에 Java를 기준으로 설명하겠습니다.
소스 코드를 빌드 한다는 것은 개발한 Application을 파일 하나로 압축한다는 것입니다.
Gradle은 UI에 Gradle에 아래 사진의 위치에 bootJar을 실행하는 것으로 빌드가 됩니다.
빌드를 했다면 아래와 같이 .jar 파일이 생성된 것을 확인할 수 있을 겁니다.
이제 이미지를 빌드하기 위한 준비가 끝난 것입니다.
다음으로 Dockerfile을 생성하고 작성해야합니다. Dockerfile은 k8s의 .yaml파일과 같은 역할을 합니다.
(.yaml파일은 k8s의 Object의 설정을 적은 파일입니다)
즉, image의 설정을 작성하는 파일입니다.
위 사진이 Dockerfile의 내용입니다. 각 선언의 의미는 아래 표와 같습니다
FROM <이미지 이름>:<Tag> | 기초 이미지를 가져옵니다. 누군가 만들어 놓은 이미지에 추가한다는 것입니다 (import문) |
LABEL <label이름> = <값> | 이미지의 부가 설명을 <값>부분에 작성 |
EXPOSE <port번호> | 컨테이너 실행시 사용할 Port 번호를 선언 |
COPY <복사할 경로> : <이미지 경로> | 컨테이너에 host에 있는 파일을 복사 |
WORKDIR <경로> | 현재 이미지의 작업 위치를 <경로> 로 변경 |
ENTRYPOINT ['명령어','옵션', '옵션' , .....] | 컨테이너 실행시 []안의 명령어를 실행 |
이제 Dockerfile을 작성했으니 이미지를 빌드하면 됩니다.
명령창에 docker build -t <이미지 이름>으로 빌드가 실행됩니다.
빌드한 이미지로 여러개의 컨테이너를 생성할 수 있습니다.
컨테이너는 docker cun <option> <이미지이름> [: tag or digest]로 컨테이너를 실행합니다.
여기까지가 기본적인 방법으로 이미지를 빌드하고 컨테이너를 생성하는 과정이었습니다.
'k8s & Docker' 카테고리의 다른 글
DockerHub를 사용해 Container로 어플리케이션 실행 (0) | 2024.02.02 |
---|---|
k8s에서 Object (0) | 2024.01.19 |
Worker Node & PoD생성 과정 (0) | 2024.01.17 |
Kubernetes Cluster 구성 요소 - Master Node (0) | 2024.01.14 |
컨테이너 인프라 환경의 구성 요소 (0) | 2024.01.11 |