티스토리 뷰

Docker/Docker 기초

Docker 실습

로또_ 2019. 9. 17. 01:42

여기서 다뤄볼 것은 아래와 같습니다.

 

  • Docker 버전확인
  • pull 명령으로 이미지 받기
  • images 명령으로 이미지 목록 출력하기
  • run 명령으로 컨테이너 생성하기
  • ps명령으로 컨테이너 목록 확인하기
  • start 명령으로 컨테이너 시작하기
  • restart 명령으로 컨테이너 재시작하기
  • attach 명령으로 컨테이너에 접속하기
  • exec 명령으로 외부에서 컨테이너 안의 명령 실행하기
  • stop명령으로 컨테이너 정지하기
  • rm 명령으로 컨테이너 삭제하기
  • rmi 명령으로 이미지 삭제하기

 


 

 

Docker 버전확인

 

 


 

pull 명령으로 이미지 받기

 


 

images 명령으로 이미지 목록 출력하기

 


 

run 명령으로 컨테이너 생성하기

docker run <옵션> <이미지 이름> <실행할 파일> 형식입니다. 여기서는 ubuntu이미지를 컨테이너로 생성한 뒤 ubuntu 이미지 안의 /bin/bash를 실행합니다. 이미지 이름 대신 이미지 ID를 사용해도 됩니다. -i(interactive), -t(pseudo-tty) 옵션을 사용하면 실행된 Bash 셸에 입력 및 출력을 할 수 있습니다. --name 옵션으로 컨테이너의 이름을 지정할 수 있습니다. 이름을 지정하지 않으면 Docker가 자동으로 이름을 생성하여 지정합니다. exit를 입력하여 Bash 셸에서 빠져나옵니다. 우분투 이미지에서 /bin/bash 실행 파일을 직접 실행했기 때문에 여기서 빠져나오면 컨테이너가 정지됩니다.

 


 

ps명령으로 컨테이너 목록 확인하기

docker ps 형식입니다. -a 옵션을 사용하면 정지된 컨테이너까지 모두 출력하고, 옵션을 사용하지 않으면 실행되고 있는 컨테이너만 출력합니다. 우리는 앞에서 컨테이너를 생성할 때 이름을 hello로 지정했으므로 컨테이너 목록에서도 hello로 표시됩니다.

 

 


 

start 명령으로 컨테이너 시작하기

방금 정지한 컨테이너를 다시 시작한것입니다. docker start <컨테이너 이름> 형식입니다. 컨테이너 이름 대신 컨테이너 ID를 사용해도 됩니다. 다음 명령을 입력하여 실행된 컨테이너의 목록을 출력합니다.

hello컨테이너가 시작되었습니다! 현재 실행중입니다.

 


 

restart 명령으로 컨테이너 재시작하기

docker restart <컨테이너 이름> 형식입니다. 컨테이너 이름 대신 컨테이너 ID를 사용해도 됩니다.

 


 

attach 명령으로 컨테이너에 접속하기

이제 시작한 컨테이너에 접속해보겠습니다.  docker attach <컨테이너 이름> 형식입니다. 컨테이너 이름 대신 컨테이너 ID를 사용해도 됩니다. 우리는 /bin/bash를 실행했기 때문에 명령을 자유롭게 입력할 수 있지만, DB나 서버 애플리케이션을 실행하면 입력은 할 수 없고 출력만 보게 됩니다. Bash 셸에서 exit 또는 Ctrl+D를 입력하면 컨테이너가 정지됩니다. 여기서는 Ctrl+P, Ctrl+Q를 차례대로 입력하여 컨테이너를 정지하지 않고, 컨테이너에서 빠져나옵니다.

터미널을 2개 켜서 접속을 해보았습니다. 결과는 서로 다른 클라이언트로 인식하는게 아닌 터미널창이 똑같이 복사되었습니다. 예를 들면 한쪽 터미널에서 ps를 치면 또 다른 터미널에서도 동시에 ps가 입력되어 실행되어 집니다. 제가 생각하는 서버의 접속 방식이 아니였던거 같습니다.

 

제가 원하는 정답을 찾았습니다. 중복해서 접속하려면 attach 명령어가 아닌 exec 명령어를 사용합니다.

 

 


 

 

 

exec 명령으로 외부에서 컨테이너 안의 명령 실행하기

현재 컨테이너가 /bin/bash로 실행된 상태입니다. 이번에는 /bin/bash를 통하지 않고 외부에서 컨테이너 안의 명령을 실행해보겠습니다. docker exec <컨테이너 이름> <명령> <매개 변수> 형식입니다. 컨테이너 이름 대신 컨테이너 ID를 사용해도 됩니다. 컨테이너가 실행되고 있는 상태에만 사용할 수 있으며 정지된 상태에서는 사용할 수 없습니다. 컨테이너 안의 Echo 명령을 실행하고 매개 변수로 "Hello World"를 지정했기 대문에 Hello World가 출력됩니다. docker exec명령은 이미 실행된 컨테이너에 apt-get, yum명령으로 패키지를 설치하거나, 각종 데몬을 실행할 때 활용할 수 있습니다.

 


 

stop명령으로 컨테이너 정지하기

 

먼저 실행된 컨테이너 목록을 출력합니다.

다음 명령으로 컨테이너를 정지합니다

실행된 컨테이너 목록을 출력합니다.

사라졌습니다!

 


 

rm 명령으로 컨테이너 삭제하기

 

생성된 컨테이너를 삭제하여 보겠습니다.

docker rm <컨테이너 이름> 형식입니다. 컨테이너 이름 대신 컨테이너 ID를 사용해도 됩니다.

docker ps -a를 입력하여 컨테이너가 삭제되었는지 확인합니다.

삭제되어서 아무것도 안나옵니다.

 

 


 

rmi 명령으로 이미지 삭제하기

 

이번에는 이미지를 삭제하여 보겠습니다.

docker rmi <이미지 이름>:<태그> 형식입니다. 이미지 이름 대신 이미지 ID를 사용해도 됩니다. docker rmi ubuntu처럼 이미지 이름만 지정하면 태그는 다르지만 ubuntu 이름을 가진 모든 이미지가 삭제됩니다.

 

이미지가 삭제되었다 확인해봅니다.

아무것도 없습니다!

 

도커 컨테이너 이미지 생성부터 삭제까지, 일반적인 도커의 기능을 다뤄보았습니다.

반응형