9.컨테이너 내부 관리
1. Dockerhub에서 도커 이미지 받고 컨테이너 생성 후 실행하기
diamol/base라는 이미지를 내려 받고 컨테이너 생성 후 바로 실행
terminal
docker container run --interactive --tty diamol/baseterminal
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
/ # exit3-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