No name
Links
1140 | 2022-11-21 14:22:20 |
1) Установить docker и docker-compose2) Создать Dockerfile3) Объединить несколько образов с помощью docker-compose
$apt update$apt install apt-transport-https ca-certificates curl software-properties-common$curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg$echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list /dev/null$apt update$apt-cache policy docker-ce$apt install docker-ce docker-compose
$systemctl status docker (если не работает, то необходимо его перезапустить, после установки docker-compose единоразово может выпать в ошибку)
$docker -vСписок рабочих контейнеров$docker psСписок всех контейнеров
$docker ps -a
Список образов
$docker images
Поиск образа в репозитории hub.docker.com
$docker search nginx
Скачивание ИЛИ обновление образа
$docker pull nginx
Запуск с отображением состояния контейнера
$docker run -it -p 80:80 nginx:latest
Запуск в фоновом режиме
$docker run -d -p 80:80 nginx:latest
Создание копии контейнера с другим тегом
$docker tag nginx:v1 nginx:v2
Сборка контейнера из Dockerfile в текущей директории
$docker build -t customimage:latest .
Команды для удаления всех контейнеров и образов
$docker stop $(docker ps -a -q)$docker rm $(docker ps -a -q)$yes| docker container prune$docker rmi $(docker images -q)$docker images -q |xargs docker rmi$docker volume rm $(docker volume ls -q)
Команды для входа в контейнер и сохранения изменений
$docker exec -itbash если нужно сохранить изменения:$docker commitupdated_image:v3
# Исходный образ для создания контейнераFROM debian:latest# Копирование дополнительных файлов с конфигурациями nginx.conf & entrypoint.shCOPY conf /conf# Запуск процедуры сборки контейнера, первым шагом идет установка часового пояса, далее установка nginx+php8.0 _fpm, установка даты и времени в php, скачивание(последней версии)-разархивирование-установка прав доступа на phpMyAdmin. И только в конце устанавливаются файлы конфигурации, в противном случае процесс сборки контейнера закончится с ошибкой.RUN cp /usr/share/zoneinfo/Asia/Yekaterinburg /etc/localtime \&& apt-get update \&& apt-get install -y \ca-certificates \apt-transport-https \software-properties-common \wget \curl \nginx \gpg \lsb-release \&& wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg \&& sh -c 'echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list' \&& apt-get update \&& apt-get install -y \php8.0-fpm \php8.0-common \php8.0-mysql \php8.0-zip \php8.0-gd \php8.0-mbstring \php8.0-curl \php8.0-xml \php-pear \php8.0-bcmath \&& echo "timezone = Asia/Yekaterinburg" >> /etc/php/8.0/php.ini \&& wget https://sourceforge.net/projects/postfixadmin/files/postfixadmin-3.3.8/PostfixAdmin%203.3.8.tar.gz -O PostfixAdmin-tar.gz \&& tar xvf PostfixAdmin-tar.gz --strip-components=1 -C /var/www/html/ \&& rm PostfixAdmin-tar.gz \&& mkdir /var/www/html/templates_c \&& mv /conf/entrypoint.sh /entrypoint.sh \&& mv /conf/nginx.conf /etc/nginx/nginx.conf \&& rm -R /conf \&& chown -R www-data:www-data /var/www/html \&& chmod -R 500 /var/www/html \&& chmod -R 700 /var/www/html/templates_c/ \&& chmod a+x /entrypoint.sh# Указание стартового скрипта с которого будет начинаться каждый запуск контейнераENTRYPOINT ["/entrypoint.sh"]# Открытие порта внутри контейнераEXPOSE 80
#!/bin/bashecho "Start nginx & php-fpm"nginxservice php8.0-fpm start# Выдача логов, если данный параметр убрать то контейнер после запуска будет сразу завершатся.tail -f /var/log/nginx/error.log
# Версия docker-composeversion: '3'# Список наших сервисов (контейнеров)services:phpmyadmin:restart: alwaysimage: h963z57/phpmyadmin:main# маршрутизируем портыports:- "83:80"# монтируем директории, слева директории на основной машине, справа - куда они монтируются в контейнереvolumes:- /mnt/cfg/phpMyAdmin.config.inc.php:/var/www/html/config.inc.php:ropostfixadmin:restart: alwaysimage: h963z57/postfixadmin:main# маршрутизируем портыports:- "84:80"# монтируем директории, слева директории на основной машине, справа - куда они монтируются в контейнереvolumes:- /mnt/cfg/poftfixadmin.config.php:/var/www/html/config.inc.php:ro