2016-09-13 15 views

Odpowiedz

11

Istnieje możliwość przyznania kontenerowi dostępu do okna dokowanego, aby mógł on odradzać inne pojemniki na hoście. Można to zrobić poprzez wystawienie gniazdo Döcker wewnątrz pojemnika, np

docker run -v /var/run/docker.sock:/var/run/docker.sock --name containerB myimage ... 

Teraz, jeśli masz klienta docker dostępne wewnątrz pojemnika, będzie w stanie kontrolować demona Döcker na hoście i używać, aby odradz swój "pojemnik A".

Przed próbą takiego podejścia, należy zdawać sobie sprawę ze względów bezpieczeństwa: dostęp do dokowanym jest taka sama jak posiadające root dostępu na gospodarza, co oznacza, że ​​jeśli aplikacja internetowa posiada zdalne kompromis właśnie wręczył klucze do gospodarz dla atakujących. Jest to opisane dokładniej in this article.

+0

Podążyłem za wskazówkami. Następnie ręcznie skopiowałem 'docker' i' docker-compose' do kontenera. "Docker-compose" działa dobrze wewnątrz kontenera. Jednak muszę skopiować '/ usr/lib/x86_64-linux-gnu/libltdl.so.7.3.1' z mojego hosta do kontenera, a następnie wewnątrz kontenera utworzyć dowiązanie symboliczne przez' ln -sf/usr/lib /x86_64-linux-gnu/libltdl.so.7.3.1/usr/lib/x86_64-linux-gnu/libltdl.so.7'. Wewnątrz kontenera: 'ldd/usr/bin/docker' wszystkie biblioteki są teraz rozwiązane i mogę uruchomić' docker' i 'docker-cocmpose' wewnątrz kontenera. – ifelsemonkey

7

Jest to możliwe po zamontowaniu gniazda dokowania.

Kontener A
Spowoduje wydrukowanie czasu na standardowe wyjście (i jego logi) i wyjście.

docker run --name contA ubuntu date 

Pojemnik B
Sztuką jest, aby zamontować gniazdo Döcker gospodarza następnie zainstalować klienta Döcker na pojemniku. Następnie będzie on wchodził w interakcję z demonem, tak jakby używałeś dockera z hosta. Po zainstalowaniu okna dokowanego wystarczy ponownie uruchomić kontener A co 5 sekund.

docker run --name contB -v /var/run/docker.sock:/var/run/docker.sock ubuntu bash -c " 
apt-get update && apt-get install -y curl && 
curl -sSL https://get.docker.com/ | sh && 
watch --interval 5 docker restart contA" 

Widać, że Contà jest nazywany przez patrząc na jego dzienników

docker logs contA 

powiedział, że Docker ma naprawdę na długie usług eksploatacji. W Docker Github pojawiają się dyskusje na temat określania krótkotrwałych "usług" dla takich rzeczy jak konserwacja, zadania cron itp., Ale nic nie zostało postanowione, a tym bardziej zakodowane. Więc najlepiej jest zbudować swój system, aby pojemniki były podniesione i pozostać w górze.

+0

Nie od razu podałem swoją odpowiedź, więc najpierw pojawił się @larsks. Zatrzymam go tutaj, ponieważ ma kod, który może ci się przydać. – Alkaline

+0

To działa. Nie jestem pewien, czy dobrym pomysłem jest zainstalowanie okna dokowanego wewnątrz okna dokowanego, co byłoby kolejnym pytaniem. Ponieważ @larsks pojawił się jako pierwszy, po prostu dałem ci znak. –

+0

Działa, ale kod nie jest dla mnie zbyt jasny. Jestem zaintrygowany przez https://get.docker.com/ use. W każdym razie, należy zainstalować docker-ce w kontenerze dokowania (apt-get install docker-ce), a następnie użyć "docker restart containername", aby ponownie uruchomić inny kontener dokowania – Somum

Powiązane problemy