docker attach를 이용하면 현재 실행중인 컨테이너 ID 혹은 컨테이너 이름으로 컨테이너에 연결해서 출력을 확인하거나 표준입력을 이용해서 제어 할 수 있다.
CTRL-c 키를 입력하면 SIGKILL 시그널이 컨테이너에 전달된다. 만약 --sig-proxy가 true 라면 CTRL-c를 입력했을 때 SIGINT 가 전달된다. 또한 CTRL-p, CTRL-q 키를 이용해서 컨테이너를 유지시킨채로 detach 할 수 있다.
클라이언트가 docker attach를 이용해서 컨테이너에 연결하면, 도커는 애플리케이션 출력을 위해서 약 1MB 정도의 메모리 버퍼를 제공한다. 이 버퍼가 채워지면 API의 연결이 프로세스의 출력 속도에 영향을 미치기 시작한다. 프로세스가 느려진다는 의미다. 따라서 대량의 출력을 생성하는 프로그램에 대해서 docker attach를 실행하는 것은 좋은 생각이 아니다. 이 경우에는 docker logs 명령을 이용해서 로그에 접근해야 한다.
-it옵션 즉 표준입력과 터미널을 가진 컨테이너에 대해서 여러 클라이언트가 attach 할 경우, 이들은 터미널을 공유하게 된다. 클라이언트 입장에서는 tmux 처럼 보일 것이다.
예제
실행중인 컨테이너를 attach 하고 detach 하기
$ docker run -d --name topdemo ubuntu /usr/bin/top -b
$ docker attach topdemo
top - 02:05:52 up 3:05, 0 users, load average: 0.01, 0.02, 0.05
Tasks: 1 total, 1 running, 0 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.1%us, 0.2%sy, 0.0%ni, 99.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 373572k total, 355560k used, 18012k free, 27872k buffers
Swap: 786428k total, 0k used, 786428k free, 221740k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 17200 1116 912 R 0 0.3 0:00.03 top
top - 02:05:55 up 3:05, 0 users, load average: 0.01, 0.02, 0.05
Tasks: 1 total, 1 running, 0 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.0%us, 0.2%sy, 0.0%ni, 99.8%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 373572k total, 355244k used, 18328k free, 27872k buffers
Swap: 786428k total, 0k used, 786428k free, 221776k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 17208 1144 932 R 0 0.3 0:00.03 top
top - 02:05:58 up 3:06, 0 users, load average: 0.01, 0.02, 0.05
Tasks: 1 total, 1 running, 0 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.2%us, 0.3%sy, 0.0%ni, 99.5%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 373572k total, 355780k used, 17792k free, 27880k buffers
Swap: 786428k total, 0k used, 786428k free, 221776k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 17208 1144 932 R 0 0.3 0:00.03 top^C
$ echo $?
0
$ docker ps -a | grep topdemo
7998ac8581f9 ubuntu:14.04 "/usr/bin/top -b" 38 seconds ago Exited (0) 21 seconds ago topdemo
Ctrl-c키를 입력하면 컨테이너가 detach되면서 종료되는 걸 확인 할 수 있다.
만약 컨테이너를 detach 하더라도 계속 실행되게 하고 싶다면 sig-proxy=false로 실행하면 된다.
$ docker attach --sig-proxy=false topdemo
top - 15:59:50 up 50 min, 0 users, load average: 0.10, 0.08, 0.18
Tasks: 1 total, 1 running, 0 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.8 us, 0.3 sy, 0.0 ni, 98.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 8042824 total, 737328 free, 2043860 used, 5261636 buff/cache
KiB Swap: 3998716 total, 3998716 free, 0 used. 5315808 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 36532 2964 2604 R 0.0 0.0 0:00.01 top^C
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
40889058ee37 ubuntu "/usr/bin/top -b" 4 minutes ago Up 17 seconds topdemo
Docker attach
옵션
설명
예제
Recent Posts
Archive Posts
Tags