Test ortamımda Docker'ın içinde chromeriver + chrome kullanıyorum.
En son CoreOS yükseltmesine kadar her şey iyi çalışıyordu.
Bunlar işe yarayan sürümlerdir:
VERSION=1185.5.0
VERSION_ID=1185.5.0
BUILD_ID=2016-12-07-0937
Ve bu, kromun çarpmasına neden olan daha yeni bir sürüm:
VERSION=1235.4.0
VERSION_ID=1235.4.0
BUILD_ID=2017-01-04-0450
Değişikliklere bakıldığında, liman işçisinin 1.11.x sürümünden 1.12.x sürümüne yükseltildiği anlaşılıyor setns()
. setns()
, Chrome tarafından bir ad alanı oluşturmak için kullanılır.
Bu örnek çıktılar:
jsosic-coreos-test-20161207 ~ # docker --version
Docker version 1.11.2, build bac3bae
Bu kutudaki bir kabın içinden:
[root@2939f21ecfaa /]# /opt/google/chrome/google-chrome
[57:57:0107/015130:ERROR:browser_main_loop.cc(261)] Gtk: cannot open display:
Yeni sürüm böyle kırdı:
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)
Bulduğum şey, kapsayıcılardan birini --cap-add=SYS_ADMIN
veya --privileged
- Chrome ile başlattığımda beklendiği gibi çalışıyor.
Bu iki anahtar arasındaki fark nedir? Hangi yetenekler etkinleştiriliyor --privileged
?
Ve setns()
güvenlikten ödün vermeden konteynerin içine izin verebilir miyim ?