Как использовать Django, PostgreSQL и Docker

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

Введение

Сразу скажу, что мной двигала лень самостоятельной настройки всего этого хозяйства. В связи с этим я искал готовые контейнеры, которым можно было бы доверять и не заботиться об их обновлении и поддержке. На долю секунды у меня возникла мысль собрать контейнеры самостоятельно, но я ее быстро отбросил 🙂 Тогда мне было бы проще и быстрее настраивать все без докера банальным башем или ансиблом.

Для самого web сервера под wordpress нет проблем, так как docker контейнер предоставляет сама wordpress. А вот с let’s encrypt возникли некоторые затруднения. Чего-то простого и легковесного не попадалось. В итоге остановился вот на этом проекте — Это многофункциональный web сервер, который больше заточен на проксирование запросов. Я сначала хотел использовать только его в том числе и в качестве веб сервера, но в итоге решил все же остаться на стандартном контейнере от wordpress.

Проект linuxserver достаточно известный. У них много готовых контейнеров на все случаи жизни, так что решил остановиться на нем. Немного поковырялся внутри, посмотрел, как все устроено. Когда разобрался, начал реализацию изначальной идеи — автоматизировать установку wordpress через docker сразу по https с бесплатными сертификатами от let’s encrypt. Запускать все буду через docker-compose. Если у вас еще не установлен докер и композ к нему, используйте мою статью — установка docker на centos.

Читайте также:  Установка Linux Debian 8.0 Jessie – пошаговая инструкция для новичков

Команды Dockerfile

Dockerfile – это скрипт, который содержит в себе инструкции, которые будут использоваться для создания образа Docker с помощью команды «docker build». Для создания Dockerfile нужно знать некоторый его команды.

Инструкция FROM инициализирует новый этап сборки и должна располагаться в верхней части Dockerfile.

LABEL

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

Эта инструкция используется для выполнения команды в процессе сборки образа Docker. Вы можете установить дополнительные пакеты, необходимые для ваших образов Docker.

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

Инструкция ENV используется для определения переменной среды, которая может использоваться на этапе сборки.

CMD используется для определения команды по умолчанию для выполнения при запуске контейнера. Dockerfile должен содержать только одну инструкцию CMD, и, если имеется несколько CMD, будет выполняться последняя инструкция CMD.

EXPOSE

Эта инструкция используется для предоставления порта контейнера на определенных сетевых портах во время выполнения. По умолчанию используется протокол TCP, но вы можете указать, будет ли он TCP или UDP.

Инструкция ARG используется для определения переменной, которую пользователь может передать сборщику образа. Вы можете использовать эту инструкцию в docker ‘build command’ во время сборки, используя опцию ‘–build-arg variable = value’. Также вы можете использовать несколько ARG в Dockerfile.

ENTRYPOINT

Инструкция ENTRYPOINT используется для определения первой команды и команды по умолчанию, которая будет выполняться при запуске контейнера. Определите команду для запуска приложения с помощью инструкции ENTRYPOINT.

WORKDIR

Инструкция WORKDIR используется для определения рабочего каталога по умолчанию вашего образа Docker. Инструкции RUN, CMD, ENTRYPOINT и ADD следуют за инструкцией WORKDIR. Вы можете добавить несколько инструкций WORKDIR в ваш Dockerfile. Если она не существует, она будет создана автоматически.

Читайте также:  Как удалить приложения из iPhone и iPad в iOS 12

Инструкция USER используется для определения пользователя или gid по умолчанию при запуске образа. RUN, CMD и ENTRYPOINT следуют за инструкциям USER в Dockerfile.

VOLUME

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

Основные команды Docker или шпаргалка по командам докера:

  • Вывести все запущенные контейнеры:
    • -a покажет все контейнеры на локальной машине не важно запущенные или нет

docker ps

docker ps -a

  • Показать все образы из которых можно создать и запустить контейнер:

docker images

  • Запустить докер контейнер:
    • -d — запустить в фоне, без лога в текущей командной строке
    • -it — запустить с логом в текущем окне командной строки
    • -p 123:80 — запустить на определенный порт где
      • 123 — внешний порт за пределами контейнера
      • 80 — порт внутри контейнера

docker run [image_name] -d

  • Скачать образ из Докер репозитория или любого другого, но тогда надо сначала залогинеться (Amazon или любой другой)

docker pull [image_name]

  • поиск образа в репозитории:

docker search [key_word]

  • удалить локальный образ, тот что уже скаченный на локальную машину:

docker rmi [image_name]

  • удалить контейнер который был запущенный на текущей машине:

docker rm [container_name]

  • Сгенерировать образ на основе файла Dockerfile который лежит в текущей папке

docker build .

  • Сгенерировать образ на основе файла Dockerfile и добавить этому образу имя и версию:

docker build -t new_image_name:v1

  • Изменить название и версию образа (тег):
Читайте также:  cat в Linux – всё что нужно знать

docker tag new_image_name:v1 super_new_image_name:v2

  • Залогинеться в контейнер как бы через ssh
    • в конце bash или /bin/bash

docker exec -it [container_name] bash

  • сгенерировать из запущенного контейнера новый образ

docker commit [container_name] [new_image_name]

Вроде получилось описать все нужные команды в Docker. Когда мне что-то еще понадобится, буду дополнять. Если ты нашел еще какую-то важную команду которую я упустил — напиши ее в комментариях, я добавлю.

Всем счастья и здоровья