2015-01-09 17 views
7

Mam serwer z systemem Döcker EC2 i chciałbym dodać następujące do User Data więc moje prywatne zdjęcia Dockerhub będzie ciągnięty/run, gdy serwer jest uruchamiany, tak jak poniżej:Jak zautomatyzować uruchamianie okna dokowanego z prywatnego repozytorium Dockerhub?

#!/bin/bash 
sudo docker run -p 3333:3333 -d --name Hello myusername/hello 

Ale ja Nie mam pewności co do sposobu uwierzytelniania w celu uzyskania dostępu do prywatnego repo myusername/hello.

Z Githubem tworzysz i przesyłasz klucz wdrożenia, czy Dockerhub oferuje podobną opcję klucza wdrażania?

Odpowiedz

4

UPDATE: zorientowali się jeszcze lepszą drogę, która nie wymaga pieczenia swoje creds w obraz w ogóle. Poniższe pytanie zawiera informacje, które mogą być pomocne przy rozwiązywaniu tego problemu: Is it secure to store EC2 User-Data shell scripts in a private S3 bucket?

Pomaga to w zachowaniu tajemnic w jak najmniejszej liczbie miejsc w danym czasie.


zorientowali się lepszy sposób:

  1. uruchomić maszynę przy użyciu żądanego OS
  2. Install Döcker
  3. prowadzony sudo docker login na tym komputerze
  4. po udanym uwierzytelnieniu Döcker umieści plik .dockercfg w twoim katalogu domowym (np. /home/yourusername/.dockercfg). Docker będzie używać tego pliku do wszystkich uwierzytelnień od teraz.
  5. Utwórz obraz urządzenia, który będzie używany podczas uruchamiania wszystkich nowych instancji. Ten obraz zostanie teraz zapakowany w plik .dockercfg.
  6. Dodaj następujący kod do User Data Twojego urządzenia obrazu:
#!/bin/bash 
sudo docker run -p 3333:3333 -d --name Hello yourusername/hello 

Teraz po uruchomieniu instancji oparty na komputerze obrazu twoje polecenia sudo docker run uda się ciągnąc prywatnych repo pod warunkiem, że użytkownik uruchamiasz polecenie docker pod plikiem .dockercfg w swoim katalogu domowym.

Mam nadzieję, że pomoże każdemu, kto to wymyśli.

2

Aktualizacja: Zobacz inne moje odpowiedzi na lepszą metodę, która nie wymaga ciężko kodowania swoich creds do skryptu User Data


Aby uzyskać instancję ciągnąć prywatną Dockerhub repo po uruchomieniu was może uwierzytelnić po prostu uruchamiając sudo docker login w User Data skryptu rozruchu przed komendą sudo docker run, zupełnie tak:

#!/bin/bash 
sudo docker login -u <username> -p <password> -e <email> 
sudo docker run -p 3333:3333 -d --name Hello myusername/hello 

Ten requi Res twardo koduje twoje kredyty Dockerhub do twojego skryptu User Data, co jest mniej niż idealne, ale działa.

2

Udało mi się znaleźć lepszy sposób, jeśli chcesz używać ECS (który tworzy dla Ciebie instancję EC2) i nie chcesz używać pamięci masowej w swoim rozwiązaniu. mam mieszane rozwiązań sugerowanych przez @AJB (właściwość „dane użytkownika” i wyjście „login doker”), opiszę ten proces:

  1. korzystanie docker login na komputerze (nie potrzebne sudo tak daleko, jak tylko mogę powiedzieć), po pomyślnym zalogowaniu metę cat .docker/config.json a otrzymasz coś takiego:

{"auths":{"https://index.docker.io/v1/":{"auth":"KEY","email":"EMAIL"}}}

  1. policjanta y KEY i EMAIL bok
  2. na ECS the - stworzyć cluster, service i task definition (właściwość obrazu ustawiony na yourusername/hello), to automatycznie generuje konfigurację EC2
  3. w menu EC2 - przejdź do Uruchom Konfiguracja menu i wybrać launch configuration generowane przez ECS
  4. kliknięcie przycisku copy launch configuration i edytować do smaku (można zmienić AMI chociaż ja polecam pobyt z Amazon Linux AMI chyba trzeba ustawić nową nazwę opisową)
  5. wewnątrz edytować szczegóły -> Zaawansowane Detai ls edytować właściwość danych użytkownika i dodać następujące (wymienić klucz i email):
mkdir /home/ec2-user/.docker/ 
echo '{"auths":{"https://index.docker.io/v1/":{"auth":"KEY","email":"EMAIL"}}}' >> /home/ec2-user/.docker/config.json 
sudo stop ecs 
sudo start ecs 
  1. przełącznik do menu Auto Skalowanie grupy i wybrać jeden wygenerowany przez ECS
  2. kliknij Edit i wybierz właśnie utworzony konfiguracji startowej, z wyjątkiem
  3. przełącznik menu instancji i zakończyć działającą instancję
  4. skończysz!

nową instancję wkrótce zostanie uruchomiona przez Auto Skalowanie Group, która obecnie wykorzystuje nową konfigurację, która umożliwia dostęp do prywatnej repozytorium na koncie DockerHub.

+0

To jedyne rozwiązanie, które działało. AWS jest do dupy. – harishkashyap

+0

tak, myślę, że to błąd. Śledziłem zarówno http://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-config.html, jak i http://docs.aws.amazon.com/AmazonECS/latest/developerguide/private- auth.html który nie działał (oba typy uwierzytelniania); aby być jedną z bezpiecznych stron, piszę swoje poświadczenia hubu do /etc/ecs/ecs.config również. – Ethan

Powiązane problemy