Автор оригинала: Mamy Tiana RAKOTOMALALA.
Вступление
Docker — это высокооптимированная платформа для строительства и беговых контейнеров на серверах. Он управляет контейнерами высокоэффективным образом и работает невероятно хорошо с неизбежным.
Anisible — это инструмент автоматизации, который направлен на ослабление задач, таких как управление конфигурацией, развертывание приложений и оркестров внутри службы. Он имеет встроенный модуль Docker, который интегрируется с Docker для управления контейнерами.
В этом руководстве вы будете создавать и развернуть контейнер докеров, используя Anbible.
Предпосылки
Прежде чем начать это руководство, вам понадобится следующее:
- Один сервер Debian 8 настроен следуя Начальная установка сервера с учебником Debian 8 , в том числе пользователя Non-root.
- Docker установлен на сервере.
- Anisible 2.4 или выше, установленные на вашем локальном компьютере, следуя этой Как установить и настроить Anbible на Ubuntu 18.04 Отказ
Убедитесь, что ваша локальная машина может общаться с сервером над SSH. Используйте клавишу SSH вместо печатанного пароля для причины безопасности.
Шаг 1 — Создайте изображение докера с DockerFile
Существует некоторое количество способов создания документа Docker, но мы рекомендуем вам создать изображение, используя файл определения, называемый DockerFile.
Во-первых, создайте каталог на рабочей станции и DockerFile в созданном каталоге.
mkdir docker cd docker touch Dockerfile
Для нашего примера мы собираемся построить Докер
Изображение, которое содержит простой веб-сервер.
Редактировать Dockerfile с нано
и добавьте следующий контент:
# Version: 0.0.1 FROM debian:8.5 MAINTAINER maintainer_name "maintainer_email" RUN apt-get update RUN apt-get install -y nginx RUN echo 'Default page. Nginx is in your container. ' \ >/usr/share/nginx/html/index.html EXPOSE 80
Теперь, когда у нас есть DockerFile, Anisible может помочь нам облегчить здание и развертывание на сервере.
Шаг 2 — Редактировать файл инвентаризации
Файл инвентаря содержит IP-адреса или доменные имена, где мы хотим развертывать контейнер. Добавьте этот файл в свой проект:
touch ../hosts
Изменить хозяева
файл с нано
и добавьте следующий контент в этом файле.
[webserver] your_server_ip
Теперь проверьте, может ли ваша локальная машина взаимодействовать с сервером через Anisible. Введите следующую команду в терминале:
ansible webserver -m ping -i ../hosts
Выход этой команды должен быть:
your_server_ip | success >> { "changed": false, "ping": "pong" }
Это означает, что вы можете добраться до вашего сервера по SSH, и вы можете использовать это Anbible, чтобы настроить его.
Шаг 3 — Редактировать Anisible Playbook
Сначала измените рабочий каталог на корневой каталог проекта и создайте новый Anisible PlayBook. Макет каталога должен выглядеть как:
docker_project/ main.yml hosts docker/ Dockerfile
Далее добавьте задачу в Anisible PlayBook для установки Docker-Py
на доке докера. Интеграция Docker Ansible требует, чтобы вы установили эту библиотеку Python. Мы используем Пип
Чтобы установить необходимую библиотеку Python. Итак, мы добавляем также задачу, которая устанавливает Пип
до докер-py.
.
Установка пакета и Docker требуют привилегии Sudo на сервере. Вы можете обрабатывать эту привилегию в Anbible, указав имя пользователя Sudo через Remote_user
и добавление стали: Да
и Стань_методу: sudo
Директивы.
Редактировать PlayBook main.yml
с нано
и добавьте следующее:
--- - hosts: webserver remote_user: remote_username become: yes become_method: sudo tasks: - name: Install pip apt: name=python-pip state=present - name: install docker-py package pip: name=docker-py
PlayBook использует Докер
Модуль для создания изображения. Мы предоставляем имя для изображения, путь к Dockerfile (в нашем случае, внутри каталога Docker
), и сообщите Anbible через параметр состояния, следует ли изображение настоящее время
, отсутствующий
или построить
Отказ
Итак, давайте добавим следующий контент для main.yml
Playbook:
... - name: Build Docker image from Dockerfile docker_image: name: web path: docker state: build
С этой фотографией вы построили только новые Веб
изображение Но это изображение никогда не работает. Вам нужно добавить еще одну задачу в PlayBook для его запущения. Укажите имя изображения, путь к параметрам состояния DockerFile и использует, чтобы сообщить однозначное изображение должно быть запущено (через Бег
). Используйте новейшее изображение, пометив его имя с помощью : последние
Отказ PlayBook должен выглядеть так:
--- - hosts: webserver remote_user: remote_username become: yes become_method: sudo tasks: - name: Install pip apt: name=python-pip state=present - name: install docker-py pip: name=docker-py - name: Build Docker image from Dockerfile docker_image: name: web path: docker state: build - name: Running the container docker_container: image: web:latest path: docker state: running
Теперь добавьте задачу, чтобы проверить, работает ли новый контейнер отлично на сервере. Эта задача работает Docker PS
на сервере.
Наконец, ваш PlayBook стал:
--- - hosts: webserver remote_user: linx become: yes become_method: sudo tasks: - name: Install pip apt: name=python-pip state=present - name: install docker-py pip: name=docker-py - name: Build Docker image from Dockerfile docker_image: name: web path: docker state: build - name: Running the container docker_container: image: web:latest path: docker state: running - name: Check if container is running shell: docker ps
Наш несмешной Playbook теперь готов к использованию.
Шаг 3 — Запуск PlayBook
Запустите PlayBook, используя следующую команду на вашей рабочей станции:
ansible-playbook -i hosts main.yml --ask-become-pass
Теперь вы предлагаете ввести удаленный пароль пользователя Sudo.
Чтобы проверить, отлично работает ли ваш веб-сервер контейнера, введите:
curl your_server_ip:your_docker_port
Это должно вернуть страницу по умолчанию NGINX, созданную DockerFile.
Default page. Nginx is in your container.
Заключение
В этой статье вы построили и развернули контейнер, используя Docker с помощью Anbible. Теперь вы можете автоматизировать развертывание контейнеров с помощью Anbible. Вы можете использовать Anisible Playbook в этом руководстве, чтобы развернуть любой вид контейнера Docker на вашем сервере. Вам нужно только предоставить свой собственный DockerFile.
Оригинал: «https://www.codementor.io/@mamytianarakotomalala/how-to-deploy-docker-container-with-ansible-on-debian-8-mavm48kw0»