docker version
해당 명령어가 잘 작동된다는 것은
도커 cli가 도커 엔진과 통신이 되고 있음을 의미한다.
(Verified cli can talk to engine.)
docker info
현재 컨테이너가 71개가 있다고 나오는데,
django, rabbitmq, celery를 통한 비동기 테스크 큐 작업으로 인해
정확히 종료를 시키지 않아서 발생한 문제라고 판단된다.
도커 엔진의 configuration을 확인할 수 있다.
docker
간단하고 단순하게 docker라고만 입력해보자.
수많은 명령어들을 전부 알 필요는 없다.
다만, Mangement command들은 알아야 한다.
이미지 : application we want to run
컨테이너 : 이미지의 인스턴스
즉, 동일 이미지에 대해 수많은 컨테이너들이 존재할 수 있다.
Nginx 웹 서버 이미지
로 확인해보자.
참고로, 'registry'(레지스트리)
란,
도커 허브에서 받는 기본 default 이미지를 말한다.
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(강제)명령어로 삭제시킬 수도 있다.