이전 포스트 : 도커 설치를 위한 WSL 설정에서 도커 설치 및 임의의 컨테이너 한두개를 실행하는 것까지 수행했다.
이제 도커 시스템에 대한 간단한 이해를 진행해보자
docker0
Docker을 실행, 정확히는 Docker 데몬이 시작되면 가장 먼저 가상 네트워크 브릿지
그러니까 컨테이너 간 네트워킹 환경을 제공해주는 네트워크 인터페이스가 가장 먼저 실행되는데 이것이 docker0이다.
모든 컨테이너는 사전에 커스텀 네트워킹 설정을 진행하지 않고 그냥 default모드로 실행한다면 기본적으로 docker0에 연결되어 각 컨테이너별로 IP address를 부여받는다
이 docker0의 정보에 대해서도 확인이 가능한데 이에 대한 명령어는
WSL 기준으로는 아래와 같다.
docker network inspect bridge | Select-String "Subnet"
참고로 docker을 사전에 만져본 유저라면
뭔가 명령어가 살짝 다르다는 느낌이 들 것이다.
이것은 현재 필자의 PC환경은 Windows - WSL 가상화 환경에서 Docker을 구동하기에
명령어 스크립트 체계가 bash가 아닌 PowerShell이기 때문이다.
사실.. 개발자라면 우분투나 맥 쓰는게 거의 일반적이긴 한데...
필자는 이악물고 windows 쓸거다

아무튼 docker0도 IP 주소를 할당받으며, 이것에 대한 정보를 확인하는 구문 실행결과를 확인해 보고,
현재 실행중인 다른 컨테이너의 IP Address도 확인이 가능하니 이에 대한 명령어와 실행결과도 같이 첨부한다.
docker inspect -f '{{.Name}} - {{.NetworkSettings.IPAddress}}' $(docker ps -q)

dockerhub
이전 포스트부터 도커 hub에 대한 이야기를 계속 하고 있는데 사용자들이 커스텀 도커 이미지를 업로드 하면 이걸 다운로드 받을 수 있는 서비스 플랫폼이라고 보면 된다.
git허브의 도커버전? 이렇게 이해하는게 적합할 듯 하다.

도커 허브를 이해했으니 도커 허브에서 임의의 이미지를 받아보자

대충 허브에서 도커 이미지가 어떻게 제공되는지 알았으니 아래 이미지처럼 명령어를 입력하여 도커 허브의 이미지를 다운받고 빌드를 실행하자
docker pull centos:7

다음으로 다운로드 받은 파일
즉, Dockerfile는 여러 계층으로 되어 있다는데... 대충 찾아보니

이렇게 레이어를 쌓아서 하나의 이미지를 만든다고 한다.
물론 사용자는 이런 상세한 내용은 알 필요없고
쉽게 설명을 하자면 Dockerfile를 생성할 때
FROM, LABEL, COPY, RUN, CMD라는 명령어를 사용할 텐데
이 명령어로 감싸진 구문이 하나의 레이어가 된다.. 뭐 이렇게 이해하고 넘어가면 될 것 같다.
아무튼 다운로드 받고 빌드가 완료된 도커 이미지를 컨테이너로 등록 및 실행을 해보자
docker run -it --name=my-centos-container-1 centos:7 bash

위 명령어로 본다면
docker를 첫 실행(컨테이너등록)을 같이 진행하며, -it 이부분은
i : 컨테이너랑 표준입력 규격으로 상호작용한다
t : 가상터미널(tty)로 상호작용한다.
마지막에 있는 bash는
실행한 컨테이너가 리눅스 계열이니 리눅스 계열의 CMD창이라 볼 수 있는 bash쉘 스크립트를 실행시켜라
이렇게 보면 된다.
다운받은 도커 실행해보기
먼저 실행중인 container만의 상태를 확인하고 싶다면 아래의 명령어를 수행하면 되며,
docker ps
이전에 Docker 데몬에서 실행되었던 모든 컨테이너의 상태를 보고 싶다면 `-a'옵션을 추가하면 된다
docker ps -a

등록된 컨테이너를 지우고 싶다면 아래의 명령어를 수행하자.
docker rm [등록된 컨테이너 이름]
물론 등록된 컨테이너가 실행중이라면 정지를 시켜야 삭제가 가능하다
docker stop [실행중인 컨데이너 이름]

이렇게 삭제한 컨테이너는 새로 등록을 할 때는
docker run 명령으로 등록 및 실행을 해주면 되며,

실행중인 컨테이너를 끄고 싶을때는
docker stop [중단하고 싶은 컨테이너명]

컨테이너 리스트에 등록은 되었으나, 실행중이지 않은 컨테이너를 실행하고 싶을때는
docker start [실행시키고 싶은 컨테이너명]

마지막으로 실행 중인 컨테이너를 또다른 CMD창에서 접속을 하고 싶을 때는 아래의 명령어를 사용하자
(새로운 프로세스를 실행한다 보면 된다.)
exec -it [접속하고 싶은 컨테이너명] [하고싶은 실행구문]
