Mam plik Dockerfile rozszerzający FROM
obraz, który deklaruje VOLUME
. Czy istnieje sposób na zastąpienie dyrektywy VOLUME
w taki sposób, że "usuwa" VOLUME
?"Usuń" wolumin w pliku Dockerfilm
Odpowiedz
nr
Jedynym sposobem, aby to zrobić, to jeśli sklonować Dockerfile
obrazu używanego jako podstawy jednego (jednej w FROM
) i zdjąć dyrektywę VOLUME
ręcznie. Następnie skompiluj go i używaj jako swojego podstawowego w swojej FROM
.
Czy istnieje powód takiego ograniczenia? Myślę, że może to być związane z bezpieczeństwem, ale nie mogę wymyślić, w jaki sposób nadużywać usuwania woluminu w dziecięcej wersji Dockerfile. – Mitja
@Mitja Nie, po prostu dyrektywy Dockerfile są napisane w taki sposób, że nie można przesłonić woluminu deklarowanego przez rodzica. Jest to specjalnie napisane [tutaj] (https://docs.docker.com/engine/reference/builder/#notes-about-specifying-volumes): 'Jeśli dowolne kroki budowania zmieniają dane w woluminie po zadeklarowaniu , zmiany te zostaną odrzucone. " –
Dzięki! Brzmi dla mnie tak, jak powinno być ostrzeżenie w czasie budowy, że tak się właśnie stało. – Mitja
Zobacz [* Zresetuj właściwości odziedziczone z obrazu nadrzędnego *] (https://github.com/moby/moby/issues/3465) (otwarty problem w chwili pisania). – saaj
Mam ten sam problem i musiałem spędzić wiele godzin próbując dowiedzieć się, dlaczego dany subdir go nie zapisał. W końcu odkryłem, że niektóre poziomy wyżej, ktoś był "sprytny", aby przypisać VOLUME do tego konkretnego katalogu:/ – BjornW