IT Technology/Cloud

Docker 기본명령어(컨테이너 실행, 조작 명령)

by빵수 2021. 3. 25. 15:45
728x90
반응형

컨테이너 실행, 조작 명령어

 

docker container create

 

  • 이미지를 기반으로 컨테이너를 만든다. 만들기만 하고 시작하지는 않는다. 
  • 이미지의 실체는, 도커에서 서버 기능을 작동시키기 위해 필요한 디렉토리 및 파일들이며, 구체적으로는 /etc /bin 같은 디렉토리, 파일들이다.
  • 컨테이너를 생성하면, 이미지에 포함된 리눅스 디렉토리와 파일들의 스냅샷을 만든다.
  • 이 스냅샷으로 컨테이너를 생성한다. 스냅샷이라고 표현했는데, 그냥 복사했다고 봐도 무방하다.
  • run이 create를 대체하기 때문에 딱히 혼자 쓰이지 않는다.
  • 컨테이너 생성 후 나오는 긴 문자열은 컨테이너 아이디이다. 도커 컨테이너를 고유하게 식별하기 위해 사용된다.
  • 예시 : 9f5add6253a20d5a2a807502060dd8c4cbb86a59a5f52e6857ebac58e8634be7

 

옵션 

a, --attach=[STDIN | STDOUT | STDERR] : 표준 입력, 표준 출력, 표준 에러 출력을 연결 

--cidfile="파일명" : 컨테이너 아이디를 파일로 출력

 

 

# docker container create nginx

 

만든 후에, docker container ls 에서, STATUS 부분에 Created 를 확인할 수 있다.

 

docker container attach

 

 

  • docker container attach 컨테이너명 
  • 가동 중인 컨테이너에 연결한다. /bin/bash로 연결한 것이 아님.
  • attach로 연결하면, 기존에 연결된 터미널이 있으면(예를 들어 bash로 붙은 거라던지, 다른 attach라던지) 똑같이 복제되어 작동한다
  • 연결 분리 (종료 아님) ctrl+p, ctrl+q 입력.
  • 만약 ctrl+c 를 해버리면, 종료가 되어서 서비스가 down 된다!

  - 실행 중인 컨테이너에 붙으면, 그 컨테이너의 상태로 빠진다. 

  - nginx 컨테이너에 attach 했는데, nginx 만 실행했을 뿐 따로 쉘은 없으므로 프롬프트가 없게 된다.

 

 

Docker container exec

 

  • 가동 중인 컨테이너에서 프로세스 또는 명령어 실행. 
  • 현재 컨테이너 자체에서 실행 중인 프로세스와는 별개다. 
  • docker container exec 옵션 컨테이너명 실행할 명령 인수
  • 컨테이너의 터미널로 들어가는 방법으로 자주 사용된다. /bin/bash 사용. 또한 attach가 안될 때도 사용한다.
  • exec 명령은 실행 중인 컨테이너에서만 가능하다.

옵션 

--detach, -d : 명령을 백그라운드에서 실행 

--interactive, -i : 컨테이너의 표준 입력을 연다. 

--tty, -t : pseudo-TTY를 할당한다. 

--user, -u : 사용자명을 지정한다.

 

Ex)

  • 배쉬 쉘 실행 : docker container exec -it webserver /bin/bash 
  • 명령 직접 실행하기 : docker container exec -it webserver /bin/echo "Hello world" 
  • 다른 컨테이너에 ping 날리기 : docker exec -t web01 ping 172.17.0.6
반응형