본문 바로가기
프로젝트/낙낙(KnockKnock)

도커를 써볼까

by 티코딩 2023. 7. 10.

배포전에 컨테이너에 담고 배포를 진행하는게 좋겠다고 생각이 들어서 도커를 사용해보려고 한다.

배포전, 도커를 사용해 컨테이너를 적용하는 장점에대해 지피티의 답변을 첨부하자면,

그렇다고 한다^^



ㅇ 컨테이너 방식의 장점

의존성 충돌 문제를 해결해줌.

- 개발과 배포 환경을 일치시킴

- 수평 확장을 쉽게 해줌

- 각 서버에 새로운 내용을 배포하기 쉽게 만듬

 

ㅇ 컨테이너가 격리하고 독립적으로 소유하는 자원

- 프로세스 : 특정 컨테이너 안에서 실행되는 프로세스는 다른 컨테이너의 프로세스에 영향을 줄 수 없음.

- 네트워크 : 컨테이너 하나에 하나의 IP 주소가 할당됨.

- 파일 시스템 : 해당 컨테이너에서의 명령이나 파일 등의 액세스를 제한 가능.

 

ㅇ 컨테이너?

컨테이너란 가상머신으로서, 하나의 컴퓨터 위에서 여러개의 독립적인 컴퓨터가 작동할 수 있게 하는 기술.

 

ㅇ 도커를 사용하는 이유

- OS에 상관없이 즉시 애플리케이션 실행 환경을 만들 수 있다.

- 개발을 컨테이너 위에서 진행할 경우, 모든 개발팀이 동일한 환경 하에 개발을 진행할 수 있다.

- 배포 시에도 도커 컨테이너를 EC2 서버에서 실행할 수 있게하는 ECS를 이용하면 쉽게 애플리케이션을 배포할 수 있다.

- 트래픽이 몰려도, 로드 밸런서를 통해 여러 서버 중 한 곳을 이용하게 한다.

 

ㅇ 핵심 키워드

- 컨테이너 : 의존성, 네트워크 환경, 파일시스템에 구애받지 않는 애플리케이션 상자

- 이미지 : 실행되는 컨테이너는 이미지로부터 생성됨. 애플리케이션 및 구성을 함께 담아놓은 템플릿. 수평확장 가능하게 함. 커밋해서 다른이미지를 만들 수 있음. 

- 레지스트리 : 이미지가 저장되는곳. Docker Hub, Amazon ECR.

 

ㅇ 컨테이너 vs VM

둘다 한 컴퓨터 위에 여러개의 컴퓨터를 사용할 수 있게하지만, 작동원리가 다르다. VM은 실행하는데 많은 컴퓨터 자원이 쓰이지만 도커는 여러개의 컨테이너를 띄워도 무리가지 않는다. 그리고 도커 이미지는 보통 애플리케이션 단위로 만들어지고, VM은 해당 VM위에 운영체제를 설치해야하는 과정을 거친다.

 

ㅇ Docker CLI

 

docker container run

docker container run: See [docker run](run.md) for more information.

docs.docker.com

기본적인 CLI만 보고가자.

docker image pull docker/whalesay:latest

- docker/whalesay의 최신 이미지를 받아옴.

docker image ls

- 이미지 리스트를 출력한다.

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

- run은 실행한다는거고, -name은 컨테이너의 이름을 할당하고, cowsay는 명령어를 호출하고 boo는 cowsay에 넘겨질 파라미터.

docker container ps -a

- ps 는 컨테이너의 리스를 출력함. a는 Default로 실행되는 컨테이너지만 종료된 컨테이너를 포함해 모든 컨테이너를 출력함.

docker container rm 컨테이너_이름

- rm은 컨테이너를 지칭해서 삭제할 수 있다.

docker container run -it --rm danielkraic/asciiquarium:latest

- -it은 -i, -t 를 동시에 사용한 옵션. 사용자와 컨테이너간 인터렉션이 필요하면 사용.

 

ㅇ 도커 이미지

- 레지스트리 : 도커 이미지를 관리하는 공간. 기본은 도커허브로 설정.

- 레포지토리 : 레지스트리 내 도커 이미지가 저장되는 공간.

- 태그 : 해당 이미지를 설명하는 버전 정보. 기본적으로 latest

'프로젝트 > 낙낙(KnockKnock)' 카테고리의 다른 글

배포를 해볼까-3  (0) 2023.07.17
배포를 해볼까-2  (0) 2023.07.14
배포를 해볼까-1  (0) 2023.07.14
배치를 알아보자. Spring Batch  (0) 2023.06.18
오어쓰를 적용해boja. (OAuth2)  (0) 2023.05.30