SW교육/Docker

도커를 시작해 봅시다 - 02 (일단 돌리자!)

GrayrabbiT 2020. 11. 16. 22:43
반응형

일단 다른말 다 귀찮으실테니.. 일단 돌려보면서 몇 가지 개념 잡고 갑시다. 

 

-현재 사용중인 도커 버전입니다.(라즈베리파이에서 하고 있습니다.)

- 현재 실행중인 컨테이너를 보여준다.

 

 

잠깐

 

개념 잡고 가실께요. 

 

- 이미지

 

보통 우리는 원본의 이미지를 갖게 된다. 이미지는 원본이라고 생각하자. 

 

- 컨테이너

 

우리의 원본 이미지로 실행시킨 녀석이 컨테이너. 이런 컨테이너는 여러 개를 찍어 낼 수 있다. 예를 들어 싱글 쓰레드 기반의 노드 같은 앱을 하나 만들었다면, 컴퓨터에게는 여러 개를 실행 시킬 수 있음으로 여러 컨테이너를 찍어 낼 수 있다. 

 

 

 

- 이미지 가져오기

docker pull [이미지이름]

 

대충 이름을 넣으면 최신 버전의 이미지를 가지고 온다. 

 

- 이미지 리스트

docker images

여러 개의 이미지를 가지게 되는데 

 

REPOSITORY는 뭐 대강 다 아실테고.. 이미지는 특이하게 TAG를 가지게 된다. 이 태그는 이미지의 버전 정보를 담고 있다고 생각해도 된다. 현재 위의 그림에서 보이는 redis 이미지의 최신 버전을 가지고 왔다는 뜻이다. 그리고 IMAGE ID가 생성되는데 유니크한 아이디가 생성된다. 

 

 

- 실행

 docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...]

이렇게 되는데... 도커에서 옵션이 진짜 많이 붙을 수 있다. 특히 환경 변수 등도 같이 붙일 수 있는데. 엄청 지저분해 진다. 일단 붙일 수 있다고만 알아두고... 어차피 나중에는 compose 로 돌리거나 swarm 혹은 진짜 멀리멀리 나가면 k8s까지도 간다.(거기까지는 진짜 안가고 싶다.)

 

받은 redis 이미지를 돌려보자. 

돌렸더니 이렇게 되었다. 특히나 다시 쉘로 떨어진게 아니라 진입해 버렸다.

지난 글에서 -d를 해야 백그라운드로 간다고 했었잖은가? 지금은 들어와서 출력을 그대로 보고 있는 상태이다...

 

깐쭈롤 + C 를 이용해 나오면... redis가 죽는다..

docker ps

명령을 통해 살펴보면 실행되고 있는 녀석이 없다는 것을 알 수 있다.

그럼 다시 실행시켜 보자.

똑같다... 이 상태에서 다른 쉘로 들어가서 ps를 해보면

이렇게 살아있다는 것을 알 수 있다. 

그런데... 아까 이야기 했지 않는가?? 이미지는 원본이고, 우리는 컨테이너를 만들고 실행한다고..

docker ps -a

redis 시체 2마리가 보입니다.;;

저 녀석들을 다시 실행시킬 수 있다. 

- 컨테이너 재시작

docker restart [CONTAINER ID]

보면 알텐데... 컨테이너 아이디를 다 칠 필요 없이 식별할 수 있을 만큼만 입력하면 알아서 찾는다. 그런데 재미있는 것은 run 은 일단 프론트에서 시작되고, restart는 백에서 돌아간다.  ;;

 

-컨테이너 정지

docker stop [CONTAINER ID]

-컨테이너 삭제

docker rm [CONTAINER ID]

 

한 가지 꼭 기억해야 할 사항은 컨테이너를 만들 때마다, 새로운 컨테이너가 생성된다는 점이다. 즉, 완전히 다른 녀석들이다. 같은 부모에서 나오지만 뭔가를 할 수록 달라질 것은 명확하다.

그런데 다시 생각해 보면, 이미지만 잘 만들어 놓으면, 붕어빵 찍듯이 빵빵 찍어내어 클러스터링을 할 수 있다. 

즉, 로드벨런스를 붙이고, 서비스를 붙이기만 하면 된다. 또, 작은 서비스들을 stateless 하게 만들어서 백이랑 붙이게 되면, 절대 죽지않는 서비스가 완성 될 수 있다. -_-;

대단하지 않은가?

 

-이미지 삭제

docker rmi [이미지]

 

여기에는 약간의 문제가 있다. 삭제하려고 하니, 이 이미지를 기본으로 컨테이너가 생성되 있는 상태이다.(죽었더라도 컨테이너는 일단 있다는거)

삭제를 하고 싶으면, 이미지로 만들어 낸 모든 컨테이너를 삭제하는 것이 원칙이다. 

따라서 03---컨테이너를 삭제하도록 한 후에 이미지를 삭제하자.

이렇게 하면 이미지를 삭제할 수 있다. 

 

오늘은 기본적인 것만 다루고, 나중에 더 다루어 보자. 안녕~ 

반응형

'SW교육 > Docker' 카테고리의 다른 글

도커를 시작해 봅시다 - 01  (0) 2020.11.16