Kopiowanie obrazów Dockerowych z jednego repozytorium do innego

Czasami zachodzi potrzeba przeniesienia obrazu kontenera Dockerowego z jednego repozytorium do jakiegoś innego. Może to być spowodowane przez to, że nasze usługi są zintegrowane z konkretnym dostawcą i potrzebują mieć obraz w tym konkretnym repozytorium. Czasem chcemy pobrać obraz z publicznego repo, przetestować go, doinstalować jakieś pakiety, zmodyfikować konfigurację i wrzucić do prywatnego repozytorium gdzie trzymamy tylko whitelistowane obrazy. Możemy tego dokonać w kilku prostych krokach.

Logowanie do prywatnego repozytorium

Na początku trzeba się zalogować do prywatnego repozytorium do którego będziemy wrzucać obrazek. Przykładowo dla Amazonowego ECR wykonujemy komendę:

eval `aws ecr get-login --no-include-email --profile=twoj-wybrany-profil --region=us-east-1`

Normalnie komenda aws ecr get-login zwraca polecenie dockera, wraz z parametrami takimi jak username, token i host, pozwalającymi się zalogować. Dodanie eval na początku powoduje, że polecenie od razu się wykona i nie trzeba go kopiować. Po tym kroku jesteśmy zalogowani do repozytorium  ECR.

Pobranie obrazu źródłowego

Kolejnym krokiem jest pobranie wybranego obrazu z repozytorium źródłowego. Robimy to zwykłą komendą pull. Powiedzmy, że chcemy pobrać ostatnią wersję LTS obrazu Ubuntu z publicznego repozytorium Docker Hub.

docker pull ubuntu:latest

Jeśli chcemy pobrać obraz z innego repozytorium podajemy jego adres, nazwę obrazu i wersję w taki sposób (przykładowo dla Amazona):

docker pull repoid.dkr.ecr.us-east-1.amazonaws.com/nazwa-obrazu:wersja

Zmiana tagów obrazu i wypchnięcie go do naszego repozytorium

Teraz pozostały nam dwa kroki do wykonania. Najpierw tagujemy pobrany obraz adresem nowego repozytorium, nazwą pod którą ma być widoczny i wersją:

docker tag ubuntu:latest repoid.dkr.ecr.us-east-1.amazonaws.com/nazwa-obrazu:wersja

Ostatnim krokiem jest wepchnięcie obrazu do nowego repozytorium. Używamy standardowej komendy push używając nowo nadanego tagu.

docker push repoid.dkr.ecr.us-east-1.amazonaws.com/nazwa-obrazu:wersja

I to wszystko. Obraz jest już w naszym repozytorium, możemy z niego korzystać pobierając go używając komendy docker pull i nowego tagu.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *