Как автоматически создавать и настраивать пользовательские образы докеров с помощью Dockerfile -- часть 3

Как автоматически создавать и настраивать пользовательские образы докеров с помощью Dockerfile — часть 3

docker

В этой статье основное внимание будет уделено созданию пользовательских образов докеров на основе Ubuntu с установленным сервисом Apache. Весь процесс будет автоматизирован с использованием Dockerfile.

Как автоматически создавать и настраивать пользовательские образы докеров с помощью Dockerfile -- часть 3

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

Содержание

 

Файл Dockerfile содержит различные инструкции для создания и настройки конкретного контейнера на основе ваших требований. Наиболее часто используются следующие инструкции: некоторые из них являются обязательными:

  • FROM = Обязательно в качестве первой инструкции в файле Docker. Поручает Docker извлечь базовый образ, с которого вы построите новый образ. Используйте тег, чтобы указать точный образ, с которого вы хотите произвести построение:
Ex: FROM ubuntu:14.04

 

  • MAINTAINER = автор сборки образа
  • RUN = эта команда может использоваться в нескольких строках и запускать любые команды после создания образа Docker.
  • CMD = запуск любой команды при запуске образа Docker. Используйте только одну инструкцию CMD в файле Docker.
  • ENTRYPOINT = то же, что и CMD, но используется как основная команда для образа.
  • EXPOSE = инструктирует контейнер для прослушивания на сетевых портах при запуске. По умолчанию порты контейнера недоступны для хоста.
  • ENV = установка переменных среды контейнера.
  • ADD = копирование ресурсов (файлы, каталоги, в том числе файлов из URL-адресов).

 

Шаг 1. Создание или запись в репозиторий Dockerfile

1. Во-первых, давайте создадим какие-то репозитории Dockerfile, чтобы повторно использовать файлы в будущем для создания других образов. Создайте пустой каталог где-нибудь в разделе /​​var, где мы создадим файл с инструкциями, которые будут использоваться для создания новых пользовательских образов Docker.

# mkdir -p /var/docker/ubuntu/apache
# touch /var/docker/ubuntu/apache/Dockerfile

 

Create-Dockerfile-Repository

 

 

2. Затем начните редактирование файла со следующими инструкциями:

# vi /var/docker/ubuntu/apache/Dockerfile

 

Выдержка из Dokerfile:

FROM ubuntu
MAINTAINER your_name <[email protected]>
RUN apt-get -y install apache2
RUN echo “Hello Apache server on Ubuntu Docker” > /var/www/html/index.html
EXPOSE 80
CMD /usr/sbin/apache2ctl -D FOREGROUND

 

Как автоматически создавать и настраивать пользовательские образы докеров с помощью Dockerfile -- часть 3

 

 

Теперь давайте рассмотрим инструкции файла:

Первая строка говорит нам, что мы строим образ Ubuntu. Если тег не указан, «14:10«, например, используется последний образ из Docker Hub.

Во второй строке мы добавили имя и адрес электронной почты создателя образа. Следующие две строки RUN будут выполняться в контейнере при создании образа и будут запускаться демоны Apache и эхо-текст, который будет отображаться на веб-странице apache по умолчанию.

Строка EXPOSE указывает контейнеру Docker прослушивать порт 80, но порт не будет открыт для внешнего доступа. Последняя строка указывает контейнеру запустить службу Apache как основную после запуска контейнера.

3. Последнее, что нам нужно сделать, это начать создание образа, выпустив следующую команду, которая будет локально создавать новый образ Docker с именем ubuntu-apache на основе ранее созданного файла Docker, как показано в этом примере:

# docker build -t ubuntu-apache /var/docker/ubuntu/apache/

 

Create-Docker-Image

 

 

4. После того, как образ Docker был создан, вы можете просмотреть все доступные образы и определить свой образ, выполнив следующую команду:

# docker images

 

Как автоматически создавать и настраивать пользовательские образы докеров с помощью Dockerfile -- часть 3

 

 

Шаг 2. Запуск контейнера и доступ к Apache из локальной сети.

5. Для непрерывного запуска контейнера (в фоновом режиме) и доступа к контейнерам, открываемым службами (портами) с хоста или другого удаленного компьютера в вашей локальной сети, выполните приведенную ниже команду в командной строке хоста:

# docker run -d -p 81:80 ubuntu-apache

 

Как автоматически создавать и настраивать пользовательские образы докеров с помощью Dockerfile -- часть 3

 

 

Здесь опция -d запускает контейнер ubuntu-apache в фоновом режиме (как демон), а параметр -p сопоставляет порт контейнера 80 с вашим портом-узлом 81. Доступ к локальной сети через Apache возможен только через порт 81.

Подсказка. Команда Netstat даст вам представление о том, какие порты прослушивает хост.

После запуска контейнера вы также можете запустить команду docker ps для просмотра состояния запущенного контейнера.

6. Веб-страница может быть отображена на вашем хосте прямо из командной строки с использованием функции curl для вашего локального IP-адреса или интерфейса Docker вашего компьютера на порту 81. Используйте команду ip для отображения IP-адресов сетевого интерфейса.

# ip addr [List nework interfaces]
# curl ip-address:81 [System Docker IP Address]
# curl localhost:81 [Localhost]

 

Check-Docker-Network-Interface-and-IP-Address

 

 

Check-Docker-Apache-Webpage

 

 

7. Чтобы посетить веб-страницу контейнера из своей сети, удаленно откройте браузер и используйте HTTP-протокол и IP-адрес машины, на которой работает контейнер, а затем порт 81, как показано на скриншоте ниже.

http://ip-address:81

 

Как автоматически создавать и настраивать пользовательские образы докеров с помощью Dockerfile -- часть 3

 

 

8. Чтобы получить доступ внутрь процессов, запущенных в контейнере, выполните следующую команду:

# docker ps
# docker top <name or ID of the container>

 

Check-Running-Docker-Processes

 

 

9. Чтобы остановить контейнер, выполните команду docker stop за которой следует идентификатор или имя контейнера.

# docker stop <name or ID of the container>
# docker ps

 

10. Если вы хотите назначить уникальное имя для контейнера, используйте параметр -name, как показано в следующем примере:

# docker run --name my-www -d -p 81:80 ubuntu-apache
# docker ps

 

Give-Docker-Container-Name

 

 

Теперь вы можете ссылаться на контейнер для манипуляций (start, stop, top, stats и т.д.) только с помощью назначенного имени.

# docker stats my-www

 

Monitor-Docker-Container-Utilization

 

 

Шаг 3. Создание общесистемного файла конфигурации для контейнера Docker

11. В CentOS / RHEL 7 вы можете создать файл конфигурации systemd и управлять контейнером, как обычно, для любой другой локальной службы.

Например, создайте новый файл systemd, скажем, apache-docker.service, используя следующую команду:

# vi /etc/systemd/system/apache-docker.service

 

Фрагмент файла apache-docker.service:

[Unit]
Description=apache container
Requires=docker.service
After=docker.service
[Service]
Restart=always
ExecStart=/usr/bin/docker start -a my-www
ExecStop=/usr/bin/docker stop -t 2 my-www
[Install]
WantedBy=local.target

 

12. Закончив редактирование файла, закройте его, перезагрузите демона systemd, чтобы отобразить изменения и запустить контейнер, выпустив следующие команды:

# systemctl daemon-reload
# systemctl start apache-docker.service
# systemctl status apache-docker.service

 

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

 

 

Спасибо за уделенное время на прочтение статьи!

Если возникли вопросы, задавайте их в комментариях.

Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!

Чтобы знать больше и выделяться знаниями среди толпы IT-шников, записывайтесь на курсы Cisco от Академии Ciscoкурсы Linux от Linux Professional Institute на платформе SEDICOMM University.

Курсы Cisco и Linux с трудоустройством!

Спешите подать заявку! Осталось пару мест. Группы стартуют 22 июля, а следующая 19 августа, 23 сентября, 21 октября, 25 ноября, 16 декабря, 20 января, 24 февраля.
Что Вы получите?
  • Поможем стать экспертом в сетевом администрировании и получить международные сертификаты Cisco CCNA Routing & Switching или Linux LPI.
  • Предлагаем проверенную программу и учебник экспертов из Cisco Networking Academy и Linux Professional Institute, сертифицированных инструкторов и личного куратора.
  • Поможем с трудоустройством и сделать карьеру. 100% наших выпускников трудоустраиваются.
Как проходит обучение?
  • Проводим вечерние онлайн-лекции на нашей платформе или обучайтесь очно на базе Киевского офиса.
  • Спросим у вас об удобном времени для практик и подстроимся: понимаем, что времени учиться мало.
  • Если хотите индивидуальный график — обсудим и осуществим.
  • Выставим четкие дедлайны для самоорганизации. Личный куратор будет на связи, чтобы ответить на вопросы, проконсультировать и мотивировать придерживаться сроков сдачи экзаменов.
А еще поможем Вам:
  • отредактировать резюме;
  • подготовиться к техническим интервью;
  • подготовиться к конкурсу на понравившуюся вакансию;
  • устроим на работу в Cisco по программе Cisco Incubator, New Graduate и Experienced. Наши студенты, которые уже работают там: жмите на #НашиВCisco Вконтакте, #НашиВCisco Facebook.
Чтобы учиться на курсах Cisco CCNA Routing & Switching и Linux LPI, подайте заявку или получите бесплатную консультацию.
docker

Больше похожих постов

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Заполните поле
Заполните поле
Пожалуйста, введите корректный адрес email.
Вы должны согласиться с условиями для продолжения

Самое читаемое
Меню