두 명령어의 차이점을 모른 채 exec -it 만 쓰고 있었는데, 차이점을 알게 됨
exec#
- 추가 명령을 실행!
- 즉, 실행중인건 건드리지 않고, 새로운 프로세스를 실행 (대부분 쉘)
-it는interactive mode,terminal의 약자
attach#
- 실행중인 컨테이너의
stdio에 연걸 - 새로운 프로세스를 실행 ❌❌, 실행 중인 메인 프로세스에 연결
EX#
Ubuntu 같은 컨테이너는, Docker run 명령어만을 실행했을때, 메인인 /bin/bash가 아무런 입력을 받지 못해서 죽어버림 따라서 docker run -dit ubuntu 으로,
interactive mode로 계속 실행되게 할 것이 강제됨이 상태에서,
attach를 사용하면, 실행 중인 /bin/bash에 연결이 가능함
반대로, mariadb 같은 컨테이너는, 계속 DB가 돌고 있는 상태임 (mariadbd) 따라서, run 할때
-dit옵션이 필요가 없음 (대화형모드를 제공조차 안함)이 상태에서는,
exec -it등을 사용해 새 프로세스를 만들어서 접근