|
|
29. sor: |
29. sor: |
| CMD ["./ninvaders"] | | CMD ["./ninvaders"] |
| </code></megoldas> | | </code></megoldas> |
- |
| |
- |
| |
- |
| |
- |
| |
- |
| |
- | = Docker =
| |
- |
| |
- | Telepítése:
| |
- | <code lang="bash">
| |
- | apt-get install docker.io
| |
- | </code>
| |
- |
| |
- | <code lang="bash">
| |
- | docker version # docker -v
| |
- | </code>
| |
- |
| |
- | == Hello world! ==
| |
- | <code lang="bash">
| |
- | docker run hello-world # == docker create hello-world ; docker start -a 12sad...
| |
- | docker run --name hw hello-world
| |
- | </code>
| |
- |
| |
- | Részletesebben:
| |
- | <code lang="bash">
| |
- | docker create hello-world
| |
- | docker start -a 12sad...
| |
- | </code>
| |
- |
| |
- | Konténerek listázása
| |
- | <code lang="bash">
| |
- | docker ps # Futó konténerek listázása
| |
- | docker ps -a # Összes konténer listázása
| |
- | </code>
| |
- |
| |
- | <code lang="bash">
| |
- | docker start vibrant_solomon
| |
- | docker stop vibrant_solomon
| |
- | docker kill vibrant_solomon
| |
- | </code>
| |
- |
| |
- | Konténer törlése
| |
- | <code lang="bash">
| |
- | docker rm 6d7e1cec74fa # Egy konténer törlése [csak addig kell írni az azonosítót, amíg egyértelmű nem lesz.]
| |
- | docker container prune # Összes leállított konténer törlése === docker rm $(docker ps -a -q -f status=exited)
| |
- | </code>
| |
- |
| |
- | Image-ek kezelése
| |
- | <code lang="bash">
| |
- | docker image ls # Image-ek listázása (=== docker images)
| |
- | docker image rm ubuntu:latest # Image törlése (=== docker image rm romantic_franklin)
| |
- | docker rmi hello-world -f # Az összes Hello-world törlése
| |
- | </code>
| |
- |
| |
- | <code lang="bash">
| |
- | # Az összes image törlése
| |
- | for I in $(docker image ls -q) ; do docker image rm $I ; done
| |
- | </code>
| |
- |
| |
- |
| |
- | Konténer letöltése
| |
- | <code lang="bash">
| |
- | docker pull busybox
| |
- | </code>
| |
- |
| |
- | == Busybox ==
| |
- |
| |
- | Konténer indítása
| |
- | <code lang="bash">
| |
- | docker run busybox
| |
- | docker run busybox ls
| |
- | </code>
| |
- |
| |
- | == Ubuntu ==
| |
- |
| |
- | Egy alap "üres" Linux konténer létrehozása, indítása és belépés:
| |
- | <code lang="bash">
| |
- | docker run -it ubuntu bash
| |
- | docker run -it ubuntu:16.04 bash
| |
- | </code>
| |
- |
| |
- | == Konténer menedzsment ==
| |
- |
| |
- | Folyamatos üzemre tervezve
| |
- | <code lang="bash">
| |
- | docker run --restart=always -it ubuntu bash
| |
- | docker attach vibrant_solomon
| |
- | docker attach d65506baadb2
| |
- | </code>
| |
- |
| |
- | (mc install, demonstrálható a screen-szerű működés:)
| |
- | <code lang="bash">
| |
- | CTRL-p + CTRL-q
| |
- |
| |
- | docker exec -it vibrant_solomon /bin/bash
| |
- | </code>
| |
- |
| |
- |
| |
- | Alpine Linux
| |
- | <code lang="bash">
| |
- | docker run alpine ls -l /bin
| |
- | </code>
| |
- |
| |
- | == Dockerfile ==
| |
- |
| |
- | * FROM: a konténer alap (base) image-e (pl.: linux 16.04, 18:04, latest).
| |
- | * MAINTAINER (nem kötelező): a dockerfile készítő neve és e-mail címe.
| |
- | * RUN: a konténer image létrehozása során végrehajtandó parancsok.
| |
- | * ADD: fájl másolása az image-be.
| |
- | * ENV: környezeti változó definiálása.
| |
- | * CMD: a konténer indításakor automatikusan lefutó parancs.
| |
- | * ENTRYPOINT: a konténer indításakor automatikusan lefutó parancs.
| |
- | * WORKDIR: az alapértelmezett könyvtár a konténer indulásakor.
| |
- |
| |
- | A hello.txt tartalma:
| |
- | <code lang="bash">
| |
- | hello!
| |
- | </code>
| |
- |
| |
- | Egy Dockerfile tartalma:
| |
- |
| |
- | <code lang="bash">
| |
- | # Alap image
| |
- | FROM ubuntu:latest
| |
- | # FROM ubuntu:16.04
| |
- |
| |
- | # Készítette
| |
- | MAINTAINER Koczka Ferenc <koczka.ferenc@uni-eszterhazy.hu>
| |
- |
| |
- | # update és install
| |
- | RUN apt-get update && apt-get -y install ninvaders
| |
- |
| |
- | # Bemásoljuk a hello.txt fájlt a root home könyvtárába
| |
- | ADD hello.txt /root/hellobello.txt
| |
- |
| |
- | # Környezeti változó beállítása
| |
- | ENV VERSION 1.0
| |
- |
| |
- | # Munkakönyvtár beállítása
| |
- | WORKDIR /usr/games
| |
- |
| |
- | # Játék indítása
| |
- | CMD ["./ninvaders"]
| |
- |
| |
- | </code>
| |
- |
| |
- | Konténer elkészítése
| |
- | <code lang="bash">
| |
- | docker build -t ninvaders:1 .
| |
- | </code>
| |
- |
| |
- | Konténer indítása
| |
- | <code lang="bash">
| |
- | docker run -it ninvaders:1
| |
- | </code>
| |
- |
| |
- | <code lang="bash">
| |
- | docker run -it ninvaders:1 bash
| |
- | </code>
| |
- |
| |
- | == Készítsünk webszervert! ==
| |
- |
| |
- | A megjelenítendő weblap legyen az src/index.html fájlban:
| |
- |
| |
- | <code lang="bash">
| |
- | <h1>Hello</h1>
| |
- | <p>Hello from a Docker container!</p>
| |
- | </code>
| |
- |
| |
- | A Dockerfile:
| |
- |
| |
- | <code lang="bash">
| |
- | # Dockerfile
| |
- | # A konténer elkészítése: docker build -t apache:1 .
| |
- | # Indítása: docker run --rm -it -p 80:80 apache:1
| |
- | # ------------------------------------------------------
| |
- |
| |
- | FROM ubuntu:latest
| |
- | MAINTAINER Koczka Ferenc <koczka.ferenc@uni-eszterhazy.hu>
| |
- | # Sajnos be kell állítanunk az időzónát.
| |
- | ENV TZ=Europe/Budapest
| |
- | RUN \
| |
- | ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone ;\
| |
- | apt-get update ;\
| |
- | apt-get -y install apache2 ;\
| |
- | apt-get clean
| |
- |
| |
- | ADD src/index.html /var/www/html/index.html
| |
- |
| |
- | EXPOSE 80
| |
- | CMD ["apachectl", "-D", "FOREGROUND"]
| |
- | </code>
| |
- |
| |
- | <code lang="bash">
| |
- | docker build -t apache:1 .
| |
- | </code>
| |
- |
| |
- | <code lang="bash">
| |
- | docker run --rm -it -p 80:80 apache:1
| |
- | </code>
| |
- |
| |
- | Ha a konténeren kívül akarjuk elhelyezni a webroot-ot:
| |
- | <code lang="bash">
| |
- | mkdir /tmp/feri
| |
- | echo '<h1>Hello from outside!</h1>' >/tmp/feri/index.html
| |
- | docker run --rm -it -p 80:80 -v /tmp/feri:/var/www/html/ apache:1
| |
- | </code>
| |
- |
| |
- | == Feltöltés a Docker Hubba ==
| |
- |
| |
- | Bejelentkezünk a Docker Hubba:
| |
- | <code lang="bash">
| |
- | docker login
| |
- | </code>
| |
- |
| |
- | A feltöltendő image ID-je: 4f16d9008b01
| |
- | <code lang="bash">
| |
- | docker image ls
| |
- | REPOSITORY TAG IMAGE ID CREATED SIZE
| |
- | koczkaferenc/ninvaders 2 4f16d9008b01 3 minutes ago 106MB
| |
- | </code>
| |
- |
| |
- | Összerendeljük az ID-t a konténer nevével, és feltöltjük:
| |
- | <code lang="bash">
| |
- | docker tag 4f16d9008b01 koczkaferenc/ninvaders:2
| |
- | docker push koczkaferenc/ninvaders:2
| |
- | </code>
| |
- |
| |
- | Letöltés a Docker Hubból:
| |
- | <code lang="bash">
| |
- | Letöltés a Docker Hubból:
| |
- | <code lang="bash">
| |
- | docker run -it koczkaferenc/ninvaders:2
| |
- | </code>
| |
- |
| |
- | == Kész webszerver alkalmazása ==
| |
- |
| |
- | <code lang="bash">
| |
- | mkdir web
| |
- | cd web
| |
- | echo "<h1>Welcome to the rabbithole.</h1>"
| |
- | docker run -dit --name my-apache-app -p 80:80 -v "$PWD":/usr/local/apache2/htdocs/ httpd:2.4
| |
- | </code>
| |
- |
| |
- | Vagy olvashatjuk a dokumentációt:
| |
- | <code lang="bash">
| |
- | docker run -d -p 80:80 docker/getting-started
| |
- | Böngészőben: http://127.0.0.1
| |
- | </code>
| |
- |
| |
- | == MySQL szerver ==
| |
- |
| |
- | <code lang="bash">
| |
- | #!/bin/bash
| |
- | INSTANCE_NAME="mysql-5.6"
| |
- | MYSQL_ROOT_PW="TitkosJelszo"
| |
- | MYSQL_DATA_DIR=/Users/koczka.ferenc/Docker/mysql-5.6/data
| |
- | MYSQL_CONF_DIR=/Users/koczka.ferenc/Docker/mysql-5.6/conf
| |
- | set -x
| |
- | docker stop mysql-5.6
| |
- | docker rm mysql-5.6
| |
- |
| |
- | [ -d conf.d ] && rm -r conf.d
| |
- | [ -d data ] && rm -r data
| |
- |
| |
- | docker run -d \
| |
- | --name ${INSTANCE_NAME} \
| |
- | -e MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PW} \
| |
- | -p 3306:3306 \
| |
- | -v ${MYSQL_CONF_DIR}:/etc/mysql/ \
| |
- | -v ${MYSQL_DATA_DIR}:/var/lib/mysql \
| |
- | mysql:5.6
| |
- |
| |
- | #docker exec -it $INSTANCE_NAME /bin/bash -c "
| |
- | #apt-get update ;
| |
- | #apt-get -y install mc ;
| |
- | #"
| |
- | exit
| |
- | docker exec -it mysql-5.6 /bin/bash
| |
- | docker stop mysql-5.6
| |
- |
| |
- | </code>
| |
- |
| |
- | =Docker-compose=
| |
Indítsa el újra a hello-world konténert úgy, hogy a konténer azonosítóját használja paraméterként!
Indítsa el a busybox konténert úgy, hogy azon belül az ls parancsot hajtsa végre!
Indítson egy konténert egy Alpine Linux-szal, lépjen be és jelenítse meg a /bin könyvtár tartalmát!