Docker 톺아보기 8탄 - 도커 컨테이너 살펴보기(실습편)
도커에 대해 이론적으로 알아보았으니 실습을 진행해보자!!
지긋지긋한 이론 말고 재밌는 실습 말이야!!!!
일단 실습을 위해 ubuntu와 centos에 로그인하고 MobaXterm을 실행하고 연결하자!
그리고 ubuntu와 centos 모두 탭에서 Duplicate Tab을 눌러서 세션을 복제해주자!
그래서 각각 하나는 root 계정으로, 나머지 하나는 guru 계정으로 로그인 하자!
그리고 나서 모든 탭에서 아래 명령어를 통해 도커가 잘 설치되어있고 도커 데몬이 서비스 중인지 확인하자!
docker version
systemctl status docker
잘 설치되어있고 서비스 중인 것을 확인했다면 q 를 눌러서 빠져나오자!
이번에는 우분투 guru 계정에서 아래 명령어를 통해 Docker Hub에서 nginx 라는 컨테이너 이미지가 있는지 확인해보자!
docker search nginx
그럼 이렇게 좌라라라라라ㅏ락 나오지!
nginx 라는 이름을 가진 컨테이너 이미지들을 보여주고 있어!
그럼 우리의 시스템에 컨테이너 이미지는 뭐가 있나 확인해볼까???
docker image ls
docker images
# 두 명령은 같은 명령
나는 hello-world 라는 이름의 이미지 하나 있어!
아마 앞 챕터에서 hello-world 이미지를 사용해서 남아있나봐!
이 이미지는 쓸 일이 없으니까 지워주도록 하자!
아래 명령을 통해서 지워줄 수 있어
docker rmi -f hello-world #hello-world 컨테이너 이미지를 강제 삭제
docker rm $(docker ps -a -f status=exited -q) #exited 상태인 도커 프로세스를 찾아서 모두 삭제
그리고 한번 확인해보자!
우분투 root 계정 탭으로 이동해서 아래 명령어들을 입력해보자!
docker ps -a
docker images -a
ls /var/lib/docker/overlay2 # 레이어를 관리하는 디렉토리
#docker container ls -a # docker ps -a와 같은 명령(docker에서는 프로세스가 곧 컨테이너다)
위 4개의 명령어를 다 실행했는데 아무것도 나오지 않는다면 성공!!
(사실 마지막 명령은 l 이라는 이름의 디렉토리 하나만 있으면 돼!)
그럼 nginx 컨테이너 이미지를 가져와보자!
다시 guru 계정 탭으로 이동해서 아래 명령어 중 하나를 입력해줘!
docker pull nginx #버전을 명시하지 않으면 항상 최신버전(latest)을 가져온다
docker pull nginx:latest #최신 버전의 nginx 컨테이너 이미지를 특정해서 가져온다
#docker pull nginx:버전 #특정 버전의 컨테이너 이미지를 가져올 수 있다
이렇게 nginx 컨테이너 이미지를 가져왔어!
(중간에 멈춘다면 엔터를 한번 쳐줘!)
(완료되면 아마 root 계정 탭에서 아래 사진 처럼 뜰거야!! 무시하고 엔터!!)
그리고 컨테이너 이미지를 잘 가져왔는지 root 계정 탭에서 확인해보자!
docker images -a
ls /var/lib/docker/overlay2
잘 가지고 온게 보인다!!
overlay2 디렉토리에는 원래 있던 l 디렉토리를 제외하고 6개의 디렉토리가 생긴걸 볼 수 있어
이건 nginx 컨테이너 이미지가 6개의 레이어로 이루어졌다는 뜻이야!
아직 컨테이너가 만들어진건 아니야!
컨테이너를 만들기 위한 거푸집(이미지)만 창고에서 꺼내온 것 뿐!!
이제 이 컨테이너 이미지를 컨테이너화 시킬거야!
다시 guru 계정 탭으로 이동해서 진행해보자!
docker run --name web -d -p 80:80 nginx
위 명령어는 이런 뜻이야
nginx의 최신버전을 web이라는 이름으로 컨테이너를 생성하고, 도커호스트 80포트와 도커컨테이너 80포트로 접속하여 데몬으로 실행한다
(도커호스트는 컨테이너가 설치된 운영체제를 말해!)
그러면 이렇게 컨테이너 ID가 출력이 되면서 컨테이너를 생성(설치)하고 실행했어!
잘 실행됐나 보자아~
아주 잘 실행중인 걸 볼 수 있어!
nginx라는 웹 서버를 구동시킨 것이기 때문에 curl 명령어로 확인도 할 수 있어!
아래 명령어를 입력해서 확인해보자!
curl localhost:80
입력하면 웹 페이지 정보가 뜨게 돼
그럼 한번 아래 명령어로 컨테이너(프로세스)를 중단시켜보자!
docker stop web
중단 시키면 curl로 요청해도 서버가 중단되어 있어서 응답을 받을 수 없겠지?!
중단도 잘 됐다!!
이번에는 중단시킨 web 이라는 이름의 컨테이너를 지워보자!
docker rm web
이렇게 컨테이너(프로세스)는 지워졌지만 컨테이너 이미지는 그대로 남아있는 것을 볼 수 있어!
컨테이너 이미지도 지우자!
docker rmi nginx
컨테이너 이미지도 잘 지워졌다!!
오늘은 여기까지!!
다음 챕터에서는 컨테이너를 만들어 볼거야!
다들 좋은 하루 되길 바라!!
뇽! 안!

References
따라하며 배우는 도커(따배도) - Youtube 이성미 강사