rilpoint_mw113

Linux:Docker

A lap korábbi változatát látod, amilyen Admin (vitalap | szerkesztései) 2022. november 5., 09:54-kor történt szerkesztése után volt.

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

Docker-compose

Skin by RIL Partner