컨테이너
- 기본 개념은 이 글에서
컨테이너 실행
- docker engine이 이미지를 로컬에서 탐색
- 있으면 실행하고, 없으면 docker registry 탐색
- 기본 registry인 docker hub에서 동명의 이미지를 내려 받음
- 컨테이너 실행
관련 명령어
- docker container run <이미지> <명령어>: 이미지를 컨테이너화하고 명령어를 실행
- docker container start <컨테이너 ID>(or <컨테이너 이름>): 특정 컨테이너를 시작함.
- docker container ls: 실행 중인 컨테이너 목록 확인
- docker ps: 위 명령어와 동일
- docker container ls -a: 실행됐던 모든 컨테이너 목록 확인
- docker container exec <컨테이너 ID>(or <컨테이너 이름>) <명령어>: 특정 컨테이너에 명령어를 실행
참고
- docker container로 된 명령들은 container를 생략할 수 있다.
컨테이너 라이프 사이클
관련 명령어
- docker create --name <컨테이너 이름> <이미지>: 컨테이너를 생성함
- docker start <컨테이너 ID>(or <컨테이너 이름>): 컨테이너를 실행함
- docker run --name <컨테이너 이름> <이미지>: create + start
- docker pause <컨테이너 ID>(or <컨테이너 이름>): 컨테이너를 일시 중지
- docker unpause <컨테이너 ID>(or <컨테이너 이름>): 컨테이너 일시 중지 해제
- docker stop <컨테이너 ID>(or <컨테이너 이름>): 컨테이너를 정지
- docker stop $(docker container ls -aq): 실행 중인 모든 컨테이너 정지
- docker rm <컨테이너 ID>(or <컨테이너 이름>): 컨테이너를 삭제. stop이 선행되어야 함.
- docker kill <컨테이너 ID>(or <컨테이너 이름>): 컨테이너를 강제 종료
Pause, Stop, Kill 차이
- Pause
- SIGSTOP 신호를 사용하여 프로세스를 일시 중지.
- 메모리를 사용 중지하지만 할당된 메모리가 해제되지는 않음
- Stop
- SIGTERM 신호를 프로세스에 전달.
- SIGTERM 신호는 종료 신호이지만, 프로세스를 정리하고 종료할 수 있게 기회를 주는 신호. (우아한 종료)
- 일정 시간이 지난 후 프로세스는 SIGKILL 신호를 수신하여 컨테이너를 중지 후 메모리 해제.
- Kill
- SIGKILL 신호를 즉시 전달
- 혹은 -signal 옵션으로 지정한 신호를 전달
컨테이너 예제
# 단순하게 컨테이너에 명령어를 넣고 실행
docker run alpine hostname
# bash와 같이 터미널 세션을 유지하면서 상호작용 가능한 명령은 -it 옵션으로 입력 및 가상 터미널을 열어줄 수 있음.
# --rm 옵션으로 실행 후 바로 삭제 가능
docker run -it --rm ubuntu bash
# 컨테이너 내부에서 실행되는 명령들
ls /
ps aux
cat /etc/issue
# sql처럼 백그라운드에 띄워놓는 경우는 --detach(-d)옵션으로 백그라운드에 지속 가능
# 물론 mysql 이미지의 CMD가 터미널을 유지할 수 있는 명령어이기 때문에 가능한 것
# -e 옵션으로 환경 변수 셋팅
docker run -d --name mydb -e MYSQL_ROOT_PASSWORD=qwer1234 mysql
# 특정 컨테이너에 대한 상태 확인
docker container logs mydb
docker container top mydb
# 실행 중인 컨테이너에 명령어 추가 삽입
docker exec -it mydb mysql --user=root --password=$MYSQL_ROOT_PASSWORD --version
# 실행 중인 컨테이너의 가상 터미널을 열어서 명령어를 입력해도 됨
docker exec -it mydb sh
mysql --user=root --password=$MYSQL_ROOT_PASSWORD --version
'GitOps > Docker' 카테고리의 다른 글
[Docker] 도커 네트워크 (0) | 2025.01.12 |
---|---|
[Docker] 웹사이트 배포 (0) | 2025.01.12 |
[Docker] 이미지 (0) | 2025.01.11 |
[Docker] 개념 (0) | 2025.01.09 |