Alpine Linux 3.7
호스트에서 dockerd 17.10.0-ce
을 사용하여 발생하는 이상한 문제를 추적하고 있습니다. 이 호스트의 모든 컨테이너에 대해 보이지만 Docker 이미지의 진입 점/명령으로 시작된 프로세스 트리는 컨테이너 자체 내에서 볼 수 없습니다. 비교해 보면 우분투 호스트에서 동일한 이미지는 프로세스 트리가 PID 1로 표시됩니다.Alpine Linux 3.7의 Docker 컨테이너 : 이상한 pid 1이 컨테이너의 pid 네임 스페이스에 표시되지 않습니다.
다음은 예제입니다.
% docker top testcontainer
PID USER TIME COMMAND
6729 root 0:00 /bin/sh -c sleep 1000000
6750 root 0:00 sleep 1000000
이제
, 그 컨테이너 내부 쉘을 시작하고 프로세스를 확인 :
% docker run -d --name testcontainer --rm busybox /bin/sh -c 'sleep 1000000'
는 프로세스가 제대로 dockerd으로 볼 수 있습니다 확인
명시 적으로 알려진 엔트리 포인트/명령을 사용하여 컨테이너를 실행 목록 :
% docker exec -t -i testcontainer /bin/sh
/# ps -ef
PID USER TIME COMMAND
6 root 0:00 /bin/sh
12 root 0:00 ps -ef
우리의 진입 점 명령 (/ bin/sh -c) 'sleep 1000000')이 컨테이너 내부에서 보이지 않습니다. 심지어 top
을 실행해도 동일한 결과가 나타납니다.
여기에 누락 된 것이 있습니까? 동일한 도커 엔진 버전을 사용하는 Ubuntu 호스트에서 결과는 예상대로입니다. 이것은 컨테이너 PID 공간이 어떻게 분리되어 있는지에 대한 문제를 일으키는 Alpine의 강화 된 커널과 관련 될 수 있습니까?
조사 할 부분에 대한 도움을 주시면 감사하겠습니다.