Docker

docker attach vs exec

Superkill 2017. 1. 4. 17:24
반응형

attach와 exec 둘다 컨테이너에 접속하는 커맨드이다.

 

 

 

attach는 실행되고 있는 container에 접속할 때 사용합니다.

추가 ) 공식 문서 설명을 빌리자면 현재 사용 중인 터미널의 표준 입력, 표준 출력, 표준 에러들을 컨테이너에 연결하는 것입니다.
이렇게 연결을 하게 되면 표준 입력을 통해 컨테이너에 입력을 전달할 수 있고 표준 출력, 표준에러를 통해 로그 및 에러로그를 확인할 수 있습니다.
표준 출력, 표준 에러를 통해 나오는 값들은 도커파일 또는 컨테이너 실행 시 입력된 ENTRYPOINT / CMD 프로세스의 출력값들입니다.

참고로 container의 pid 1은 리눅스에 의해 특별하게 관리되고 있어서 기본 액션 시그널을 무시한다. 그래서 따로 코드상에서 정해놓지 않은 이상 SIGINT 또는 SIGTERM 같은 것으로 종료되지 않는다.

 

exec는 container에서 새로운 프로세스를 실행시킬 때 사용한다. container에 bin/bash를 실행시켜서 쉘을 띄우는데도 사용한다. exec를 사용해서 실행되는 명령어는 pid 1이 살아있을 때만 실행되고 container가 재시작 될때는 같이 재시작 되지 않습니다.

그리고 만약 container가 pause되면 docker exec 명령어는 에러를 내고 종료됩니다.