본문 바로가기

Computer/Docker

Docker container 실행 - docker run (1)

반응형

지난 포스트의 다양한 도커 이미지 커맨드를 통해 이미지를 생성했으면 컨테이너를 생성할 수 있습니다. 도커 이미지는 docker에서 서버 기능을 작동시키기 위해 필요한 디렉토리 및 파일들로서 컨테이너 실행 시 이미지에 포함된 파일과 디렉토리의 스냅샷을 생성하고 호스트 OS 상에서 프로세스로 실행됩니다. 이때 docker run 커맨드로 이미지로부터 컨테이너를 생성하고 실행할 수 있습니다.

위의 그림과 같이 docker create 커맨드로 컨테이너를 생성할 수 있으나 create 명령어는 컨테이너를 생성만 할 뿐 실행하지는 않으므로 일반적으로 docker run 을 통해 컨테이너를 생성함과 동시에 실행합니다.

도커 컨테이너와 관련된 대표적인 명령어로는,

1) 정지된 컨테이너를 시작하는 docker container start
2) 실행 중인 컨테이너를 정지시키는 docker container stop
3) 컨테이너를 삭제하는 docker container rm 

과 같은 여러 명령어들이 있으며 이번 포스트에서는 컨테이너를 실행시키는 docker container run 에 대해 알아보겠습니다. 참고로 "container" 명령어는 생략해도 무방합니다.

docker run

도커 컨테이너의 생성 및 시작은 docker container run 명령으로 실행합니다.

docker run [옵션] 이미지명[:태그명] [인수]

 

다음과 같은 명령어는 centos라는 이름의 이미지를 바탕으로 test1이라는 이름의 컨테이너를 실행하고 컨테이너 안에서 /bin/cal (달력을 표시하는 리눅스 명령어) 명령을 실행합니다.

1) docker run 2) -it 3) --name 'test1' 4) centos 5) /bin/cal

위 명령어에서

  1. 컨테이너를 생성 및 실행하고 (docker run)
  2. docker run의 i (interactive, 컨테이너의 표준입출력을 키보드와 화면을 통해 연결), t (tty, 텍스트 기반의 터미널을 에뮬레이션) 하는 옵션으로 도커 컨테이너 안에서 쉘 커맨드를 다룰 수 있으며 (-it)
  3. 컨테이너의 이름을 지정하는 옵션으로 생략 시 컨테이너명이 랜덤으로 설정되며 (--name 'test1')
  4. 이미지명 (centos)
  5. 컨테이너에서 실행할 명령 (/bin/cal)

을 가리킵니다. 맨 마지막 인자인 커네이너에서 실행할 명령을 싱량하면 컨테이너 안의 쉘을 자동으로 실행합니다. 컨테이너를 종료하기 위해서는 ctrl+d 키를 누르거나 exit 명령을 이용합니다.

 

백그라운드 실행

도커 컨테이너를 '-d, detach' 옵션을 통해 백그라운드 프로세스로 실행할 수 있습니다. 다음 커맨드는 centos라는 이름의 이미지를 바탕으로 컨테이너를 생성하고 localhost에 대해 ping 명령을 실행하는 것으로 옵션 -d 를 통해 컨테이너를 백그라운드로 실행합니다. Interactive 옵션으로 실행한 경우에는 명령의 결과가 콘솔에 표시되었지만 백그라운드 모드로 실행 시 컨테이너의 ID가 콘솔에 표시됩니다.

docker run -d --name 'test1' centos /bin/ping localhost

백그라운드 프로세스로 실행되고 있는지 확인하기 위해 docker container logs 명령을 사용하며 -t 옵션을 통해 타입스탬프도 같이 표현할 수 있습니다. 다음 그림과 같이 백그라운드로 계속 ping을 보내는 것을 확인할 수 있으며 명령을 실행한 이후에 컨테이너가 살아 남은 것을 알 수 있습니다.

혹은 docker attach 컨테이너 ID (컨테이너 이름) 을 통해 현재 호스트 OS 쉘의 표준입출력을 해당 도커 컨테이너의 붙임으로써 실행 중인지 확인할 수 있습니다.

반응형

'Computer > Docker' 카테고리의 다른 글

Dockerfile (1) - 개요  (0) 2021.04.29
Docker container 실행 - docker run (2)  (0) 2021.04.14
Docker 이미지 커맨드  (0) 2021.04.03
Docker의 작동 구조  (0) 2021.03.27
Docker의 기능  (0) 2021.03.27