Jaki jest obecny sposób instalowania Dockera na instancji AWS EC2 z uruchomionym interfejsem AMI? Nastąpił zapowiedź Docker Enterprise Edition i teraz chcę wiedzieć, czy coś się zmieniło. Do tej pory korzystałem z Dockera yum install docker
w wersji 1.12.6, build 7392c3b/1.12.6
teraz (3/3/2017). Jednak repozytorium Docker na GitHub mówi mi, że są już nowsze wersje.
Pamiętam, że oficjalne repozytorium Dockera (pakietu) miało jakiś pakiet docker-engine
zastępujący docker
jakiś czas temu, a teraz wydaje się, że dzielą pakiet na, docker-ce
i docker-ee
gdzie np. „Docker Community Edition (Docker CE) nie jest obsługiwany w systemie Red Hat Enterprise Linux”. [ Źródło ]
Więc czy jest nadal poprawne użycie powyższego, aby uzyskać najnowszą stabilną wersję Dockera w instancjach EC2 z uruchomionym AMI, czy też muszę pobrać pakiet z innego miejsca (a jeśli tak, to który, CE lub EE)?
Odpowiedzi:
Aby uruchomić Docker na AWS AMI, powinieneś wykonać poniższe kroki (wszystkie zakładają, że przełączyłeś się do instancji EC2).
Zaktualizuj pakiety w swoim wystąpieniu
[ec2-user ~]$ sudo yum update -y
Zainstaluj Docker
[ec2-user ~]$ sudo yum install docker -y
Uruchom usługę Docker
[ec2-user ~]$ sudo service docker start
Dodaj użytkownika ec2 do grupy dokerów, aby móc wykonywać polecenia Docker bez użycia sudo.
[ec2-user ~]$ sudo usermod -a -G docker ec2-user
Powinieneś być w stanie uruchomić wszystkie polecenia dokera bez konieczności
sudo
. Po uruchomieniu czwartego polecenia musiałem się wylogować i zalogować ponownie, aby zmiana zaczęła obowiązywać.źródło
Najtrudniejszą częścią tego wszystkiego było wymóg pojemnik-selinux. Znajdź najnowszą wersję w http://mirror.centos.org/centos/7/extras/x86_64/Packages/ i zainstaluj ją najpierw. Ponadto instancje EC2 mogą nie mieć odpowiedniego generatora entropii, więc
haveged
może być konieczna instalacja.Reszta pochodzi z https://docs.docker.com/install/linux/docker-ce/centos/ z dodatkiem haveged i firewalld. Wszystkie te muszą być wykonane jako root tak
sudo
odpowiednio.Włącz SELinux , zmieniając
/etc/sysconfig/selinux
go naNastępnie uruchom ponownie instancję, wydając
shutdown -r now
Wykonanie
sudo docker version
powinno ustąpić w momencie publikacji ...źródło
Na https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-optimized_AMI.html
Możesz zobaczyć historię na https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-ami-versions.html
źródło
Oprócz mojej poprzedniej odpowiedzi. Jeśli używasz Terraform, stworzyłem również moduł Terraform, którego można użyć do stworzenia Docker Swarm
https://registry.terraform.io/modules/trajano/swarm-aws/docker
Różnica między podejściem, które wcześniej stosowałem, a podejściem, które obecnie stosuję z modułem terraform, polega na wykorzystaniu pakietów Docker dostarczonych przez AWS. Nie obejmuje to pełnej kompilacji dokerów, a co nie, ale nie potrzebujesz tych pakietów normalnie na serwerze.
Ponieważ używam tego, który dostarczyła Amazon, nie jest to już najnowsza wersja 18.09, ale wersja 18.06. Jednak konfiguracja jest prostsza i nie muszę grać w catch-to-container-selinux.
Jedyną zewnętrzną zależnością, której używam, jest EPEL, aby się upolować, ponieważ nadal potrzebujesz dobrego losowego źródła dla niektórych aplikacji.
Opierałem się również na grupach bezpieczeństwa AWS, zamiast jawnie konfigurować firewalld i użyłem ustawienia SELinux, które jest domyślnie ustawione w obrazie AMI.
źródło