- Сделайте
forkданного репозитория к себе в Github и переименуйте его по названию или номеру занятия, например, https://github.com/имя-вашего-репозитория/git-hw или https://github.com/имя-вашего-репозитория/7-1-ansible-hw. - Выполните клонирование данного репозитория к себе на ПК с помощью команды
git clone. - Выполните домашнее задание и заполните у себя локально этот файл README.md:
- впишите вверху название занятия и вашу фамилию и имя
- в каждом задании добавьте решение в требуемом виде (текст/код/скриншоты/ссылка)
- для корректного добавления скриншотов воспользуйтесь инструкцией "Как вставить скриншот в шаблон с решением
- при оформлении используйте возможности языка разметки md (коротко об этом можно посмотреть в инструкции по MarkDown)
- После завершения работы над домашним заданием сделайте коммит (
git commit -m "comment") и отправьте его на Github (git push origin); - Для проверки домашнего задания преподавателем в личном кабинете прикрепите и отправьте ссылку на решение в виде md-файла в вашем Github.
- Любые вопросы по выполнению заданий спрашивайте в чате учебной группы и/или в разделе “Вопросы по заданию” в личном кабинете.
Желаем успехов в выполнении домашнего задания!
Установите Docker Compose и опишите, для чего он нужен и как может улучшить лично вашу жизнь.
Решение 1
Docker Compose позволяет легко управлять несколькими контейнерами Docker, определенными в едином файле YAML (docker-compose.yml). Его использование позволяет мне меньше тратить времени на установку зависимых компонентов отдельно друг от друга. Все компоненты проекта собираются автоматически одним простым командным файлом.
sudo curl -L "https://github.com/docker/compose/releases/download/v2.18.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
Выполните действия и приложите текст конфига на этом этапе. Создайте файл docker-compose.yml и внесите туда первичные настройки:
- version;
- services;
- volumes;
- networks.
При выполнении задания используйте подсеть 10.5.0.0/16. Ваша подсеть должна называться: <ваши фамилия и инициалы>-my-netology-hw. Все приложения из последующих заданий должны находиться в этой конфигурации.
Решение 2
version: '3'
services:
volumes:
networks:
tukaevar-my-netology-hw:
driver: bridge
ipam:
config:
- subnet: 10.5.0.0/16
- Создайте конфигурацию docker-compose для Prometheus с именем контейнера <ваши фамилия и инициалы>-netology-prometheus.
- Добавьте необходимые тома с данными и конфигурацией (конфигурация лежит в репозитории в директории 6-04/prometheus ).
- Обеспечьте внешний доступ к порту 9090 c докер-сервера.
Решение 3
docker-compose.yml
version: '3'
services:
prometheus:
image: prom/prometheus:v3.6.0
container_name: tukaevar-netology-prometheus
command: --web.enable-lifecycle --config.file=/etc/prometheus/prometheus.yml
ports:
- 9090:9090
volumes:
- ./:/etc/prometheus
- prometheus-data:/prometheus
networks:
- tukaevar-my-netology-hw
restart: always
volumes:
prometheus-data:
networks:
tukaevar-my-netology-hw:
driver: bridge
ipam:
config:
- subnet: 10.5.0.0/16
gateway: 10.5.0.1
docker compose up -d
- Создайте конфигурацию docker-compose для Pushgateway с именем контейнера <ваши фамилия и инициалы>-netology-pushgateway.
- Обеспечьте внешний доступ к порту 9091 c докер-сервера.
Решение 4
В docker-compose добавил конфигурацию для Pushgateway.
services:
pushgateway:
image: prom/pushgateway:v1.11.1
container_name: tukaevar-netology-pushgateway
ports:
- 9091:9091
networks:
- tukaevar-my-netology-hw
depends_on:
- prometheus
restart: unless-stopped
- Создайте конфигурацию docker-compose для Grafana с именем контейнера <ваши фамилия и инициалы>-netology-grafana.
- Добавьте необходимые тома с данными и конфигурацией (конфигурация лежит в репозитории в директории 6-04/grafana.)
- Добавьте переменную окружения с путем до файла с кастомными настройками (должен быть в томе), в самом файле пропишите логин=<ваши фамилия и инициалы> пароль=netology.
- Обеспечьте внешний доступ к порту 3000 c порта 80 докер-сервера.
Решение 5
docker-compose.yml
version: '3'
services:
prometheus:
image: prom/prometheus:v3.6.0
container_name: tukaevar-netology-prometheus
command: --web.enable-lifecycle --config.file=/etc/prometheus/prometheus.yml
ports:
- 9090:9090
volumes:
- ./:/etc/prometheus
- prometheus-data:/prometheus
networks:
- tukaevar-my-netology-hw
restart: always
pushgateway:
image: prom/pushgateway:v1.11.1
container_name: tukaevar-netology-pushgateway
ports:
- 9091:9091
networks:
- tukaevar-my-netology-hw
depends_on:
- prometheus
restart: unless-stopped
grafana:
image: grafana/grafana
container_name: tukaevar-netology-grafana
environment:
GF_PATHS_CONFIG: /etc/grafana/custom.ini
ports:
- 80:3000
volumes:
- ./grafana:/etc/grafana
- grafana-data:/var/lib/grafana
networks:
- tukaevar-my-netology-hw
depends_on:
- prometheus
restart: unless-stopped
volumes:
prometheus-data:
grafana-data:
networks:
tukaevar-my-netology-hw:
driver: bridge
ipam:
config:
- subnet: 10.5.0.0/16
gateway: 10.5.0.1
customm.ini
[security]
admin_user = tukaevar
admin_password = netology
- Настройте поочередность запуска контейнеров.
- Настройте режимы перезапуска для контейнеров.
- Настройте использование контейнерами одной сети.
- Запустите сценарий в detached режиме.
Решение 6
Очерёдность запуска контейнеров, режимы перезапуска, использование контейнерами одной сети прописано в решении предыдушей задачи.
Запускаю сценарий в detached режиме.
docker compose up -d
- Выполните запрос в Pushgateway для помещения метрики <ваши фамилия и инициалы> со значением 5 в Prometheus: echo "<ваши фамилия и инициалы> 5" | curl --data-binary @- http://localhost:9091/metrics/job/netology.
- Залогиньтесь в Grafana с помощью логина и пароля из предыдущего задания.
- Cоздайте Data Source Prometheus (Home -> Connections -> Data sources -> Add data source -> Prometheus -> указать "Prometheus server URL = http://prometheus:9090" -> Save & Test).
- Создайте график на основе добавленной в пункте 5 метрики (Build a dashboard -> Add visualization -> Prometheus -> Select metric -> Metric explorer -> <ваши фамилия и инициалы -> Apply.
В качестве решения приложите:
- docker-compose.yml целиком;
- скриншот команды docker ps после запуске docker-compose.yml;
- скриншот графика, постоенного на основе вашей метрики.
Решение 7
docker-compose.yml
version: '3'
services:
prometheus:
image: prom/prometheus:v3.6.0
container_name: tukaevar-netology-prometheus
command: --web.enable-lifecycle --config.file=/etc/prometheus/prometheus.yml
ports:
- 9090:9090
volumes:
- ./:/etc/prometheus
- prometheus-data:/prometheus
networks:
- tukaevar-my-netology-hw
restart: always
pushgateway:
image: prom/pushgateway:v1.11.1
container_name: tukaevar-netology-pushgateway
ports:
- 9091:9091
networks:
- tukaevar-my-netology-hw
depends_on:
- prometheus
restart: unless-stopped
grafana:
image: grafana/grafana
container_name: tukaevar-netology-grafana
environment:
GF_PATHS_CONFIG: /etc/grafana/custom.ini
ports:
- 80:3000
volumes:
- ./grafana:/etc/grafana
- grafana-data:/var/lib/grafana
networks:
- tukaevar-my-netology-hw
depends_on:
- prometheus
restart: unless-stopped
volumes:
prometheus-data:
grafana-data:
networks:
tukaevar-my-netology-hw:
driver: bridge
ipam:
config:
- subnet: 10.5.0.0/16
gateway: 10.5.0.1
- Остановите и удалите все контейнеры одной командой.
В качестве решения приложите скриншот консоли с проделанными действиями.
Решение 8





