Erinevus lehekülje "Docker" redaktsioonide vahel

Allikas: Kuutõrvaja
(Docker cluster ehk swarm)
(Konteinerite loomine docker-compose abil)
135. rida: 135. rida:
  
 
  # docker-compose stop
 
  # 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===
 
===Dockeri kettaajaotus===

Redaktsioon: 30. juuni 2018, kell 14:22

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

Nodes 1

docker-machine create -d virtuaal node-1

Nodes 2

docker-machine create -d virtuaal node-2

Nodes 3

docker-machine create -d virtuaal node-3

eval $(docker-machine env node-1)

docker swarm init \
    --advertise-addr $(docker-machine ip node-1) \
    --listen-addr $(docker-machine ip node-1):2377

TOKEN=$(docker swarm join-token -q worker)

eval $(docker-machine env node-2)

docker swarm join \
    --token $TOKEN \
    $(docker-machine ip node-1):2377

eval $(docker-machine env node-3)

docker swarm join \
    --token $TOKEN \
    $(docker-machine ip node-1):2377

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

https://technologyconversations.com/2016/08/01/integrating-proxy-with-docker-swarm-tour-around-docker-1-12-series/

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/