실행 중인 컨테이너 리스트
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
346a90e7f64a httpd "httpd-foreground" 3 minutes ago Up 2 minutes 0.0.0.0:8080->80/tcp, :::8080->80/tcp sleepy_ganguly
ba436e745dee ubuntu:22.04 "/bin/bash" 3 hours ago Up 3 hours ubuntu
일반적인 경우 docker exec를 사용하여 컨터이너에 명령을 실행하고,
필요에 따라 docker attach를 사용하여 컨터에너에 접속하여 설정을 적용하는 경우가 많음.
attach
- 도커에서 실행 중인 컨테이너에 터미널 접속
- $ docker attach [컨테이너 NAME]
$ docker attach ubuntu
root@ba436e745dee:/#
- 서버 콘솔 접속과 동일하게 하나의 세션만 열 수가 있어, 여러 개의 터미널을 열더라도 동일한 화면을 보여 줌.
- 컨테이너 터미널에 종속되어, 터미널에서 나오면 컨테이너가 종료 됨 (Ctrl + P, Q로 나오면 유지 됨)
- 컨테이너가 /bin/bash 로 실행된게 아니면 접속이 불가 (COMMAND 항목)
- sleepy_ganguly 컨테이너를 attach 로 접속 시 접속 불가 (응답 없음) -> 명령어 강제 종료 시 컨테이너 종료 됨.
$ docker attach sleepy_ganguly
^C[Mon Feb 05 09:43:51.077226 2024] [mpm_event:notice] [pid 1:tid 140675521988480] AH00491: caught SIGTERM, shutting down
exec
- 터미널 세션을 연결하지 않고, 새로운 명령을 실행한 결과만 확인.
- $ docker exec [컨테이너 NAME] ls /
$ docker exec ubuntu ls /
bin
boot
dev
etc
- -it 명령을 사용하여 인터랙티브(대화형) 모드를 실행 할 수있음.
- $ docker exec -it [컨테이너 NAME] /bin/bash
$ docker exec -it sleepy_ganguly /bin/bash
root@346a90e7f64a:/usr/local/apache2# ls
bin build cgi-bin conf error htdocs icons include logs modules
root@346a90e7f64a:/usr/local/apache2#
- 컨테이너 터미널과 독립적으로 동작하며, 터미널에서 나오더라도 컨테이너가 종료되지 않음.