Docker에서 크롬 : CAP_SYS_ADMIN 대 권한? [닫은]


11

내 테스트 환경에서 Docker 내에서 chromedriver + chrome을 실행하고 있습니다.

최신 CoreOS 업그레이드까지 모든 것이 잘 작동했습니다.

다음은 작동하는 것으로 보이는 버전입니다.

VERSION=1185.5.0
VERSION_ID=1185.5.0
BUILD_ID=2016-12-07-0937

그리고 이것은 크롬이 코어 덤프를 일으키는 최신 버전입니다.

VERSION=1235.4.0
VERSION_ID=1235.4.0
BUILD_ID=2017-01-04-0450

변경 사항을 살펴보면도 커가 1.11.x에서 1.12.x로 업그레이드 setns()되어 컨테이너 내부의 호출 이 끊어졌습니다 . setns()Chrome에서 네임 스페이스를 만드는 데 사용됩니다.

다음은 예제 출력입니다.

jsosic-coreos-test-20161207 ~ # docker --version
Docker version 1.11.2, build bac3bae

이 상자의 한 컨테이너 내부에서 :

[root@2939f21ecfaa /]# /opt/google/chrome/google-chrome
[57:57:0107/015130:ERROR:browser_main_loop.cc(261)] Gtk: cannot open display:

이것은 새로운 버전이 그것을 깨뜨린 방법입니다.

jsosic-coreos-test-2017-01-04 ~ # docker --version
Docker version 1.12.3, build 34a2ead

[root@13ab34c36c82 /]# /opt/google/chrome/chrome
Failed to move to new namespace: PID namespaces supported,
  Network namespace supported,
  but failed: errno = Operation not permitted
Aborted (core dumped)

내가 찾은 것은 --cap-add=SYS_ADMIN또는 컨테이너를 시작하면 --privilegedChrome이 예상대로 작동 한다는 것입니다 .

이 두 스위치의 차이점은 무엇입니까? 어떤 기능을 사용할 수 --privileged있습니까?

setns()보안을 손상시키지 않고 컨테이너 내부를 허용 할 수 있습니까?


고마워 github.com/docker/for-linux/issues/496을 사용하여 문제를 일으켰 습니다. 수정해야한다고 생각합니다.
Merc

나는 거의 2 년이 너무 늦었지만 여전히 관심이 있다면 위의 티켓에 훨씬 더 좋고 안전한 해결책이 있습니다.
Merc

원래 포스터가 답변을 업데이트하지 않으면 (그는 전혀 활성화되지 않은 것 같습니다) 다른 것을 수락 할 수 있는지 알려주십시오. 나는 이것에 시간을 낭비했습니다. 다른 사람들을 구할 시간이 몇 시간인지 상상할 수 있습니다.
Merc

답변:


7

AFAICS이 문서는 제안 컨테이너에 필요한 기능을 부여하기보다는 사용하여 --privileged스위치를. 권한 모드로 실행 하면 컨테이너에 모든 기능 이 부여됩니다 (문서가 최신 상태 인 경우 정확히 첫 번째 URL에 나열된 기능 ).

간단히 말해, 스위치 --cap-add=SYS_ADMIN와 비교하여 컨테이너에 더 작은 기능의 하위 집합을 컨테이너에 부여합니다 --privileged. Docker 설명서 (첫 번째 URL)의 예제는 필요할 때 SYS_ADMIN또는 NET_ADMIN기능을 추가하는 것을 선호하는 것 같습니다 .


감사합니다, exec_linux.go도움이되었습니다. 도킹 저장소를 복제하여 grep하려고 시도했지만 몇 시간이 걸렸기 때문에 잊어 버렸습니다.)
Jakov Sosic

그냥 크롬을 실행하는 데, 여기에 나열된 훨씬 더 나은 솔루션이있다 : github.com/docker/for-linux/issues/496#issuecomment-441149510은 그 사람들이 내가 설명 할 일을 할 수 있도록 그 답을 업데이트하는 것이 매우 도움이 될 것이라고 생각 바로 그 의견. 동의하면 알려주십시오.
Merc

1

한 가지 차이점은 --privileged는 / dev 및 / sys를 RW로 마운트하고 SYS_ADMIN이 RO로 마운트하는 것입니다. 이는 권한있는 컨테이너가 시스템의 장치에 대한 모든 액세스 권한을 가지고 있음을 의미합니다. SYS_ADMIN은이를 제공하지 않습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.