Docker — это платформа контейнеризации, которая позволяет вам упаковывать и доставлять ваши приложения согласованным образом. Это упрощает развертывание и запуск ваших приложений в любой среде, будь то на вашем локальном компьютере, облачной платформе или чистом сервере.

Контейнер — это легкий, автономный исполняемый пакет программного обеспечения, который включает в себя все необходимое для запуска приложения: код, среду выполнения, системные инструменты, системные библиотеки и настройки. Контейнеры изолируют программное обеспечение от его окружения, например различий между средами разработки и промежуточной среды, и помогают уменьшить конфликты между различными приложениями, работающими на одном хосте.

Чтобы использовать Docker, вам необходимо установить Docker Engine на свой компьютер. Docker Engine — это набор демонов и инструментов, которые запускаются на вашем компьютере и позволяют создавать, запускать и управлять контейнерами Docker.

Вот некоторые преимущества использования Docker:

  • Портативность. Контейнеры переносимы, то есть их можно запускать на любой машине, на которой установлен Docker. Это упрощает развертывание приложений в различных средах.
  • Воспроизводимость: Контейнеры воспроизводимы, а это означает, что вы всегда можете воссоздать одну и ту же среду для своего приложения. Это важно для тестирования и отладки.
  • Изоляция: контейнеры изолированы друг от друга, что означает, что они не используют общие ресурсы и не мешают друг другу. Это позволяет безопасно запускать разные приложения на одном компьютере.

Если вы хотите узнать больше о Docker, я рекомендую ознакомиться со следующими ресурсами:

Установка докера

Мы будем использовать скрипт для автоматической установки механизма докера и требований.

#!/bin/bash
# Verficando Permisos
function print {
        DATE=`date +'%Y-%m-%d %H:%M:%S'`
        echo "[$DATE] $1" >> /logs/MaquinasIaaS_log.log
}

if [ "$(whoami)" != "root" ]; then
        echo -e "${red}Fail${reset}"
        echo "Please use a root account or sudo Permissions"
        exit 1
else
        echo -e "${green}OK${reset}"
# Ubuntu
sudo apt-get update
sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common -y

# Clave GPG
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

# Repository
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

# Install Docker
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io -y
sudo apt autoremove -y

# Install Docker-Compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.28.6/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

# Docker Users
name=$(whoami)
sudo usermod -aG docker $name
fi

Шпаргалка по докеру

docker run IMAGEЗапустите новый контейнер
docker run --name CONTAINER IMAGEЗапустите новый контейнер и задайте имя
docker run -p HOSTPORT:CONTAINERPORT IMAGEЗапустите новый контейнер с сопоставленными портами
docker run -P IMAGEЗапустите новый контейнер и сопоставьте все порты

Управление контейнерами:

docker create IMAGEСоздание нового контейнера
docker start CONTAINERЗапуск контейнера
docker stop CONTAINERМягкая остановка контейнера
docker kill CONTAINERУдаление (SIGKILL) контейнера
docker restart CONTAINERМягкая остановка и перезапуск контейнера
docker pause CONTAINERПриостановка контейнера
docker unpause CONTAINERВозобновление контейнера
docker rm CONTAINERУничтожение контейнера

Управление массовыми контейнерами

docker stop $(docker ps -q)Чтобы остановить все запущенные контейнерыdocker stop $(docker ps -a -q)Чтобы остановить все остановленные и работающие контейнеры
docker kill $(docker ps -q)Чтобы убить все запущенные контейнеры
docker kill $(docker ps -a -q)Чтобы убить все остановленные и запущенные контейнеры
docker restart $(docker ps -q)Чтобы перезапустить все запущенные контейнеры
docker restart $(docker ps -a -q)Чтобы перезапустить все остановленные и запущенные контейнеры
docker rm $(docker ps -q)Чтобы уничтожить все запущенные контейнеры
docker rm $(docker ps -a -q)Чтобы уничтожить все остановленные и запущенные контейнеры
docker pause $(docker ps -q)Чтобы приостановить все запущенные контейнеры
docker pause $(docker ps -a -q)Чтобы приостановить все остановленные и запущенные контейнеры
docker start $(docker ps -q)Чтобы запустить все запущенные контейнеры
docker start $(docker ps -a -q)Чтобы запустить все остановленные и запущенные контейнеры
docker rm -vf $(docker ps -a -q)Чтобы удалить все контейнеры, включая их тома, используйте
docker rmi -f $(docker images -a -q)Чтобы удалить все образы
docker system pruneЧтобы удалить все висящие и неиспользуемые образы, контейнеры, кэш и тома
_ 28_Чтобы удалить все используемые и неиспользуемые образы
docker system prune --volumesЧтобы удалить все тома Docker

Проверить контейнеры:

docker psСписок запущенных контейнеров
docker ps -aСписок всех контейнеров, включая остановленные
docker logs CONTAINERПоказать выходные данные контейнера
docker logs -f CONTAINERСледить за выходными данными контейнера
docker top CONTAINERСписок процессов, запущенных в контейнере
docker diffПоказать различия с изображением (измененные файлы)
docker inspectПоказать информацию о контейнере (в формате json)

Выполнить команды:

docker attach CONTAINERПрикрепить к контейнеру
docker cp CONTAINER:PATH HOSTPATHКопировать файлы из контейнера
docker cp HOSTPATH CONTAINER:PATHКопировать файлы в контейнер
docker export CONTAINERЭкспортировать содержимое контейнера (архив tar)
docker exec CONTAINERВыполнить команду внутри контейнера
docker exec -it CONTAINER /bin/bashОткрыть интерактивную оболочку внутри контейнера (в некоторых образах нет bash, используйте /bin/sh)
docker wait CONTAINERПодождите пока контейнер не завершится и не вернет код выхода

Изображения:

docker imagesСписок всех локальных изображений
docker history IMAGEПоказать историю изображений
docker inspect IMAGEПоказать информацию (в формате json)
docker tag IMAGE TAGПометить изображение тегом
docker commit CONTAINER IMAGEСоздать изображение (из контейнера)
docker import URLСоздать изображение (из архива)
docker rmi IMAGEУдалить изображения
docker pull REPO:[TAG]Извлечь образ/репозиторий из реестра
docker push REPO:[TAG]отправить образ/репозиторий в реестр
docker search TEXTпоиск образа в официальном реестре
docker loginвойти в реестр
docker logoutвыйти из реестра
docker save REPO:[TAG]экспортировать образ/репозиторий в виде архива
docker loadзагрузить образы из архива

Тома:

docker volume lsВывести список всех томов
docker volume create VOLUMEСоздать том
docker volume inspect VOLUMEПоказать информацию (в формате json)
docker volume rm VOLUMEУничтожить том
docker volume ls --filter="dangling=true"Вывести список всех висящих томов (на которые не ссылается какой-либо контейнер)
docker volume pruneУдалить все тома (на которые не ссылается какой-либо контейнер)

Резервное копирование контейнера

Сделайте резервную копию данных Docker из томов контейнера и упакуйте их в tarball-архив.
docker run --rm --volumes-from CONTAINER -v $(pwd):/backup busybox tar cvfz /backup/backup.tar CONTAINERPATH

Восстановить контейнер из резервной копии

Восстановите том с помощью архива tarball.
docker run --rm --volumes-from CONTAINER -v $(pwd):/backup busybox sh -c "cd CONTAINERPATH && tar xvf /backup/backup.tar --strip 1"

Докер-файл

FROM -- Indicates the base image on which we will work
RUN -- Runs commands, such as installing packages, creating directories, etc. [This instruction allows you to run commands in images where there is no /bin/sh]
ARG -- Serves to define the arguments that we will introduce when building the image
WORKDIR -- Indicates the path in which we will position ourselves inside the container
USER -- Indicates the user that will be used when executing the container
COPY -- Serves to copy files to our image
ENV -- Sets environment variables
CMD ["command"] -- Indicates the command that will be launched when the container starts

Пример:

FROM alpine:1.0
RUN apt-get install wget && \
    apt-get install git &&
RUN useradd --uid 1000 jenkins
ARG USER-ARTIFACTORY
WORKDIR /opt
USER jenkins
COPY ruta_local/archivo.zip   ruta_imagen/archivo.zip
ENV PRUEBA=/usr/local/pr/prueba
CMD ["--help"]

Если вам понравилась эта статья и вы хотите угостить меня кофе ☕️подпишитесь на BuyMeACoffe Link