container - 1

hyuckhoon.ko·2020년 9월 7일
0

What I learned in first year

목록 보기
106/146

1. 기초 명령어


  1. docker version

해당 명령어가 잘 작동된다는 것은
도커 cli가 도커 엔진과 통신이 되고 있음을 의미한다.
(Verified cli can talk to engine.)





  1. docker info

현재 컨테이너가 71개가 있다고 나오는데,
django, rabbitmq, celery를 통한 비동기 테스크 큐 작업으로 인해
정확히 종료를 시키지 않아서 발생한 문제라고 판단된다.

도커 엔진의 configuration을 확인할 수 있다.





  1. docker

간단하고 단순하게 docker라고만 입력해보자.
수많은 명령어들을 전부 알 필요는 없다.

다만, Mangement command들은 알아야 한다.






2. 도커 이미지 vs 도커 컨테이너

이미지 : application we want to run
컨테이너 : 이미지의 인스턴스

즉, 동일 이미지에 대해 수많은 컨테이너들이 존재할 수 있다.


Nginx 웹 서버 이미지 로 확인해보자.

참고로, 'registry'(레지스트리)란,
도커 허브에서 받는 기본 default 이미지를 말한다.



3. 실습(Nginx 이미지)


1) docker container run --publish 80:80 nginx


이제 웹 브라우저를 확인해보자.
localhost 또는 localhost:80 을 입력한다.

새로고침을 여러번 눌러봤다.

cli에 GET 메소드와 함께 로그가 기록되는 것을 볼 수 있다.

맨 처음 명령어를 다시 바라보자.

docker container run --publish 80:80 nginx

좌측의 80은 host IP에게 할당된 포트번호다.
우측의 80은 트래픽을 도커 컨테이너의 IP로 라우팅한다는 의미다.



host IP를 8080 포트로 할당해보자.
Ctrl + C를 눌러 도커를 중지시키고,
docker container run --publish 8080:80 nginx를 입력한다.



detach라는 명령어를 추가해 보자.

docker container run --publish 8080:80 --detach nginx

백그라운드에서 작동하라는 명령어다.

마치 작동하지 않는 것처럼 보인다.
컨테이너의 unique id 만 출력되고 있기 때문이다.

하지만 작동되고 있다.



도커 컨테이너의 리스트를 확인해보는 명령어는 정말 유용하다.

docker container ls


현재 작동중인 컨테이너를 중지시키자.

docker container stop 79f89

컨테이너의 unique id의 앞 부분 숫자를 몇 개를 입력하면 된다.
3개만 입력해도 되고, 5개를 입력해도 된다.

단, 3개만 입력할 경우, 첫 3개의 숫자가 동일한 컨테이너들이 모두 종료된다.



docker container ls 명령어는
현재 구동(run)중인 컨테이너만 보여준다.

모든 상태의 컨테이너를 보고 싶은 경우

docker container ls -a 를 입력하면 된다.


매우 재밌는 부분이다.
매번 도커 이미지를 run 할 때마다
매번 새로운 도커 컨테이너 (인스턴스)가 생성된다는 것을 의미하기 때문이다.

좀 전에 실습한 nginx 웹 서버 이미지에 대한 컨테이너 역시 총 3개가 생성됐다.


다시 말하면,
docker container run ~ 이라는 명령어는 항상 새로운 컨테이너를 생성한다.

존재하는 컨테이너를 작동시킬때는 docker container start ~ 로 시작하는 명령어를 사용하면 된다.



또 한가지 재밌는 사실은

컨테이너의 unique id 만 'unique'한 것이 아니다.

컨테이너의 이름 또한 'unique'하다.

특별히 지정하지 않는 한 랜덤하게 지정해 준다.

그렇다면, elephant1004라는 이름으로 컨테이너를 지정해 보자.

docker container run --publish 8080:80 --detach --name elephant1004 nginx


역시, 컨테이너의 unique id만 출력됐다. --detach 명령어를 사용했기 때문이다.

다시 docker container ls 를 통해 컨테이너를 확인해보자.







도커 컨테이너의 로그를 확인해보자.

docker container logs elephant1004



마지막으로 컨테이너를 삭제시키자.

docker container rm bc7

만약 작동(run)중인 컨테이너의 경우, 삭제시킬 수 없다는 메시지를 확인할 수 있을 것이다.

docker container stop 후 rm 를 할 수도 있지만,

docker container rm -f bc7 과 같이

force(강제)명령어로 삭제시킬 수도 있다.






0개의 댓글