Docker 컨테이너 라이프 사이클
1. 컨테이너의 개념
- Docker 이미지 인스턴스 실행(실제 응용 프로그램 실행)
- 응용 프로그램과 모든 종속성이 포함
- 커널을 다른 컨테이너와 공유하고 호스트 OS의 사용자 공간에서 격리된 프로세스로 실행
2. 컨테이너 생성(docker container create)
- 이미지에 포함된 Linux 디렉터리 및 파일 집합의 스냅샷을 만들어 컨테이너 생성
- 컨테이너를 생성하는 것 뿐이며, 컨테이너를 구동하지는 않음(컨테이너를 구동할 수 있는 준비상태를 만드는 단계)
3. 컨테이너 생성 및 구동(docker container run)
- 이미지에서 컨테이너를 생성하여 컨테이너상에서 프로세스를 구동
- 서버 프로세스를 백그라운드에서 실행하거나 경우에 따라 강제 종료 가능
- 포트 번호 등 네트워크 설정을 통해 외부에서 컨테이너 프로세스에 액세스 가능
4. 컨테이너 구동(docker container start)
- 중지 상태인 컨테이너를 구동할 때 사용
- 컨테이너에 할당된 컨테이너명 또는 ID를 입력하여 컨테이너 구동
5. 컨테이너 중지(docker container stop)
- 구동 중인 컨테이너를 중지할 때 사용
- 컨테이너에 할당된 컨테이너명 또는 ID를 입력하여 컨테이너 구동
6. 컨테이너 삭제(docker container rm)
- 중지되어 있는 컨테이너를 삭제할 때 사용
- 컨테이너를 삭제하기 전에 docker container stop 명령으로 컨테이너를 중지시켜야 함
7. Docker 컨테이너 라이프 사이클
docker container 명령어
1. 컨테이너 생성 및 구동(docker container run)
# 컨테이너를 백그라운드에서 실행
docker container run [옵션] <이미지명>[:태그명] [값]
docker container run alpine echo "hello from alpine"
docker container run --name alpine -it alpine /bin/sh
echo "hello from alpine"
exit
docker container run --name alpine1 -d -it alpine /bin/sh
옵션 | 설명 |
-d | 백그라운드에서 실행 |
-e | 컨테이너에 환경 변수 전달 |
-p | 호스트와 컨테이너의 포트를 매핑 |
-it | 컨테이너 쉘 내부로 접근(대화식 tty로 연결). exit 명령으로 종료 |
--name | 컨테이너 이름 지정 |
--restart | 커맨드 실행 결과에 따라 컨테이너를 재구동 |
--net | 네트워크 설정(default로 호스트OS와 bridge 접속 사용) |
--cpu-share | 제한 값 설정 가능 |
2. 컨테이너 목록 확인(docker container ls)
# 구동 중인 컨테이너 목록 확인
docker container ls [옵션]
docker container ls
docker container ls -a
옵션 | 설명 |
-a | 실행한 모든 컨테이너 목록 출력 |
--format | 출력 변경시 |
docker ps 명령어와 동일 |
커맨드 실행결과 항목
항목 | 설명 |
CONTAINER ID | 컨테이너 ID |
IMAGE | 컨테이너 기반이 된 이미지 |
COMMAND | 컨테이너에서 실행 중인 커맨드 |
CREATED | 컨테이너 생성 후 경과 시간 |
STATUS | 컨테이너 상태
(restarting | running | paused | exited) |
PORTS | 할당된 포트 |
NAMES | 컨테이너명 |
컨테이너 구동 확인(docker container stats)
# Docker 상에서 동작하는 컨테이너 상태 확인
docker container stats <컨테이너명 또는 ID>
docker container stats alpine1
- 상태 확인 완료 후, 'Ctrl' + 'c'를 누르면 커맨드가 종료
- 커맨드 실행 결과
항목 | 설명 |
CONTAINER | 컨테이너명 또는 ID |
CPU % | CPU 사용률 |
MEM USAGE/LIMIT | 메모리 사용량·컨테이너에서 사용할 수 있는 메모리 제한 |
MEM % | 메모리 사용률 |
NET I/O | 네트워크 I/O |
4. 컨테이너 구동(docker container start)
# 중지되어 있는 컨테이너 구동
docker container start [옵션] <컨테이너명 또는 ID>
docker container start alpine
5. 컨테이너 중지(docker container stop)
# 구동 중인 컨테이너 중지
docker container stop [옵션] <컨테이너명 또는 ID>
docker container stop alpine
- 전체 CONTAINER ID를 입력하지 않아도 앞의 몇 개의 문자만 입력하면 Docker client가 지능적으로 선택
- 컨테이너를 강제로 중지시킬 때에는 docker container kill 커맨드 사용
6. 컨테이너 일시정지(docker container pause)
# 컨테이너 일시정지
docker container pause <컨테이너명 또는 ID>
docker container pause alpine1
- 컨테이너에서 실행 중인 프로세스를 일시정지
7. 컨테이너 재시작(docker container unpause)
# 컨테이너 재시작
docker container unpause <컨테이너명 또는 ID>
docker container unpause alpine1
- 컨테이너에서 일시 정지된 프로세스를 재시작
8. 컨테이너 재시작(docker container restart)
# 컨테이너 재시작
docker container restart [옵션] <컨테이너명 또는 ID>
docker container restart alpine1
- -t 옵션으로 컨테이너 재시작 시간 지정 가능(defaul는 10초)
- 커맨드의 종료 상태(정상 종료인지 아닌지)에 따라 컨테이너를 자동으로 재시작하고자 하는 경우, docker container run 커맨드의 --restart 옵션 사용
9. 컨테이너 삭제(docker container rm)
# 컨테이너 삭제
docker container rm [옵션] <컨테이너명 또는 ID>
docker container rm -f alpine1
- -f 옵션 : 구동 중인 컨테이너를 강제 삭제
- -v 옵션 : 할당된 볼륨을 삭제
10. 컨테이너 세부정보 확인(docker container inspect)
# 컨테이너 세부정보 확인
docker container inspect [옵션] <컨테이너명 또는 ID>
docker container inspect alpine
11. 컨테이너 접속(docker container attach)
# 구동 중인 컨테이너에 접속
docker container attach <컨테이너명 또는 ID>
docker container attach alpine
> echo "hello alpine~"
> exit
12. 컨테이너의 프로세스 실행(docker container exec)
# 구동 중인 컨테이너에서 새로운 프로세스 실행
docker container exec [옵션] <컨테이너명 또는 ID> <커맨드> [값]
docker container exec alpine echo "Run exec command"
13. 컨테이너의 로그 확인(docker container logs)
# 컨테이너의 로그 확인
docker container logs [옵션] <컨테이너명 또는 ID>
docker container logs alpine
14. 컨테이너의 포트 상태 확인(docker container port)
# 구동 중인 컨테이너에서 실행 중인 프로세스의 전송 포트 확인
docker container port <컨테이너명 또는 ID>
15. 컨테이너명 변경(docker container rename)
# 컨테이너명 변경
docker container rename <기존의 컨테이너명> <새로운 컨테이너명>
16. 컨테이너 내에서 파일 복사(docker container cp)
# 컨테이너 내의 파일을 호스트로 복사
docker container cp <컨테이너명 또는 ID>:<컨테이너 내의 파일 경로> <호스트 디렉터리 경로>
docker container cp <호스트 파일> <컨테이너명 또는 ID>:<컨테이너 내의 파일 경로>
17. 컨테이너 내에서 파일 변경 이력 확인(docker container diff)
# 컨테이너가 생성된 시점부터 변경된 이력 확인
docker container diff <컨테이너명 또는 ID>
- A : 파일 추가
- D : 파일 삭제
- C : 파일 변경
'IT > Docker' 카테고리의 다른 글
docker image latest tag 강제로 바꾸기 (0) | 2020.07.21 |
---|---|
Got permission denied while trying to connect to the Docker daemon socket at (0) | 2020.05.19 |
docker image 명령어 (1) | 2019.04.23 |
Docker 정보 확인 (0) | 2019.04.23 |
Docker를 이용한 Wordpress 설치하기 (0) | 2017.12.28 |