본 게시글은 유데미(udemy.com)의 < 【한글자막】 Docker & Kubernetes : 실전 가이드 > (Maximilian Schwarzmüller) 강의를 수강한 후 내용을 정리한 것입니다.
본격적으로 도커 실습을 하려면 우선 자신이 사용하는 OS가 무엇인지 파악해야 합니다.
- 1번 옵션: macOS나 Windows일 경우 Docker Desktop을 설치하기
- 2번 옵션: requirements를 충족하지 못한다면(낮은 버전의 OS 등) Docker Toolbox를 통해 설치하기
- 3번 옵션: 다 필요없고 난 리눅스다! 그러면 Docker Desktop이나 toolbox 없이 docker만 설치
리눅스는 도커 실습에 최적화된 환경이다
리눅스에선 아래 명령어로 바로 도커 설치 및 사용이 가능합니다.
리눅스는 자체적으로(natively) Docker Engine을 지원하기 때문입니다.
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
사실 저 명령어 입력 이전에 더 거쳐야 하는 단계가 있습니다.
꼭꼭 도커 공식 홈페이지의 다음 링크를 참조합시다: https://docs.docker.com/engine/install/ubuntu/
Install Docker Engine on Ubuntu
Jumpstart your client-side server applications with Docker Engine on Ubuntu. This guide details prerequisites and multiple methods to install Docker Engine on Ubuntu.
docs.docker.com
도커 사용을 위한 기본 IDE: 역시 VS Code
앞으로 실습은 VS Code에서 진행할 예정입니다.
이때 VS Code의 Docker 익스텐션 설치는 무조건 필수입니다.
익스텐션을 설치하면 Dockerfile 수정 시 intellisense, 도커 탐색 창 표시,
도커 명령어 및 Docker Compose 지원 기능 등을 활용할 수 있습니다.
Dockerfile 생성
실습에서 가장 먼저 작성하는 코드(파일)은 바로 Dockerfile입니다.
Dockerfile은 image를 만들기 위한 일종의 주문서입니다.
바로 예시를 확인해 봅시다.
# 명령어가 더 다양함. 모두 대문자로 쓰는 게 convention
# Docker Hub에서 어떤 이미지를 가져올지 지정
FROM node:14
# 도커 이미지를 build 하고 나면 컨테이너 내에 자체적으로 디렉터리를 생성하는데, 그때 파일을 생성하고 실행하기 위한 작업 디렉토리를 지정하는 걸 의미한다.
WORKDIR /app
# 순서: target_directory destination_directory
# 어떤 파일을 복사할지 지정
# 왼쪽에는 복사하고자 하는 (도커 컨테이너 바깥의) 파일을, 띄어쓰기하고 오른쪽에는 파일을 붙여넣고자 하는 도커 컨테이너 내의 디렉토리를 의미
# .으로 지정한다면 위에서 설정한 WORKDIR에 해당한다
COPY package.json .
# COPY . .
# 도커 이미지를 빌드할 때 실행하는 명령어
RUN npm install
# 컨테이너 밖에서도 컨테이너 구동 앱에 접근 가능하도록 포트 번호를 지정.
EXPOSE 3000
# 도커 이미지 빌드가 아닌, 도커 컨테이너를 실행할 때의 명령어
CMD ["node", "app.mjs"]
image를 만드는 걸 빌드(build)라고 합니다.
현재 폴더(명령어 입력하는 터미널의 현재 경로)에 Dockerfile이 있고 -> . 으로 지정
이 Dockerfile을 바탕으로 image를 빌드하겠다는 명령어는 아래와 같습니다.
# 현재 폴더에 Dockerfile이 있어야 가능
docker build .
image가 만들어졌다면 이 image를 바탕으로 컨테이너를 생성, 실행해봅시다.
# : 앞쪽은 내 localhost의 포트번호, : 뒤쪽은 컨테이너의 exposed된 포트번호
docker run -p 3000:3000 docker_container_own_id
2주차에서 docker container의 이름을 지정하는 법을 배우면서 알게 되겠지만,
container 이름을 따로 지정하지 않았다면 run 하기 전까지는 이름을 알 수 없기 때문에
여기선 container ID로 실행할 container를 지정합니다.
docker ps 명령어를 통해 현재 실행 중인 container의 자동으로 생성된 이름을 확인합니다.
# 현재 실행되고 있는 docker container의 상태, ID 등을 확인
docker ps
실행 중인 컨테이너를 중지하려면 stop 명령어와 해당 컨테이너 이름을 지정하면 됩니다.
# 실행 중인 도커 컨테이너를 중지하려면 docker stop 명령어를 실행
docker stop docker_name
'도커와 쿠버네티스' 카테고리의 다른 글
[2주차] Part 4: 도커 이미지 공유하기(push, pull) (0) | 2024.01.09 |
---|---|
[2주차] Part 3: 도커 이미지와 컨테이너를 관리하기 (1) | 2024.01.09 |
[2주차] Part 2: 이미지는 읽기 전용(read-only) 파일일 뿐이다 (1) | 2024.01.09 |
[2주차] Part 1: 이미지(image)와 컨테이너(container) 간의 관계 (0) | 2024.01.09 |
[1주차] Part 1: 우리가 도커(Docker)를 써야 하는 이유 (1) | 2024.01.02 |