Когда Alibaba Cloud встречает Докера (введение в настоящий боевой рекорд)

Grafana Docker

Введение автора: Се Чжисин, инженер по автоматическому тестированию Beichao, эта статья также была опубликована вTesterHomeФорум

предисловие

Причина публикации: я с нетерпением жду, когда все вместе поиграют в докер, быстро создадут среду и исследуют безграничные возможности докера~

Цитаты Бога: Докер — это просто очень практичный инструмент. Не изучайте Докер ради Докера. Важно не Докер, а то, что вы делаете с Докером.

Видение: технический обмен, нет правильного или неправильного ~ приветствуем всех, кто исправит


Первый на карте результатов: docker build Zabbix

Docker создает Grafana, используя источник данных Zabbix


Во-первых, мои препараты

1. Купил сервер Alibaba Cloud, мой 666 на один год (на третий день после покупки сообщили, что есть групповая активность группы 333, 3 года), слезы

Моя конфигурация выглядит следующим образом:


2. Изучите основные принципы и команды работы докера

Рекомендуемый просмотр30 минут для начинающих с Docker

Ниже приведены команды, которые я использовал неоднократно в течение трех дней и двух ночей, для справки:

Команды управления изображением:

•1.docker pull {image_name}(вытащить изображение)

•2.docker push {image_name}(Нажать зеркало)

•3.docker images(Просмотреть все изображения текущей машины)

•4.docker rmi {image_name}(удалить изображение текущей машины)

•5.docker tag {source_images_name:tag your_image_name:tag}(отметить изображение)

Команда управления контейнером

•1.docker run --name={your_name} --d {image_name}(бегущий контейнер)

•2.docker ps -s -a{Просмотреть все текущие контейнеры}

•3.docker stop {container_name}(стоп-контейнер)

•4.docker kill (container_name){убить контейнер}

•5.docker rm -f {container_name}(снять контейнер)

Просмотр информации, связанной с командами

•1.docker logs -f{Имя контейнера} (см. журнал контейнера)

•2.docker info(Просмотреть информацию о службе докеров)

•3.docker inspect{имя контейнера} (просмотреть метаданные контейнера)

Некоторые параметры команды запуска контейнера

•1.--nameУкажите имя контейнера

•2.-dФоновый процесс

•3.-portУкажите правила сопоставления портов

•4.--networkУкажите сетевой режим, который работает в контейнере

•5.-vУкажите том данных, который необходимо смонтировать

•6.-envУкажите переменные среды, которые необходимо передать в контейнер

Разберитесь с четырьмя сетевыми режимами докера:

Container

briage

Host

none

3. Зеркало покупки Docker Hub

Процесс похож на покупки за границей, и все знакомства на английском языке. Я выбрал следующие два

Название изображения = название продукта

Количество звезд = количество похожих отзывов

pull = количество попыток аналогично количеству покупок

Нажмите на деталь, и появится введение к этому изображению.


2. Анализ сборки

1. Прежде чем строить, вы должны четко понимать:

  • [1] Количество стартовых контейнеров

  • [2] Зависимости между контейнерами

  • [3] Создайте метод связи между контейнерами системных компонентов.

2. Возьмем каштан: Возьмем в качестве примера мою практику (Zabbix + Grafana)

[1] Количество стартовых контейнеров 3

Сверху вниз первый контейнерgrafana, второйzabbix-xxl, третий этоzabbix-db-mariadbбаза данных

[2] Зависимости между контейнерами

grafanaполагатьсяzabbix-xxlУкажите источник данных, два контейнера должны взаимодействовать друг с другом.

zabbix-xxlполагатьсяzabbix-db-mariadbОбеспечить поддержку базы данных

[3] Создайте метод связи между контейнерами системных компонентов.

grafanaполагатьсяzabbix-xxlУкажите источник данных ---> поэтому я начинаюgrafanaпри использовании контейнераcontainerрежиме контейнер указывает наzabbix

Выполнить заявление:

docker run -d --name grafana -itd --net=container:zabbix grafana/grafana

zabbix-xxlполагатьсяzabbix-db-mariadbОбеспечить поддержку базы данных ---> Поэтомуzabbix-db-mariadbКонтейнер должен быть вzabbixначать до начала, затем пройти--link zabbix-db:zabbix.dbподключение параметра

Справочник по команде запускаDockerhub

[4] Открытые порты

при запускеzabbix-xxlПри зеркалировании контейнеров нужно обратить внимание на проблему открытых портов, потому что компонентgrafanaконтейнер начнется сcontainerрежим подключен кzabbix-xxlв контейнере.

Итак, начнитеzabbix-xxlПредварительная экспозиция требуется, когда зеркальные контейнерыgrafanaпорт3000, иначе будет невозможноzabbix-xxlв контейнереgrafanaполучить доступ.

-p 80:80 \     zabbix 的端口映射
-p 10051:10051 \   zabbix agent的端口映射
-p 3000:3000     预留给grafana的端口映射

3. Моя команда запуска

В основном взяты изHubei.docker.com/day/monitor в…, я все же рекомендую вам прочитать документацию docker hub, чтобы запустить службу контейнера. Ниже приведена команда, которую я использовал для запуска, просто для справки:

Создайте локальный диск постоянного хранения

create /var/lib/mysql as persistent volume storage

docker run -d -v /var/lib/mysql --name zabbix-db-storage busybox:latest

Запустите базу данных Zabbix-db

start DB for Zabbix - default 1GB innodb_buffer_pool_size is used

docker run \
    -d \
    --name zabbix-db \
    -v /backups:/backups \
    -v /etc/localtime:/etc/localtime:ro \
    --volumes-from zabbix-db-storage \
    --env="MARIADB_USER=zabbix" \
    --env="MARIADB_PASS=my_password" \
    monitoringartist/zabbix-db-mariadb

Запустите Zabbix, подключитесь к базе данных и добавьте сопоставление порта 3000.

start Zabbix linked to started DB

docker run \
    -d \
    --name zabbix \
    -p 80:80 \
    -p 10051:10051 \
    -p  3000:3000\
    -v /etc/localtime:/etc/localtime:ro \
    --link zabbix-db:zabbix.db \
    --env="ZS_DBHost=zabbix.db" \
    --env="ZS_DBUser=zabbix" \
    --env="ZS_DBPassword=my_password" \
    monitoringartist/zabbix-xxl:latest

отcontainerСтарт режимаgrafanaуказатель контейнера --->zabbix

docker run -d --name grafana -itd --net=container:zabbix grafana/grafana

4. Воспользуйтесь плодами среды Zabbix+Grafana и наслаждайтесь обучением и играми в веб-интерфейсе.

Проблемы, с которыми вы можете столкнуться при использовании Grafana:

  • 1. Как установитьzabbixплагин

  • 2. Как настроитьzabbixисточник данных

  • 3. КакzabbixНайдите соединения внутри контейнера с помощью API-интерфейса.(api_jsonrpc.php)

Эти вопросы оставляют друзьям для самостоятельного обсуждения, и Baidu может найти ответ~~