Docker alapok

Docker image-ek készítését és néhány dockert kezelő parancsot nézünk meg ebben a leírásban.

A konténerekbe nem ajánlott konfigokat és adatokat tenni, mivel a leállítás után megszűnik a konténer tartalma teljesen. Debian-ra fogunk telepíteni.

Docker telepítése:
# apt install apt-transport-https ca-certificates curl gnupg2 software-properties-common
# curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add -
# add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"
# apt-get update
# apt-get install docker-ce

De ha a docker.io megfelelő számunkra akkor kiadhatjuk ezt is a fentiek helyett:
# apt-get install docker.io

Ellenőrizhetjük, hogy fut-e a docker:
# systemctl status docker

Adjuk hozzá a felhasználónkat:
# usermod -aG docker aktualisfelhasznalo

Infókat ad vissza pl futó konténerek száma image-ek száma stb:
# docker info

Keresés a csomagok között:
# docker search ubuntu

Lehúzzuk a kiválasztott csomagot:
# docker pull ubuntu

Letöltött vagy készített csomagok listája:
# docker images

Konténer indítás:
# docker run -it ubuntu

Aktuálisan futó konténerek:
# docker ps

Összes konténer és a már a leálltak is látszanak:
# docker ps -a

Utoljára indított konténer:
# docker ps -l

Konténer leállítása:
# docker stop ubuntu

Konténer törlése leállítás után:
# docker rm ubuntu

Indítás daemon módban
# docker start ubuntu

Amennyiben szükségünk van a konténerbe bejelentkezni:
# docker exec -it ubuntu sh

Készíthetünk saját egyedi image-eket. Ebben a példában egy ubuntu linuxos apache-php image fájlt hozunk létre.
Készítsünk egy fájlt Dockerfile néven, a következő példa tartalommal:
#Download base image ubuntu 16.04
FROM ubuntu:16.04

# Install apache, PHP, and supplimentary programs. openssh-server, curl, and lynx-cur are for debugging the container.
RUN apt-get update && apt-get -y upgrade && DEBIAN_FRONTEND=noninteractive apt-get -y install \
    apache2 php7.0 php7.0-mysql libapache2-mod-php7.0 curl lynx-cur

# Enable apache mods.
RUN a2enmod php7.0
RUN a2enmod rewrite

# Update the PHP.ini file, enable <? ?> tags and quieten logging.
RUN sed -i "s/short_open_tag = Off/short_open_tag = On/" /etc/php/7.0/apache2/php.ini
RUN sed -i "s/error_reporting = .*$/error_reporting = E_ERROR | E_WARNING | E_PARSE/" /etc/php/7.0/apache2/php.ini

# Manually set up the apache environment variables
ENV APACHE_RUN_USER www-data
ENV APACHE_RUN_GROUP www-data
ENV APACHE_LOG_DIR /var/log/apache2
ENV APACHE_LOCK_DIR /var/lock/apache2
ENV APACHE_PID_FILE /var/run/apache2.pid

RUN mkdir -p /run/php && chown -R www-data:www-data /var/www/html && chown -R www-data:www-data /run/php

# Volume configuration
VOLUME ["/etc/apache2/sites-enabled", "/etc/apache2/certs", "/etc/apache2/conf.d", "/var/log/apache2", "/var/www/html"]

# Expose apache.
EXPOSE 80

# Update the default apache site with the config we created.
ADD apache-config.conf /etc/apache2/sites-enabled/000-default.conf

# By default start up apache in the foreground, override with /bin/bash for interative.
CMD /usr/sbin/apache2ctl -D FOREGROUND

Hozzuk létre az apache-config.conf fájlt és tetszőleges beállításokat írhatunk bele, ami majd belekerül az image-be.

Ha mindennel készen vagyunk akkor készítsünk image-et:
# docker build -t apache_image .

Konténer indítás, -v volume mappa elérési útja, --name a konténer neve amire hivatkozunk később, utolsó paraméter az image amiből indítjuk a konténert:
# docker run -d -v /webroot:/var/www/html -p 80:80 --name ujkontener apache_image

Volume lista és egy volume beállításait listázhatjuk:
# docker volume ls

Nemhasznált volume-ok törlése:
# docker volume prune

Objektumok tulajdonságait listázhatjuk:
# docker inspect 1c59d5b7e90e9173ca30a7fcb6b9183c3f5a37bd2505ca78ad77cf4062bd0465
# docker inspect ubuntu

Használatban levő image-ek:
# docker images ls

Összes image listázása:
# docker images -a

Egy image törlése:
# docker rmi apache_image

Nem használt image-ek törlése:
# docker image prune -a

Olvasnivaló:
https://docs.docker.com/
https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-on-debian-9
https://www.howtoforge.com/tutorial/how-to-create-docker-images-with-dockerfile/#step-create-dockerfile
https://writing.pupius.co.uk/apache-and-php-on-docker-44faef716150
https://hup.hu/node/152342
 
2019.05.28.