Jak korzystać z dokera w skrypcie potoku Jenkins na RHEL7

0

Celem jest uruchomienie obrazu dokera ze skryptu potoku Jenkins.

Węzłem, w którym działa doker, jest maszyna RHEL7.

Na RHEL7 zwykłym użytkownikom nie wolno wykonywać poleceń dokera bez sudo, zobacz ten post Dan Walsh .

Sudo zostało skonfigurowane i skonfigurowałem alias zgodnie z zaleceniami. Jednak Jenkins nie czyta profilu bash.

Następnie usunąłem alias i utworzyłem skrypt o nazwie docker i umieściłem go w katalogu, który teraz dołączam do PATH.

Potok może teraz wykonywać okno dokowane, ale na końcu potoku próbuje wywołać / usr / bin / docker-current iz jakiegoś powodu nie używa skryptu. Nawet jeśli prąd dokera w kroku sh w potoku pokazuje, że znalazł skrypt.

Wszystko to sprawia wrażenie, jakby coś mi umknęło. Jak skonfigurować jenkins / docker, aby jenkins mógł poprawnie uruchamiać obrazy dokerów w celu uruchomienia kroków w moim potoku?

Bram
źródło

Odpowiedzi:

0

Zamiast dawać sudo użytkownikowi Jenkins i próbować zawijać połączenia do dokera za pomocą sudo, dodaj użytkownika Jenkins do grupy dokerów:

Jeśli nie chcesz poprzedzać polecenia dokera za pomocą sudo, utwórz grupę uniksową o nazwie doker i dodaj do niej użytkowników. Po uruchomieniu demona Docker tworzy gniazdo Unix dostępne dla członków grupy dokerów.

Źródło z oficjalnej dokumentacji z bardziej szczegółowymi instrukcjami dotyczącymi zapewniania użytkownikom innym niż root dostępu do demona dokera.

Te instrukcje zastosowałem, aby zapewnić dokerce Jenkins dostęp do RHEL 7 za pomocą skryptowych rurociągów i wydaje się, że działa dobrze.

jayhendren
źródło
Jak wyjaśnia Dan Walsh w poście, który podłączyłem do tego, stanowi zagrożenie dla bezpieczeństwa. Moim celem jest umożliwienie Jenkinsowi uruchamiania kontenerów dokerów bez narażania się na to ryzyko związane z bezpieczeństwem.
Bram
Podanie sudo użytkownikowi Jenkins również stwarza ryzyko dla bezpieczeństwa. W pewnym momencie musisz zaakceptować fakt, że zezwolenie agentowi na uruchomienie pliku wykonywalnego setuid spowoduje ujawnienie powierzchni ataku bez względu na to, jak to zrobisz.
jayhendren