배포전에 컨테이너에 담고 배포를 진행하는게 좋겠다고 생각이 들어서 도커를 사용해보려고 한다.
배포전, 도커를 사용해 컨테이너를 적용하는 장점에대해 지피티의 답변을 첨부하자면,
ㅇ 컨테이너 방식의 장점
의존성 충돌 문제를 해결해줌.
- 개발과 배포 환경을 일치시킴
- 수평 확장을 쉽게 해줌
- 각 서버에 새로운 내용을 배포하기 쉽게 만듬
ㅇ 컨테이너가 격리하고 독립적으로 소유하는 자원
- 프로세스 : 특정 컨테이너 안에서 실행되는 프로세스는 다른 컨테이너의 프로세스에 영향을 줄 수 없음.
- 네트워크 : 컨테이너 하나에 하나의 IP 주소가 할당됨.
- 파일 시스템 : 해당 컨테이너에서의 명령이나 파일 등의 액세스를 제한 가능.
ㅇ 컨테이너?
컨테이너란 가상머신으로서, 하나의 컴퓨터 위에서 여러개의 독립적인 컴퓨터가 작동할 수 있게 하는 기술.
ㅇ 도커를 사용하는 이유
- OS에 상관없이 즉시 애플리케이션 실행 환경을 만들 수 있다.
- 개발을 컨테이너 위에서 진행할 경우, 모든 개발팀이 동일한 환경 하에 개발을 진행할 수 있다.
- 배포 시에도 도커 컨테이너를 EC2 서버에서 실행할 수 있게하는 ECS를 이용하면 쉽게 애플리케이션을 배포할 수 있다.
- 트래픽이 몰려도, 로드 밸런서를 통해 여러 서버 중 한 곳을 이용하게 한다.
ㅇ 핵심 키워드
- 컨테이너 : 의존성, 네트워크 환경, 파일시스템에 구애받지 않는 애플리케이션 상자
- 이미지 : 실행되는 컨테이너는 이미지로부터 생성됨. 애플리케이션 및 구성을 함께 담아놓은 템플릿. 수평확장 가능하게 함. 커밋해서 다른이미지를 만들 수 있음.
- 레지스트리 : 이미지가 저장되는곳. Docker Hub, Amazon ECR.
ㅇ 컨테이너 vs VM
둘다 한 컴퓨터 위에 여러개의 컴퓨터를 사용할 수 있게하지만, 작동원리가 다르다. VM은 실행하는데 많은 컴퓨터 자원이 쓰이지만 도커는 여러개의 컨테이너를 띄워도 무리가지 않는다. 그리고 도커 이미지는 보통 애플리케이션 단위로 만들어지고, VM은 해당 VM위에 운영체제를 설치해야하는 과정을 거친다.
ㅇ Docker CLI
기본적인 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 |