Skip to Content
Suffering builds character
아카이브25.devopsDocker특징1.컨테이너 관리9.컨테이너 내부 관리

9.컨테이너 내부 관리

1. Dockerhub에서 도커 이미지 받고 컨테이너 생성 후 실행하기

diamol/base라는 이미지를 내려 받고 컨테이너 생성 후 바로 실행

terminal
docker container run --interactive --tty diamol/base
terminal
Unable to find image 'diamol/base:latest' locally latest: Pulling from diamol/base 31603596830f: Pull complete 792f5419a843: Pull complete Digest: sha256:787fe221a14f46b55e224ea0436aca77d345c3ded400aaf6cd40125e247f35c7 Status: Downloaded newer image for diamol/base:latest

→ 해당 이미지가 없기 때문에 Dockerhub에서 받아온 후 컨에티너 생성 후 컨테이너 내부로 진입

도커 컨테이너 내부의 쉘이 표시됨

terminal
/ #

해당 컨테이너의 hostname 조회

terminal
hostname

실행 결과

terminal
2aeb42eca2c1

→ 조회된 Hostname은 Container ID와 동일함

2. 또 다른 SSH를 통해 EC2 쉘에 접속

EC2에 접근하기 위해 ssh 명령어를 통해 또 다른 Shell에 접속

terminal
ssh -i "ec2-rds-test.pem" ubuntu@ec2-13-124-39-165.ap-northeast-2.compute.amazonaws.com

→ 자신의 주소로 접속할 것

새로 접속한 쉘에서 아래의 명령어 수행

2-1-1. 현재 실행 중인 모든 컨테이너 정보 조회
terminal
docker ps -a

실행 결과

terminal
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 2aeb42eca2c1 diamol/base "/bin/sh" 5 minutes ago Up 5 minutes elastic_raman

→ STATUS에는 컨테이너가 실행 중인 상태임을 표시하는 Up 이 표시됨

2-1-2. 실행 중인 프로세스 조회
terminal
docker top 2aeb4

→ CONTAINER ID의 앞 4글자 정도만 입력해도 인식함

2-1-3. 컨테이너에서 실행되었던 모든 명령어 로그 기록 조회
terminal
docker logs 2aeb4

→ 실행된 명령어 기록이 출력됨

2-1-4. 컨테이너에 대한 자세한 정보 조회
terminal
docker inspect 2ae

실행 결과

JSON
[ { "Id": "2aeb42eca2c139a15e79cd17869fa636e604dcd16692cd3eb4c9f3f03fdcb78f", "Created": "2024-03-03T07:50:31.767886689Z", "Path": "/bin/sh", "Args": [], "State": { "Status": "running", "Running": true, "Paused": false, "Restarting": false, "OOMKilled": false, "Dead": false, "Pid": 5988, "ExitCode": 0, "Error": "", "StartedAt": "2024-03-03T07:50:32.183924088Z", "FinishedAt": "0001-01-01T00:00:00Z" },

→ 컨테이너 ID, 생성 시각, 상태 등 다양한 정보가 JSON 형식으로 출력됨

3. 도커 컨테이너 내부에서 벗어나기

3-1. 현재 실행 중인 모든 컨테이너 정보 조회
terminal
docker ps -a

실행 결과

terminal
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 2aeb42eca2c1 diamol/base "/bin/sh" 5 minutes ago Up 5 minutes elastic_raman

→ STATUS에는 컨테이너가 실행 중인 상태임을 표시하는 Up 이 표시됨

3-2. 컨테이너 내부에서 벗어나기

/ #로 시작하는 도커 컨테이너 내부 쉘에서 exit 명령어를 통해 컨테이너 내부에서 벗어나기

terminal
/ # exit
3-3. 현재 실행 중인 모든 컨테이너 정보 조회
terminal
docker ps -a

실행 결과

terminal
2aeb42eca2c1 diamol/base "/bin/sh" 26 minutes ago Exited (0) 6 minutes ago elastic_raman

→ STATUS에는 컨테이너가 중지되었음을 표시하는 Exited 가 표시됨

정리하면, 컨테이너는 내부에서 별도의 애플리케이션이 실행 중이거나 사용자가 컨테이너 내부에서 벗어나지 않는 한 중지되지 않음

반대로, 컨테이너 내부의 애플리케이션의 프로세스가 종료되거나 사용자가 쉘을 벗어날 경우, 컨테이너도 중지됨

4. 모든 컨테이너, 이미지 제거

다음 실습을 위해 모든 컨테이너, 이미지 제거

terminal
docker system prune -a

→ 사실 컨테이너, 이미지 외 볼륨, 네트워크 등 모든 도커 오브젝트를 제거하는 명령어

Last updated on