Erinevus lehekülje "Docker" redaktsioonide vahel
(→Konteinerite loomine docker-compose abil) |
(→Docker cluster ehk swarm) |
||
155. rida: | 155. rida: | ||
sudo install /tmp/docker-machine /usr/local/bin/docker-machine | sudo install /tmp/docker-machine /usr/local/bin/docker-machine | ||
− | + | Tekitame esimeses nodes swarmi clustri | |
− | docker- | + | # docker swarm init --advertise-addr 192.168.1.102 |
+ | Swarm initialized: current node (vgbw9pkyuibwpkcjxk8cvhy0o) is now a manager. | ||
+ | |||
+ | To add a worker to this swarm, run the following command: | ||
+ | |||
+ | docker swarm join --token SWMTKN-1-04ckwo5fpnej5gbygpcdyole7wp6fk5pl6sf3ljsblu2r65bow-9gj0xfacx628pmaqs9m3tznbe 192.168.1.102:2377 | ||
− | + | To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions. | |
+ | |||
+ | Lisame ülejäänud kaks node swarmi, selleks käivitame nendes ülal initi poolt antud käsu | ||
+ | |||
+ | # docker swarm join --token SWMTKN-1-04ckwo5fpnej5gbygpcdyole7wp6fk5pl6sf3ljsblu2r65bow-9gj0xfacx628pmaqs9m3tznbe 192.168.1.102:2377 | ||
+ | This node joined a swarm as a worker. | ||
+ | |||
+ | Loodud clustri staatust näeme järgnevalt | ||
+ | |||
+ | # docker node ls | ||
+ | ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS | ||
+ | 7e2nb4o59vvrq92588mdt0s8x test Ready Active | ||
+ | gvy7dc4lv7gkjinfjrd45g5sg test Ready Active | ||
+ | vgbw9pkyuibwpkcjxk8cvhy0o * test Ready Active Leader | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
info saamiseks | info saamiseks |
Redaktsioon: 30. juuni 2018, kell 14:44
Sisukord
Paigaldus ubuntus/debianis
Dockeri paigaldamiseks ubuntu/debiani serveris
# apt-get install docker.io
Dockeri üheks oluliseks tugevuseks on see, et nende poolt on pakkuda juba tuhandeid eelkonfigureeritud konteinerite tõmmiseid, millede abil saab hakata kohe erinevaid rakendusi ehitama. Laadime näiteks alustamiseks alla konteineris kasutamiseks mõeldud kergekaalulise ja ilma lisatarkvarata ubuntu konteineri img
# docker pull ubuntu
Peale tõmbamise lõpetamist paigaldatakse see images alla, näha saame seda järgneva käsuga
# docker images REPOSITORY TAG IMAGE ID CREATED SIZE ubuntu latest 113a43faa138 2 weeks ago 81.2MB
Saame näiteks selle sees oleva bashi käivitada ja käsureal ringi vaadata või sinna täiendavaid pakette paigaldada. Vaikimisi on tegemist väga minimaalse keskkonnaga
# docker run -t -i ubuntu:latest /bin/bash
Tõmmata saab ka juba eelkonfigureeritud tarkvaraga dockeri konteinereid. Näiteks tõmbame mysql serveri ja paneme selle käima
docker pull mysql docker run -d --name=mysql1 -e MYSQL_ROOT_PASSWORD=’mypassword’ -v /storage/mysql1/mysql-datadir:/var/lib/mysql mysql
Lisaks saab tõmmata ka kindlaid mysql versioone
docker pull mysql:5.6
Konteineri logisid näeb konteineri ID alusel, nt
# docker logs 3b8a054c778d
Logid esitatakse lakooniliselt näidates vaid olulisemaid vigu, nt stiilis
Warning: mysqli::__construct(): (HY000/1045): Access denied for user 'wordpress'@'172.18.0.3' (using password: YES) in Standard input code on line 22 MySQL Connection Error: (1045) Access denied for user 'wordpress'@'172.18.0.3' (using password: YES)
Olemas on ka palju keerukamaid dockeri konteinereid. Näiteks konfigureeritud ja valmis LAMPi saab https://github.com/fauria/docker-lamp
Omaenda konteineri loomine
Konteineri loomine toimub failis Dockerfile olevate käsurea käskude alusel. Näiteks tekitame lihtsa konfi, mis tekitab meile eelmises lõigus allatõmmatud ubuntu image alusel apache veebiserveri, kus serveerib etteantud index.html faili
FROM ubuntu:latest RUN apt-get update && apt-get install -y apache2 RUN mkdir -p /srv && rm -fr /var/www/html && ln -s /srv /var/www/html EXPOSE 80 ADD index.html /srv/ WORKDIR /srv ENTRYPOINT ["/usr/sbin/apache2ctl", "-D", "FOREGROUND"]
Käsud lahtiseletatult:
- FROM seadistab ära mis imaget me aluseks kasutame
- RUN võimaldab käivitada enda järele kirjutatud käske
- EXPOSE teeb pordi 80 meile nähtavaks
- WORKDIR määrab kasutaja kataloogi
- ADD kopeerib varemalt tekitatud index.html faili /srv kausta
- ENTRYPOINT seadistab ära teenuse, mis konteineris tööle läheb
Ehitame loodud konfi alusel konteineri valmis, selleks anname samas kaustas kus dockerfail järgneva käsu
docker build -t test:test .
Kui protsess lõppes peaksime seda ka images alt nägema
# docker images REPOSITORY TAG IMAGE ID CREATED SIZE test test 364cac645fcc 2 minutes ago 223MB ubuntu latest 113a43faa138 2 weeks ago 81.2MB
Paneme konteineri tööle
# docker run -d -P test:test
Töötavaid konteinereid näeme järgnevalt
# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 5b9850b98a29 test:test "/usr/sbin/apache2ct…" 12 seconds ago Up 11 seconds 0.0.0.0:32770->80/tcp sleepy_carson
Nagu näha on localhosti port 32770 suunatud konteineris 80 pordile.
Konteinerite loomine docker-compose abil
Compose on töövahend, millega saab defineerida ja luua multi-conteinerilisi dockeri rakendusi. Paigaldamiseks
# apt-get install docker-compose
Selleks, et luua wordpressi rakendus koos mysql serveriga ko tekitame faili docker-compose.yml järgneva sisuga
version: '3.3' services: wordpress: depends_on: - db image: wordpress ports: - "8000:80" restart: unless-stopped environment: WORDPRESS_DB_HOST: db MYSQL_PORT_3306_TCP: 3306 WORDPRESS_DB_USER: wordpress WORDPRESS_DB_PASSWORD: wordpress db: image: mariadb ports: - "3306:3306" restart: unless-stopped environment: MYSQL_ROOT_PASSWORD: somewordpress MYSQL_DATABASE: wordpress MYSQL_USER: wordpress MYSQL_PASSWORD: wordpress
Loome selle alusel dockeri ja paneme selle tööle
# docker-compose up -d
Veendumine, et hakkas tööle
# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 20eaa3976bc9 mysql:latest "docker-entrypoint.s…" 2 minutes ago Up 2 minutes 3306/tcp
Pöördudes nüüd avaliku aadressi pordile 8000 peaksime nägema wordpressi paigaldust
Soovides mõlemad masinad sulgeda
# docker-compose stop
Käsuga docker stats näeb jooksvalt konteinerite cpu, mälu, IO ja võrgukasutust
# docker stats CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS 5c47855895c3 server3_wordpress_1 0.00% 89.96MiB / 7.79GiB 1.13% 3.58MB / 4.89MB 336kB / 1.59MB 11 034eb5845072 server3_db_1 0.04% 97.74MiB / 7.79GiB 1.23% 1.34MB / 3.14MB 10.7MB / 85.7MB 32
Dockeri kettaajaotus
TODO
Docker cluster ehk swarm
Paigaldame docker-machine käsu
base=https://github.com/docker/machine/releases/download/v0.14.0 && curl -L $base/docker-machine-$(uname -s)-$(uname -m) >/tmp/docker-machine && sudo install /tmp/docker-machine /usr/local/bin/docker-machine
Tekitame esimeses nodes swarmi clustri
# docker swarm init --advertise-addr 192.168.1.102 Swarm initialized: current node (vgbw9pkyuibwpkcjxk8cvhy0o) is now a manager.
To add a worker to this swarm, run the following command: docker swarm join --token SWMTKN-1-04ckwo5fpnej5gbygpcdyole7wp6fk5pl6sf3ljsblu2r65bow-9gj0xfacx628pmaqs9m3tznbe 192.168.1.102:2377 To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
Lisame ülejäänud kaks node swarmi, selleks käivitame nendes ülal initi poolt antud käsu
# docker swarm join --token SWMTKN-1-04ckwo5fpnej5gbygpcdyole7wp6fk5pl6sf3ljsblu2r65bow-9gj0xfacx628pmaqs9m3tznbe 192.168.1.102:2377 This node joined a swarm as a worker.
Loodud clustri staatust näeme järgnevalt
# docker node ls ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS 7e2nb4o59vvrq92588mdt0s8x test Ready Active gvy7dc4lv7gkjinfjrd45g5sg test Ready Active vgbw9pkyuibwpkcjxk8cvhy0o * test Ready Active Leader
info saamiseks
# docker -H <manager1 IP>:4000 info
Et luua kaks replikat kõige viimasest nginxi nimelisest konteinerist ja teha nad avalikuks pordilt 8080
docker service create \ --name backend \ --replicas 2 \ --publish 8080:80 \ nginx
Terve hulk erinevaid haldusliideseid https://www.smartspate.com/overview-gui-interfaces-managing-docker-containers/
Dockeri võrgud
docker network create \ --subnet 10.11.0.0/16 \ --opt com.docker.network.bridge.name=docker_gwbridge \ --opt com.docker.network.bridge.enable_icc=false \ --opt com.docker.network.bridge.enable_ip_masquerade=true \ docker_gwbridge
Kuidas see kõik töötab http://blog.nigelpoulton.com/demystifying-docker-overlay-networking/