Difference between revisions of "Docker Swarm on AWS"
(One intermediate revision by the same user not shown) | |||
Line 1: | Line 1: | ||
+ | [[Docker|<< Back to Docker main]] | ||
:[[File:ClipCapIt-180713-002227.PNG]] | :[[File:ClipCapIt-180713-002227.PNG]] | ||
− | |||
https://docs.docker.com/machine/examples/aws/#step-1-sign-up-for-aws-and-configure-credentials<br> | https://docs.docker.com/machine/examples/aws/#step-1-sign-up-for-aws-and-configure-credentials<br> | ||
https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/get-set-up-for-amazon-ec2.html | https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/get-set-up-for-amazon-ec2.html |
Latest revision as of 15:12, 8 August 2018
https://docs.docker.com/machine/examples/aws/#step-1-sign-up-for-aws-and-configure-credentials
https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/get-set-up-for-amazon-ec2.html
User létrehozása
Ahhoz hogy a docker-machine be tudjon lépni az AWS account-unkba, létre kell hozni egy IAM (Identity and Access Management) adminisztrátor jogú user-t. https://console.aws.amazon.com/iam
A user létrehozása közben kapni fogunk egy access-id-t és egy egy titkos kulcsot. Ezt a kettőt kell majd megadni a docker-machine-nak.
Létre kell hozni egy credentials fájlt a .aws mappában. Alapértelmezetten itt keresni majd az aws driver. Másoljuk bele az id-t és a kulcsot:
~/.aws/credentials
[default] aws_access_key_id = AKIAJ622JUHS4RIJOI3A aws_secret_access_key = XXXXXXXXXXXXXXXXXXXXXXXXXXX
VM létrehozása
Az amaozon driver alapértelmezetten benne van a docker-machine-ben, nem kell külön telepíteni mint a KVM esetén láttuk. Ha ingyenes VM-et akarunk megadni, akkor használjuk a t2.micro típust.
Meg kell adni, hogy melyik klászterben van az amazon előfizetésünk. Ez az EC2 Dashboard-on is látszik, illetve az URL-ből is (https://ap-southeast-1.console.aws.amazon.com). A minek a szingapúri 1-es ben van.
Ezen felül fontos hogy megadjuk, hogy az új VM-en melyik portok legyenek nyitva. Alapértelmezetten csak a 22 SSH és a 2375 Docker port van nyitva.
Az amaznec2 driver alapértelmezetten ubuntu image-t telepít az új VM-ekre.
# docker-machine create --driver amazonec2 \ --amazonec2-instance-type "t2.micro" \ --amazonec2-region ap-southeast-1 \ --amazonec2-open-port 8080 docker-sendbox
Running pre-create checks... Creating machine... (docker-sendbox) Launching instance... Waiting for machine to be running, this may take a few minutes... Detecting operating system of created instance... Waiting for SSH to be available... Detecting the provisioner... Provisioning with ubuntu(systemd)... Installing Docker... Copying certs to the local machine directory... Copying certs to the remote machine... Setting Docker configuration on the remote daemon... Checking connection to Docker... Docker is up and running! To see how to connect your Docker Client to the Docker Engine running on this virtual machine, run: docker-machine env docker-sendbox
Mi jött létre
Az EC2 konzolon láthatjuk, hogy létrejött az új VM-ün docker-sendbox néven, amit megadtunk a docker-machine parancsban.
Láthatjuk, hogy 2476 docker port, a 22 SSH port és az általunk megadott 8080 port van nyitva. Ide fogjuk rákötni az apache-ot.
Láthatjuk az Amazon által, a VM-hez rendelt publikus IP címet és domain nevet.
Ha listázzuk a saját hostunkon a docker gépeket, láthatjuk, hogy regisztrálta nálunk a docker-sendbox nevű VM-et, ami az előző képen is látható publikus IP címen (54.169.84.170) érhető el amzaonec2 driverrel futtatva.
# docker-machine ls NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS docker-sendbox - amazonec2 Running tcp://54.169.84.170:2376 v18.05.0-ce
Bámulatos, de a lokális gépünkről a docker-machine ssh paranccsal be tudunk lépni minden további nélkül az új docker-es VM-re, anélkül hogy bármilyen IP címet vagy felhasználó nevet meg kéne adni. Ez azért lehetséges, mert a docker-machine elhelyezett az új VM-en egy publikus SSH kulcsot, a privát párját meg a mi hostunkon.
Láthatjuk, hogy tényleg Ubuntu 16.04.2 verzió van az új VM-en.
# docker-machine ssh docker-sendbox Welcome to Ubuntu 16.04.2 LTS (GNU/Linux 4.4.0-1020-aws x86_64) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/advantage Get cloud support with Ubuntu Advantage Cloud Guest: http://www.ubuntu.com/business/services/cloud 184 packages can be updated. 92 updates are security updates. ubuntu@docker-sendbox:~$
Apache telepítése
Az új VM-re telepítsünk fel egy apache-t, és a 80-as portját irányítsuk a VM 8080 portjára, ami publikusan is elérhető port az amazonon, mivel így hoztuk létre a VM-et.
ubuntu@docker-sendbox1:~$ sudo docker run -dit --name apache -p 8080:80 httpd:2.4 Unable to find image 'httpd:2.4' locally 2.4: Pulling from library/httpd 1c7fe136a31e: Pull complete 72d2d593b3a7: Pull complete 96cd507e10fd: Pull complete ec6bb3492a46: Pull complete 0ea3a980fa47: Pull complete ebe42c0aa1a8: Pull complete a640bae86fe0: Pull complete Digest: sha256:963ecd717afb125c7a867d82d6935930bb93acc5078ea8bc37854d4b4de766d9 Status: Downloaded newer image for httpd:2.4 21b8f150ed88434b73a95e47a4a07c78859965c19325b08578b11aca3dcc4761
Nézzük meg, hogy tényleg fut e az apache konténer a VM-en:
ubuntu@docker-sendbox:~$ sudo docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 2d6843f4f464 httpd:2.4 "httpd-foreground" 41 seconds ago Up 40 seconds 0.0.0.0:8080->80/tcp apache
Most írjuk be a böngészőbe az EC2-s konzolon mutatott domain nevet a 8080 porttal, ahol az apache-nak kell hallgatóznia. Ekkor be kell jöjjön a http image alapértelmezett oldala, ahogy az a képen is látható
VM törlése
Az EC2-es VM-et a lokális hosztunkrol ki lehet törölni az rm (--force) paranccsal. Ekkor a mi docker-ünkből és az amazon-rol is törli:
# docker-machine rm -f docker-sendbox About to remove docker-sendbox1 WARNING: This action will delete both local reference and remote instance. Successfully removed docker-sendbox1
Láthatjuk, hogy az rm parancs kiadása után shutting-down állapotba került a VM:
Majd terminated állapotba. (A terminated VM-ek kb 20 perc után eltűnnek az Instances listáról.