Linux:Docker
(Változatok közti eltérés) (→MySQL szerver) |
|||
1. sor: | 1. sor: | ||
+ | Telepítse fel a Dockert a számítógépére!<megoldas><code lang="bash">apt-get install docker.io</code></megoldas> | ||
+ | Ellenőrizze a Docker verziószámát!<megoldas><code lang="bash">docker -v</code></megoldas> | ||
+ | Indítsa el a hello-world konténert!<megoldas><code lang="bash">docker run hello-world | ||
+ | docker run --name hw hello-world</code></megoldas> | ||
+ | Töltse le a busybox konténert, de ne indítsa el!<megoldas><code lang="bash">docker pull busybox</code></megoldas> | ||
+ | Indítsa el az előző feladatban letöltött busybox-ot!<megoldas><code lang="bash">docker run -it busybox</code></megoldas> | ||
+ | Listázza ki a futó konténereket!<megoldas><code lang="bash">docker ps</code></megoldas> | ||
+ | Listázza ki az összes konténert!<megoldas><code lang="bash">docker ps -a</code></megoldas> | ||
+ | Indítsa el újra a hello-world konténert úgy, hogy a konténer azonosítóját használja paraméterként!<megoldas><code lang="bash">docker start -a 12sad...</code></megoldas> | ||
+ | Indítsa el a busybox konténert úgy, hogy azon belül az ls parancsot hajtsa végre!<megoldas><code lang="bash">docker run busybox ls</code></megoldas> | ||
+ | Törölje a hello-world konténert (ha több van belőle, az összeset)!<megoldas><code lang="bash">docker rm konténer-id</code></megoldas> | ||
+ | Álltítsa le a vibrant_solomon nevű konténert!<megoldas><code lang="bash"> | ||
+ | docker stop vibrant_solomon | ||
+ | docker kill vibrant_solomon</code></megoldas> | ||
+ | Törölje a 6d7e1cec74fa azonosító konténert!<megoldas><code lang="bash">docker rm 6d7e1cec74fa</code></megoldas> | ||
+ | Törölje az összes leállított konténert!<megoldas><code lang="bash">docker container prune | ||
+ | docker rm $(docker ps -a -q -f status=exited)</code></megoldas> | ||
+ | Törölje az összes konténer image-et!<megoldas><code lang="bash">for I in $(docker image ls -q) ; do docker image rm $I ; done</code></megoldas> | ||
+ | Indítson egy Ubuntu 16.04-es rendszerű konténert, és lépjen be abba!<megoldas><code lang="bash">docker run -it ubuntu:16.04 bash</code></megoldas> | ||
+ | Érje el, hogy a fenti kinténer mindig induljon újra, amikor abból kilép!<megoldas><code lang="bash">docker run --restart=always -it ubuntu bash</code></megoldas> | ||
+ | Egy másik terminálból lépjen be a a még futó Ubuntu konténerbe!<megoldas><code lang="bash">docker attach [Ubuntu-konténer-id-je]</code></megoldas> | ||
+ | Indítson egy konténert egy Alpine Linux-szal, lépjen be és jelenítse meg a /bin könyvtár tartalmát!<megoldas><code lang="bash">docker run alpine ls -l /bin</code></megoldas> | ||
+ | Készítsen egy konténert, amelyben a Ninvaders program indul el!<megoldas><code lang="bash"> | ||
+ | FROM ubuntu:latest | ||
+ | FROM ubuntu:16.04 | ||
+ | MAINTAINER Koczka Ferenc <koczka.ferenc@uni-eszterhazy.hu> | ||
+ | RUN apt-get update && apt-get -y install ninvaders | ||
+ | WORKDIR /usr/games | ||
+ | CMD ["./ninvaders"] | ||
+ | </code></megoldas> | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
= Docker = | = Docker = | ||
A lap 2022. november 5., 09:54-kori változata
Telepítse fel a Dockert a számítógépére!
Ellenőrizze a Docker verziószámát!
Indítsa el a hello-world konténert!
Töltse le a busybox konténert, de ne indítsa el!
Indítsa el az előző feladatban letöltött busybox-ot!
Listázza ki a futó konténereket!
Listázza ki az összes konténert!
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!
Törölje a hello-world konténert (ha több van belőle, az összeset)!
Álltítsa le a vibrant_solomon nevű konténert!
Törölje a 6d7e1cec74fa azonosító konténert!
Törölje az összes leállított konténert!
Törölje az összes konténer image-et!
Indítson egy Ubuntu 16.04-es rendszerű konténert, és lépjen be abba!
Érje el, hogy a fenti kinténer mindig induljon újra, amikor abból kilép!
Egy másik terminálból lépjen be a a még futó Ubuntu konténerbe!
Indítson egy konténert egy Alpine Linux-szal, lépjen be és jelenítse meg a /bin könyvtár tartalmát!
Készítsen egy konténert, amelyben a Ninvaders program indul el!
Tartalomjegyzék |
Docker
Telepítése:
apt-get install docker.io
docker version # docker -v
Hello world!
docker run hello-world # == docker create hello-world ; docker start -a 12sad...
docker run --name hw hello-world
Részletesebben:
docker create hello-world docker start -a 12sad...
Konténerek listázása
docker ps # Futó konténerek listázása docker ps -a # Összes konténer listázása
docker start vibrant_solomon
docker stop vibrant_solomon
docker kill vibrant_solomon
Konténer törlése
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)
Image-ek kezelése
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
# Az összes image törlése for I in $(docker image ls -q) ; do docker image rm $I ; done
Konténer letöltése
docker pull busybox
Busybox
Konténer indítása
docker run busybox
docker run busybox ls
Ubuntu
Egy alap "üres" Linux konténer létrehozása, indítása és belépés:
docker run -it ubuntu bash
docker run -it ubuntu:16.04 bash
Konténer menedzsment
Folyamatos üzemre tervezve
docker run --restart=always -it ubuntu bash
docker attach vibrant_solomon
docker attach d65506baadb2
(mc install, demonstrálható a screen-szerű működés:)
CTRL-p + CTRL-q
docker exec -it vibrant_solomon /bin/bash
Alpine Linux
docker run alpine ls -l /bin
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:
hello!
Egy Dockerfile tartalma:
# 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"]
Konténer elkészítése
docker build -t ninvaders:1 .
Konténer indítása
docker run -it ninvaders:1
docker run -it ninvaders:1 bash
Készítsünk webszervert!
A megjelenítendő weblap legyen az src/index.html fájlban:
<h1>Hello</h1> <p>Hello from a Docker container!</p>
A Dockerfile:
# 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"]
docker build -t apache:1 .
docker run --rm -it -p 80:80 apache:1
Ha a konténeren kívül akarjuk elhelyezni a webroot-ot:
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
Feltöltés a Docker Hubba
Bejelentkezünk a Docker Hubba:
docker login
A feltöltendő image ID-je: 4f16d9008b01
docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE koczkaferenc/ninvaders 2 4f16d9008b01 3 minutes ago 106MB
Összerendeljük az ID-t a konténer nevével, és feltöltjük:
docker tag 4f16d9008b01 koczkaferenc/ninvaders:2 docker push koczkaferenc/ninvaders:2
Letöltés a Docker Hubból:
Letöltés a Docker Hubból: <code lang="bash"> docker run -it koczkaferenc/ninvaders:2
Kész webszerver alkalmazása
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
Vagy olvashatjuk a dokumentációt:
docker run -d -p 80:80 docker/getting-started Böngészőben: http://127.0.0.1
MySQL szerver
#!/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