Docker

완벽한 IT 인프라 구축을 위한 Docker_Chapter04_Docker 명령

강용민 2022. 12. 25. 18:09

4.1 Docker 이미지 조작

이미지 다운로드(docker image pull)

Chapter3에서 했다시피 이미지 취득은 docker image pull 명령어를 사용한다.

docker image pull [옵션] 이미지[:태그명]

이미지 목록 표시

docker image ls [옵션] [리포지토리명]

 

 

4.2 Docker 컨테이너 생성/ 시작/ 정지

이미지가 만들어졌으면 컨테이너를 생성할 수 있다.

 

Docker 컨테이너 라이프 사이클

컨테이너에는 다음과 같은 라이프 사이클이 존재한다.

Docker 컨테이너 상태

  • 컨테이너 생성(docker container creeate 명령)
    • 이미지로부터 컨테이너를 생성한다.이미지의 실체는 'Docker에서 서버 기능을 작동시키기 위해 필요한 디렉토리 및 파일들'이다. docker container create 명령을 실행하면 이미지에 포함될 Linux의 디렉토리와 파일들의 스냅샷을 취한다. 스냅샷이란 스토리지 안에 존재하는 파일과 디렉토리를 특정 타이밍에서 추출한 것을 말한다.
  • 컨테이너 생성 및 시작(docker container run 명령)
    • 이미지로부터 컨테이너를 생성하고, 컨테이너 상에서 임의의 프로세스를 시작한다. 
  • 컨테이너 시작(docker container start 명령)
    • 정지 중인 컨테이너를 시작할 때 사용한다. 컨테이너에 할당된 컨테이너 식별자를 지정하여 컨테이너를 시작한다.
  • 컨테이너 정지(docker container stop 명령)
    • 실행 중인 컨테이너를 정지시킬 때 사용한다. 컨테이너에 할당된 컨테이너 식별자를 지정하여 컨테이너를 정지한다. 또한 컨테이너 삭제 전에 중지를 시켜야하기에 필요하기도 한다.
  • 컨테이너 삭제(docker container rm 명령)
    • 컨테이너를 삭제할 때 사용한다. docker container rm 명령을 사용하여 정지 중인 컨테이너 프로세스를 삭제한다.

 

4.3 Docker 컨테이너 네트워크

Docker 컨테이너끼리 통신을 할 때는 Docker 네트워크를 통해 수행한다.

 

네트워크 목록 표시(docker network ls)

docker network ls [옵션]

 Docker는 기본값으로 bridge, host, none, 이 세 개의 네트워크를 만든다. 그리고 네트워크를 명시적으로 지정하지 않고 Docker 컨테이너를 시작하면 기본값인 'bridge' 네트워크로 Docker 컨테이너를 시작한다.

 

네트워크 작성(docker network create)

docker network create [옵션] 네트워크명

 

네트워크 연결(docker network connect/ docker network disconnect)

docker network connect [옵션] 네트워크명 컨테이너명

Docker 컨테이너를 Docker 네트워크에 연결할 때는 docker network connect 명령을, 네트워크에서 연결을 해제할 때는 docker network disconnect 명령을 사용한다. 연결 후에는 동일한 네트워크상에 있는 다른 컨테이너와 통신을 할 수 있다. 컨테이너의 연결은 IP 주소뿐만 아니라 컨테이너명 또는 컨테이너 ID도 그대로 사용할 수 있다.

 

네트워크 상세 정보 확인

docker network inspect [옵션] 네트워크

 

네트워크 삭제

docker network rm [옵션] 네트워크

 

4.4 가동 중인 Docker 컨테이너 조작

가동 컨테이너 연결(docker container atteach)

예를 들어 /bin/bash가 실행되고 있는 sample이라는 이름의 컨테이너에 연결하려면 다음과 같이 명령을 실행한다.

docker container attach sample

 

가동 컨테이너에서 프로세스 실행(docker container exec)

가동 중인 컨테이너에서 새로운 프로세스를 실행할 때는 docker container exec 명령을 사용한다. 예를 들어 웹 서버와 같이 백그라운드에서 실행되고 있는 컨테이너에 엑세스하고 싶을 때 docker container attach 명령으로 연결해도 쉘이 작동하지 않는 경우는 명령을 접수할 수가 없다.

docker container exec [옵션] <컨테이너 식별자><실행할 명령> [인수]

 

가동 컨테이너의 프로세스 확인(docker container top)

가동 중인 컨테이너에서 실행되고 있는 프로세스를 확인할 때는 docker container top 명령을 사용한다.

docker container top 컨테이너명