본문 바로가기
부트캠프 개발일기/Cloud

74일차: Docker

by shyun00 2023. 5. 30.

Docker

 

 애플리케이션 실행, 개발 등을 할 때 중요한 부분 중 하나가 바로 '환경'이다.

애플리케이션에 따라 필요한 프로그램의 버전과 종류가 다를 수 있다. 

이러한것들을 구애받지 않고 작업할 수 있도록 하는 것이 바로 컨테이너 기술이다.

일상 생활에서 컨테이너는 물건을 담고, 옮기는 용도로 사용한다.

이처럼 컨테이너도 소프트웨어를 포장, 수송한다고 생각할 수 있다.

컨테이너에 특정 실행 환경을 설정해줌으로써 적절한 환경을 유지할 수 있다.

 

하나의 컨테이너는 다른 컨테이너와 격리되는데, 이를 통해 특정 컨테이너에서 작동하는 프로세스는 그 컨테이너 안에서만 접근할 수 있으며, 다른 컨테이너에 영향을 주지 못한다. (완전히 격리되어있다.) 따라서 컨테이너 하나에 하나의  IP 주소가 할당되어 별도의 네트워크로 구분된다.

 

컨테이너 기술을 사용하는 대표적인 방법으로 Docker가 있다.

Docker에서 사용하는 대표적인 키워드로 아래 세가지가 있다.

  • 컨테이너: 애플리케이션 상자. 애플리케이션이 의존성, 네트워크 환경, 파일 시스템에 구애받지 않고 실행될 수 있도록 만든것
  • 이미지: 애플리케이션 및 해당 구성을 담아놓은 템플릿으로 컨테이너를 만드는데 사용함
  • 레지스트리: 이미지 저장소. 이미지 레지스트리에서 이미지를 다운로드 받을 수 있으며 대표적으로 Docker Hub, Amazon ECR이 있음

Docker  실습

Docker 사용법과 관련된 내용은 공식 홈페이지에서 확인할 수 있다.

사용 흐름은 다음과 같다.

레지스트리에서 이미지를 가져오고 -> 가져온 이미지를 통해 컨테이너를 실행한다.

이미지 구조: Registry_Account/Repository_Name:Tag

총 세개 구조로 구분되며 레지스트리, 레포지토리, 태그로 구분된다.

레지스트리는 해당 이미지를 관리하는 공간이며 레포지토리는 레지스트리 내에서 해당 이미지가 저장되는 공간을 말한다.

태그는 이미지를 설명하는 버전 정보를 주로 가지며 특별히 지정한 내용이 없다면 latest 태그가 붙은 이미지를 가져온다.

 

docker 이미지 가져오기

docker image pull docker/whalesay:latest
# docker/whalesay:latest 라는 이미지를 가져온다.

받아온 이미지 실행하기

docker container run --name 컨테이너_이름 docker/whalesay:latest cowsay Hello
# 컨테이너를 실행할때 옵션값 지정을 통해 컨테이너 이름을 지정해줄 수 있다.
# 또한 latest 뒤의 cowsay Hello는 컨테이너 실행시 수행되는 명령어와 해당 파라미터이다.

컨테이너 리스트 출력

docker container ps -a

컨테이너 삭제

docker container rm 컨테이너_이름

이미지를 받아오고, 컨테이너를 실행하고, 실행 후에는 관련 리소스를 삭제하는 작업까지 한번에 수행할수도 있다.

docker container run --name 컨테이너_이름 --rm docker/whalesay cowsay boo

이미지 삭제하기

docker image rm docker/whalesay

Docker의 경우 같은 기능이라도 여러 형태의 구문을 통해 수행할 수 있다. 관련 구문들은 공식 문서에서 확인 가능하다.

 

참고자료

Docker와 Spring MVC

CPU 아키텍쳐 (amd, arm)

'부트캠프 개발일기 > Cloud' 카테고리의 다른 글

77일차: 운영 전략  (0) 2023.06.02
76일차: Github Actions  (0) 2023.06.01
75일차: AWS 배포 자동화(Automated Deployment)  (0) 2023.05.31
73일차: 3 Tier Architecture 배포 실습  (0) 2023.05.26
72일차: 배포(AWS)  (0) 2023.05.25