안녕하세요
이번 시간에는 도커에서 컨테이너를 다루는 실습을 진행하려고 합니다.
(컨테이너 생성, 목록 확인, 삭제)
도커 기본 구조
도커는 컨테이너를 생성하고 실행하기 위해 다음과 같이 도커 이미지를 직접 만들어서 Start 하는 방법이 있고 도커 허브에서 이미지를 받아 run 하는 방법이 있습니다.
이미지를 직접 만들어서 컨테이너 생성하기
docker create -it --name myubuntu ubuntu
docker start myubuntu
docker attach myubuntu
명령어 | 설명 |
docker create | 컨테이너를 이미지를 생성하는 명령어 |
-it | 컨테이너와 상호 입출력을 가능하게 하는 옵션(interactive) |
--name | 컨테이너의 이름을 설정 |
myubuntu | 사용자가 지정한 이름 |
ubuntu | 컨테이너를 생성하기 위한 이미지의 이름 |
docker start | 컨테이너 시작 |
docker attach | 컨테이너 내부로 진입 |
이미지를 사용자가 지정하여 직접 만든 후 컨테이너를 실행하여 컨테이너 내부로 들어갑니다.
도커 허브에서 이미지 받아서 컨테이너 생성하기
docker run -it ubuntu
명령어 | 설명 |
docker run | 컨테이너를 생성하고 실행하는 명령어 |
-it | 컨테이너와 상호 입출력을 가능하게 하는 옵션(interactive) |
ubuntu | 컨테이너를 생성하기 위한 이미지의 이름 |
이미지가 이미 있다면 바로 컨테이너가 실행되지만 이미지가 없다면 Docker Hub에서 이미지를 받아와서 실행합니다.
도커 이미지 목록 확인하기
다음과 같이 도커 엔진에 존재하는 이미지의 목록을 확인할 수 있습니다.
도커 컨테이너 목록 확인하기
docker ps
docker ps -a
docker ps는 정지되지 않은 컨테이너 목록을 출력하고 docker ps -a는 컨테이너 상태에 상관없이 출력합니다.
컨테이너 나오기 및 컨테이너 상태 확인하기
Ctrl + p, q는 exit 방법과 다르게 컨테이너를 정지시키지 않고 컨테이너에서 빠져나옵니다. docker (container) ps로 상태를 확인해보면 상태가 Up인 것을 확인할 수 있습니다. 컨테이너가 정지하지 않았기 때문에 이 상태에서는 docker attach를 통한 컨테이너 내부 진입이 가능합니다.
exit 방법은 컨테이너를 빠져나올 때 컨테이너를 정지시킵니다. 마찬가지로 docker ps로 상태를 확인하면 아무것도 나오지 않는데 docker ps -a로 확인해보면 상태가 Exited로 바뀐 것을 볼 수 있는데 컨테이너가 정지됐음을 의미합니다.
컨테이너 이름 짓지 않고 컨테이너 실행
컨테이너를 생성할 때 --name [이름] 없이 생성하게 되면 NAMES 값에 [exciting_babbage]와 같이 [형용사_명사]로 된 이름이 자동으로 생성됩니다. 하지만 이렇게 이름이 지어지면 컨테이너의 수가 늘어날수록 용도가 무엇이고 어떤 서비스를 하는 서버인지 구분하기 어렵기 때문에 식별할 수 있는 이름을 지어주시는 게 좋습니다.
또한 컨테이너 이름 대신 ID 값을 대신해서 써도 괜찮고 컨테이너 ID 값이 길어 치기 어렵다면 2~4자리의 ID 값만 입력해도 괜찮습니다.
컨테이너 삭제하기
docker rm [container ID|container NAMES]
docker rm -f [container ID|container NAMES]
컨테이너를 삭제할 때 한 번 삭제한 컨테이너는 복구할 수 없으므로 삭제할 때는 신중하게 확인하고 삭제해야 합니다. 다음과 같은 명령어를 실행하면 실행 중인 컨테이너는 삭제할 수 없다고 뜨고 삭제하려면 컨테이너를 정지시키거나 강제 삭제(-f 옵션) 해야 한다고 뜹니다.
이것은 Ctrl + p, q로 컨테이너를 나왔기 때문에 아직 컨테이너가 실행중이어서 그런 것인데요. docker attach로 다시 컨테이너에 접근하여 exit로 나와서 실행해주시면 정상적으로 컨테이너가 삭제가 됩니다.
Ctrl + p, q로 컨테이너를 정지시키지 않고 빠져나와도 docker rm -f을 사용하면 컨테이너가 실행 상태여도 컨테이너가 강제적으로 삭제되는 모습입니다.
모든 컨테이너를 손 쉽게 시작/정지/삭제하기
명령어 | 설명 |
docker ps -aq | -a는 컨테이너 상태와 관계 없이 모든 컨테이너 -q는 컨테이너의 ID만 출력 |
docker start $(docker ps -aq) | 모든 컨테이너 시작 |
docker stop $(docker ps -aq) | 모든 컨테이너 정지 |
docker rm -f $(docker ps -aq) | 모든 컨테이너 삭제 |
다음과 같이 한 줄의 명령어로 모든 컨테이너를 시작/정지/삭제할 수 있습니다. 리눅스의 alias로 다음을 지정하면 사용자 지정으로 다음 명령어를 사용할 수 있습니다. 컨테이너를 삭제 시 데이터를 복구할 수 없기 때문에 연습용으로 사용할 것을 권장합니다.
이번 시간에는 컨테이너 다루기 실습을 진행했습니다
(컨테이너 생성, 목록 확인, 삭제)
감사합니다
'Container > Docker' 카테고리의 다른 글
[Docker] Docker Compose를 이용한 손 쉬운 배포 환경 구성하기(Ubuntu, Flask, Nginx, uWSGI, MySQL) (0) | 2023.07.09 |
---|---|
[Docker] 도커의 개념, 사용 목적을 알아보고 설치하기 (1) | 2022.08.17 |
클라우드, 개발, 자격증, 취업 정보 등 IT 정보 공간
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!