Skip to main content

docker attach, exec

·116 words·1 min· loading
Table of Contents

두 명령어의 차이점을 모른 채 exec -it 만 쓰고 있었는데, 차이점을 알게 됨

exec
#

  • 추가 명령을 실행!
  • 즉, 실행중인건 건드리지 않고, 새로운 프로세스를 실행 (대부분 쉘)
  • -itinteractive 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 등을 사용해 새 프로세스를 만들어서 접근