Wpis z mikrobloga

Nie rozumiem, jak w końcu działa to USER w #docker. W dokumentacji jest napisane:

The USER instruction sets the user name (or UID) and optionally the user group (or GID) to use when running the image and for any RUN, CMD and ENTRYPOINT instructions that follow it in the Dockerfile.


Mam taki Dockerfile:


Buduję to jako obraz entrypoint-test i odpalam:


Dlaczego program podany w ENTRYPOINT uruchamia się pod user, a nie root, tak jak mu kazałem?
#devops #nieprogramowanie #sysadmin #linux
  • 6
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Djelon: z jednej strony to ma sens. Gdybym nadpisał entrypoint w docker run, to intuicyjnie powinno być to wykonane pod ostatnio podanym userem. Z drugiej strony ten opis w dokumentacji jest wg mnie mylący.
  • Odpowiedz
@Feargan: Dlatego, że CMD albo ENTRYPOINT może być tylko jedno i jest to komenda, która się uruchomi jak odpali się klontener. Kontener jest zbudowany tak, że USER to user, bo "przykrywa" to poprzednią komendę USER. Jak zmiast ENTRYPOINT dassz RUN to dostaniesz "root".
  • Odpowiedz
@yggdrasil:

CMD albo ENTRYPOINT może być tylko jedno

Właściwie to może być ich wiele, tylko te wypisane jako ostatnie będą brane pod uwagę ¯\_(ツ)_/¯
Finalnie, tak - zostajemy z jednym entrypoint w zbudowanym obrazie.
  • Odpowiedz