갬미의 성장일기

Day 32 - 도커 (이론, 실습) 본문

Cloud/Cloud 공부일기

Day 32 - 도커 (이론, 실습)

갬미 2022. 2. 22. 22:46

오늘 배운 내용

- 도커

도커가 왜 필요할까?

VM위에 APP을 깔아 사용할때

APP종류에 따라 Dependency를 맞춰줘야 할 때가 있다

이떄 app 간의 dependency가 충돌한다면 -> vm을 추가로 만들어 app을 각각 다른 vm에 설치해야한다 

VM이 가볍기때문에 크게 무거워지지는 않지만 커널이 중복되어 설치되기 때문에 하드웨어 리소스를 많이 잡아먹게 된다

이를 해결하기 위해 [app - dependency]를 묶어 패키지를 만들어 배포하는 컨테이너를 사용한다

이 컨테이너는 hypervisor위에서 돌아가지 않고 container runtime위에서 돌아간다

os - container runtime - container

 

 

 

 

 

이미 이미지가 있다면 컨테이너 생성, 시작은 아주 빠르게 된다

이미지를 다운받는데 시간이 오래걸릴뿐 컨테이너를 생성하고 app을 시작하는것은 아주 빠르게 가능하다 

-> 고가용성 가능

 

AWS에서 EC2를 만들때 AMI라는걸 선택하게 된다

이런게 아마존에서 제공하는 OS image이며 선택만하면 이미 이미지가 아마존 저장소 내에 있기때문에 빠르게 EC2 생성이 가능하다

 

도커 설치하기

참고 사이트 https://docs.docker.com/engine/install/centos/

yum install -y yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install docker-ce docker-ce-cli containerd.io

systemctl start docker
systemctl enable docker

이후 아래 잘 되면 ok

docker ps

다음을 입력

docker run -d -p 80:80 nginx

그러면 nginx가 실행됨!

톰캣 설치하기

docker run -d -p 8080:8080 tomcat

내 아이피:8080 으로 접속

app에 소스가 없기때문에 이렇게 나오는게 맞음

 

docker는 컨테이너 이미지를 받아와 이를 통해 컨테이너를 만들고 app을 실행시킨다 

이과정을 한번에 하는 명령어가 run

docker run -d -p 80:80 nginx

-d 안하면 해당 프로세스가 먹혀있기때문에 창을 하나 더 열어야 한다

-d 해서 백그라운드에서 돌아가게 해야 편하다

 

-p 포트번호를 적는다 

-p 서비스요청포트:컨테이너포트 

컨테이너 포트는 이미지를 만들때 정해진다 

사용자가 접속할때 ~~~:서비스요청포트 주소창에 입력

 

-d -p는 무조건 쓴다고 생각하면 된다

docker run -d -p 8090:80 nginx

내 pc에서 8090번 포트로 서비스를 요청하면 80번 포트를 이용하는 nginx를 실행하겠다

이미지가 없다면 -> docker hub에서 image pull -> create container -> start 

이미지가 이미 있다면 -> create container -> start 

 

container 

그냥 VM에 tomcat을 깔려면 -> 종속성따져서 깔게 많음 

container 에서 tomcat깔려면 -> docker run 하면 끝

hypervisor - 가상화를 위한 os

     [host - hypervisor - vm]

container runtime - 컨테이너를 관리하기 위한 os = 컨테이너를 만들고 삭제하고 실행하고 멈추고,, 등등

     [host - os - container runtime - container] // host는 물리적 서버 or vm이다

 

다른 포트에서 서비스 열어보기

docker run -d -p 9090:80 hifrodo/gke:sysinfo_v1

내 ip:9090 접속

도커 컨테이너 삭제

docker ps -a 
docker rm -f 이미지 아이디3자리 이미지 아이디3자리

여러개 입력하여 여러개 지우기 가능

 

도커 이미지 삭제

docker images
docker rmi 레파지토리:tag 또는
docker rmi 이미지ID 3자리

도커 이미지 받아오기

docker pull nginx

 

오늘의 회고

  • 그간 도커를 만나면 너무 생소하고 개념자체가 너무 어렵게 느껴져서 회피하곤했는데 이렇게 천천히 배우니까 이해도 잘되고 좋았다
  • 도커가 이렇게 편하고 사용하기 쉽다는것(아직까지는 ㅎ)을 알았으면 진작 배워서 썼을 것 같다
  • 클라우드 서비스를 배울수록 가
Comments