GVKun编程网logo

pmm docker-compose 运行试用(docker-compose lnmp)

13

最近很多小伙伴都在问pmmdocker-compose运行试用和docker-composelnmp这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展25.dockercompose

最近很多小伙伴都在问pmm docker-compose 运行试用docker-compose lnmp这两个问题,那么本篇文章就来给大家详细解答一下,同时本文还将给你拓展25.docker compose 简介 和 docker-compose.yml 参数介绍、apache pinot-docker-compose 运行试用、c# – 使用docker-compose运行docker镜像、Docker Compose 版本过高(Docker 版本不匹配),降低 docker-compose 版本等相关知识,下面开始了哦!

本文目录一览:

pmm docker-compose 运行试用(docker-compose lnmp)

pmm docker-compose 运行试用(docker-compose lnmp)

pmm 是一个很不错的 mysql、mongo、postgresql 数据库监控平台,基于 prometheus、grafana、exporter 算是一个比较完整
的数据库分析平台

参考架构图

 

环境准备

对于 pg 以及 mysql 的运行基于 docker 官方镜像,添加了 pmm client 包,同时为了添加指标,添加了 gogs(git 服务),pgloader
mysql 数据迁移到 pg,没有配置 node exporter

  • docker-compose 文件
 
version: "3"
services: 
  pgloader-mysql:
    image: dimitri/pgloader
    command: pgloader mysql://root:dalongrong@mysql/gogs postgresql://postgres:dalong@postgres:5432/appdemo
  gogs:
    image: gogs/gogs
    ports:
      - "10022:22"
      - "3000:3000"
  pmmserver:
    image: percona/pmm-server:1.17
    ports: 
    - "80:80"
  mysqlexporter:
    image: prom/mysqld-exporter
    ports: 
    - "9104:9104"
    environment: 
    - "DATA_SOURCE_NAME=root:dalongrong@(mysql:3306)/"
  mysql:
    build: 
     context: ./mysql
     dockerfile: Dockerfile
    ports:
      - 3306:3306
    command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
    environment:
      MYSQL_ROOT_PASSWORD: dalongrong
      MYSQL_DATABASE: gogs
      MYSQL_USER: gogs
      MYSQL_PASSWORD: dalongrong
      TZ: Asia/Shanghai
  postgres:
    build: 
     context: ./pg
     dockerfile: Dockerfile
    ports:
    - "5432:5432"
    environment:
    - "POSTGRES_PASSWORD:dalong"
  pgexporter:
    image: wrouesnel/postgres_exporter:latest
    ports:
    - 9187:9187
    environment:
    - DATA_SOURCE_NAME=postgresql://postgres:dalong@postgres:5432/postgres_exporter?sslmode=disable
  • pg dockerfile
FROM postgres:latest
RUN set -ex; \
    apt-get update; \
 apt-get install -y gnupg apt-transport-https; \
 echo ''deb https://repo.percona.com/apt stretch main'' > /etc/apt/sources.list.d/percona.list; \
 apt-get update && apt-get install -y --allow-unauthenticated pmm-client; \
 apt-get remove --purge -y gnupg apt-transport-https; \
 apt-get autoremove -y --purge; \
 rm -rf /var/lib/apt/lists/* \
 true
COPY init.sql /docker-entrypoint-initdb.d/
COPY initpmm.sh /root/
 
 

说明:
主要是 initpmm.sh 文件,进行 exporter metrics 注册

 
#!/bin/sh
while ! pmm-admin config --client-name pg1 --server pmmserver
do
    sleep 1
done
pmm-admin add external:metrics postgresql-demo pgexporter:9187
 
  • mysql dockerfile
FROM mysql:5.7.16
RUN set -ex; \
    apt-get update; \
 apt-get install -y gnupg apt-transport-https; \
 echo ''deb https://repo.percona.com/apt stretch main'' > /etc/apt/sources.list.d/percona.list; \
 apt-get update && apt-get install -y --allow-unauthenticated pmm-client; \
 apt-get remove --purge --force-yes -y apt-transport-https; \
 apt-get autoremove -y --force-yes --purge; \
 rm -rf /var/lib/apt/lists/* \
 true
COPY initpmm.sh /root/
 

说明:
主要是 initpmm.sh 文件,进行 exporter metrics 注册

 
#!/bin/sh
while ! pmm-admin config --client-name mysql1 --server pmmserver
do
    sleep 1
done
pmm-admin add external:metrics mysql-demo mysqlexporter:9104
 
 

启动 && 配置

  • 启动
docker-compose up -d
  • 注册 mysql 以及 pg metrics
 docker-compose exec mysql sh /root/initpmm.sh
OK, PMM server is alive.
PMM Server | pmmserver 
Client Name | mysql1
Client Address | 172.24.0.8 
External metrics added.
docker-compose exec postgres sh /root/initpmm.sh
OK, PMM server is alive.
PMM Server | pmmserver 
Client Name | pg1
Client Address | 172.24.0.6 
External metrics added.
  • prometheus target 效果

 

  • grafana 效果

 

  • 配置 gogs 导入部分数据

 

  • pg 导入数据
docker-compose up pgloader-mysql

效果

pgloader-mysql_1 | WARNING:
pgloader-mysql_1 | Couldn''t re-execute SBCL with proper personality flags (/proc isn''t mounted? setuid?)
pgloader-mysql_1 | Trying to continue anyway.
pgloader-mysql_1 | 2019-08-05T14:26:59.075000Z LOG pgloader version "3.6.2~devel"
pgloader-mysql_1 | 2019-08-05T14:26:59.212000Z LOG Migrating from #<MYSQL-CONNECTION mysql://root@mysql:3306/gogs {1006496943}>
pgloader-mysql_1 | 2019-08-05T14:26:59.213000Z LOG Migrating into #<PGSQL-CONNECTION pgsql://postgres@postgres:5432/appdemo {10066DF6D3}>
pgloader-mysql_1 | 2019-08-05T14:27:01.364000Z LOG report summary reset
pgloader-mysql_1 | table name errors rows bytes total time
pgloader-mysql_1 | ----------------------------- --------- --------- --------- --------------
pgloader-mysql_1 | fetch meta data 0 119 0.256s
pgloader-mysql_1 | Create Schemas 0 0 0.013s
pgloader-mysql_1 | Create SQL Types 0 0 0.027s
pgloader-mysql_1 | Create tables 0 72 0.411s
pgloader-mysql_1 | Set Table OIDs 0 36 0.004s
pgloader-mysql_1 | ----------------------------- --------- --------- --------- --------------
pgloader-mysql_1 | gogs.access 0 0 0.032s
pgloader-mysql_1 | gogs.access_token 0 0 0.021s
pgloader-mysql_1 | gogs.action 0 0 0.078s
pgloader-mysql_1 | gogs.attachment 0 0 0.113s
pgloader-mysql_1 | gogs.collaboration 0 0 0.030s
pgloader-mysql_1 | gogs.deploy_key 0 0 0.068s
pgloader-mysql_1 | gogs.comment 0 0 0.122s
pgloader-mysql_1 | gogs.follow 0 0 0.075s
pgloader-mysql_1 | gogs.issue 0 0 0.102s
pgloader-mysql_1 | gogs.email_address 0 0 0.142s
pgloader-mysql_1 | gogs.hook_task 0 0 0.157s
pgloader-mysql_1 | gogs.issue_user 0 0 0.114s
pgloader-mysql_1 | gogs.issue_label 0 0 0.135s
pgloader-mysql_1 | gogs.login_source 0 0 0.130s
pgloader-mysql_1 | gogs.label 0 0 0.154s
pgloader-mysql_1 | gogs.mirror 0 0 0.154s
pgloader-mysql_1 | gogs.milestone 0 0 0.139s
pgloader-mysql_1 | gogs.org_user 0 0 0.122s
pgloader-mysql_1 | gogs.notice 0 0 0.154s
pgloader-mysql_1 | gogs.protect_branch 0 0 0.128s
pgloader-mysql_1 | gogs.protect_branch_whitelist 0 0 0.134s
pgloader-mysql_1 | gogs.public_key 0 0 0.141s
pgloader-mysql_1 | gogs.pull_request 0 0 0.147s
pgloader-mysql_1 | gogs.release 0 0 0.170s
pgloader-mysql_1 | gogs.repository 0 0 0.143s
pgloader-mysql_1 | gogs.star 0 0 0.146s
pgloader-mysql_1 | gogs.team 0 0 0.149s
pgloader-mysql_1 | gogs.team_user 0 0 0.149s
pgloader-mysql_1 | gogs.team_repo 0 0 0.166s
pgloader-mysql_1 | gogs.two_factor_recovery_code 0 0 0.151s
pgloader-mysql_1 | gogs.two_factor 0 0 0.155s
pgloader-mysql_1 | gogs."user" 0 1 0.3 kB 0.167s
pgloader-mysql_1 | gogs.upload 0 0 0.178s
pgloader-mysql_1 | gogs.watch 0 0 0.162s
pgloader-mysql_1 | gogs.version 0 1 0.0 kB 0.179s
pgloader-mysql_1 | gogs.webhook 0 0 0.167s
pgloader-mysql_1 | ----------------------------- --------- --------- --------- --------------
pgloader-mysql_1 | COPY Threads Completion 0 4 0.316s
pgloader-mysql_1 | Create Indexes 0 83 0.644s
pgloader-mysql_1 | Index Build Completion 0 83 0.222s
pgloader-mysql_1 | Reset Sequences 0 36 0.026s
pgloader-mysql_1 | Primary Keys 0 36 0.049s
pgloader-mysql_1 | Create Foreign Keys 0 0 0.000s
pgloader-mysql_1 | Create Triggers 0 0 0.001s
pgloader-mysql_1 | Set Search Path 0 1 0.002s
pgloader-mysql_1 | Install Comments 0 0 0.000s
pgloader-mysql_1 | ----------------------------- --------- --------- --------- --------------
pgloader-mysql_1 | Total import time ? 2 0.3 kB 1.260s
pmm-docker_pgloader-mysql_1 exited with code 0
  • mysql 指标信息查看

 

  • pg 指标查看

 

  • 另外一种添加数据库以及 metrics 的方法
    实际上 pmm 也提供了通过界面添加的方法,如下图

 


添加 mysql

 

  • 查询分析界面

 

 

说明

pmm 提供的指标模版还是很全的,包含了我们实际数据库分析中的很多方便的指标,可以帮助我们方便的分析系统的瓶颈,同时官方文档
也比较全的提供了操作手册(有 pdf 版本的)

参考资料

https://www.percona.com/doc/percona-monitoring-and-management/index.html
https://github.com/rongfengliang/pmm-learning

25.docker compose 简介 和 docker-compose.yml 参数介绍

25.docker compose 简介 和 docker-compose.yml 参数介绍

1. docker compose概念  文档  https://docs.docker.com/compose/compose-file/compose-versioning

  一个基于 docker 的工具

  可以通过一个 yml 文件定义多容器的 docker 应用

  通过一条命令就可以根据 yml 文件的定义 去创建或者管理这多个容器

2 docker compose 版本 2 与 版本 3 的区别

  最大的区别

    version 2 只能用于单机

    version 3 可用于多机

3. docker-compose.yml

  

    Services

      一个 service 代表一个 container , 这个 container 可以从 dockerhub 的 image 来创建, 或者从本地的 Dockerfile build出来的image 来创建

      service 的启动 类似与 docker run , 我们可以给其指定 network 和 volume . 所以可以给 service 指定 network 和 volume 的引用

      eg :

      docker run -d --name db -v db-data:/var/liv/postgresql/data --network back-tier  postgres:9.4

      services:

        db:                #service 的名称为 db

          image: postgres:9.4      #service image 为 postgres:9.4  这是从远程拉取的

          volumes:

            - "db-data:/var/liv/postgresql/data"  #将外部db-data挂载到container 的 /var/liv/postgresql/data 内

          networks:

            - back-tier        #网络为 back-tier

      eg2:

      docker run -d --link db --link redis --network back-tier  worker

      services:

        worker:

          build: ./worker

          links:

            - db

            - redis

          networks:

            - back-tier        #在同一个网络上 不需要links

    Volumes:

      上面 的

      volumes:

       - "db-data:/var/liv/postgresql/data"  #将外部db-data挂载到container 的 /var/liv/postgresql/data 内

      会有单独的一个 volumes (与 services 同级别) 对db-data 进行 阐述

      类似于 docker volume create db-data

      eg:

      volumes:

        db-data:

    Nerworks:

      上面 的

      networks:

        - back-tier        #在同一个网络上 不需要links

      会有单独的一个 networks (与 services 同级别) 对back-tier 进行 阐述

      类似于  docker nerwork create -d bridge back-tier

      networks:

        front-tier:

          driver: bridge

        back-tier:

          driver: bridge

4编写 docker-compose.yml

# docker compose api 版本

version: ''3''

 

services:

# 定义了 两个 service 分别是 名字分别是 wordpress 和 mysql

  wordpress:

#image 为 word press

    image: wordpress

#本地 8888 端口 映射 容器 80 端口

    ports:

      - 8888:80

#wordpress 连接数据库 的 host 为 mysql , passwword 为 root 类似于 -e

    environment:

      WORDPRESS_DB_HOST: mysql

      WORDPRESS_DB_PASSWORD: root

#指定连接 的网络 为 my-bridge

    networks:

      - my-bridge

 

  mysql:

    image: mysql:5.7.27

# 数据库 root 的 连接密码 和 所使用的数据库名称

    environment:

      MYSQL_ROOT_PASSWORD: root

      MYSQL_DATABASE: wordpress

# 外部 mysql-data 挂载到 容器内的 /var/lib/mysql

    volumes:

      - mysql-data:/var/lib/mysql

#指定连接 的网络 为 my-bridge

    networks:

      - my-bridge

 

# 定义 volumes

volumes:

  mysql-data:

 

# 定义 networks

networks:

  my-bridge:

    driver: bridge

 

apache pinot-docker-compose 运行试用

apache pinot-docker-compose 运行试用

apache pinot 是一个实时的 OLAP 数据存储,同时包含了自己的查询语言,因为 maven 构建花费时间较大
所以使用 docker-compose 运行

docker-compose 文件

 
version: "3.7"
services: 
  app:
    image: winedepot/pinot:0.1.4-SNAPSHOT
    entrypoint: ./bin/quick-start-offline.sh
    ports: 
    - "9000:9000"
    - "8099:8099"
    - "8098:8098"
    - "8097:8097"
    - "8096:8096"
    - "9514:9514"

说明
这个一个简单的 quick-start-offline.sh 运行,实际可以结合场景进行修改

启动 && 测试

  • 启动
docker-compose up -d
  • 查询

注意先打开 http://localhost:9000, 因为这个系统属于单页面应用,直接打开 http://localhost:9000/query 会提示
资源找不到,这个是一个坑,但是使用 maven 构建之后也是同时的错误,所以才改为 docker 运行的

 

说明

apache pinot 的功能还是比较强大,以下为一个参考架构,后边可以深入研究下

 

参考资料

https://pinot.readthedocs.io/en/latest/architecture.html
https://github.com/rongfengliang/apache-pinot-docker-compose

c# – 使用docker-compose运行docker镜像

c# – 使用docker-compose运行docker镜像

我在C#中使用我的简单应用程序与postgresql连接.
我想用这个应用程序创建图像,然后用docker运行.

我使用时一切正常:

$docker build
$docker run postgres
$docker run my_app

另外,当我从应用程序目录使用compose时,一切都还可以:

$docker-compose build
$docker-compose up

但有没有机会使用docker-compose为我之前建立的图像?

我想将此图像发布到我的仓库,我的团队中的其他人只需下载并运行此图像(应用程序数据库).

当我进行compose-build和next compose运行my_app时,我在连接数据库时遇到异常:

dbug: Npgsql.NpgsqlConnection[3]
      opening connection to database 'POSTGRES_USER' on server 'tcp://postgres:5432'.

Unhandled Exception: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.AggregateException: One or more errors occurred. (No such device or address) ---> System.Net.Internals.socketExceptionFactory+ExtendedSocketException: No such device or address

我当前的docker-compose.yml文件:

version: '2'

services:

  web:
    container_name: 'postgrescoreapp'
    image: 'postgrescoreapp'
    build:
      context: .
      dockerfile: Dockerfile
    volumes:
      - .:/var/www/postgrescoreapp
    ports:
     - "5001:5001"
    depends_on:
     - "postgres"
    networks:
      - postgrescoreapp-network

  postgres:
    container_name: 'postgres'
    image: postgres
    environment:
      POSTGRES_PASSWORD: password
    networks:
      - postgrescoreapp-network

networks:
  postgrescoreapp-network:
    driver: bridge

解决方法:

您应该使用以下名称构建映像:(registryName:RegistryPort)/ imagename:version

$docker build -t myRegistry.example.com:5000/myApp:latest .
$docker build -t myRegistry.example.com:5000/myDb:latest .

现在将这些行添加到docker-compose文件中:

Myapp:                                                    
  image: myRegistry.example.com:5000/myApp:latest 

MyDb:                        
  image: myRegistry.example.com:5000/myDb:latest

然后推它:

$docker push myRegistry.example.com:5000/myApp:latest
$docker push myRegistry.example.com:5000/myDb:latest

你的伙伴现在应该能够拉它

$docker pull myRegistry.example.com:5000/myApp:latest
$docker pull myRegistry.example.com:5000/myDb:latest

Docker Compose 版本过高(Docker 版本不匹配),降低 docker-compose 版本

Docker Compose 版本过高(Docker 版本不匹配),降低 docker-compose 版本

通过 docker-compose 启动容器,报错:

ERROR: The Docker Engine version is less than the minimum required by Compose. Your current project requires a Docker Engine of version 1.10.0 or greater.

  

升级 Docker 过于麻烦,只能降 docker-compose 的版本。

先看一下我们已经安装的 Docker 版本:

[root@Redmine-186 docker-compose]# docker -v
Docker version 1.7.1, build 786b29d/1.7.1

  经查 Docker Compose Github Docs,发现 docker-compose 1.5.2 版本是兼容 Docker 1.7.1 的:Note that Compose 1.5.2 requires Docker 1.7.1 or later.

  好了,开始降级 docker-compose,先卸载:

# pip uninstall docker-compose

  

再安装指定版本:

# pip install docker-compose==1.5.2

  至此,docker-compose 降版本成功!

docker-compose.yml 版本问题

解决完 docker-compse 版本问题适配之后,对着已有的 docker-compose.yml 执行 “,会提示不能正常识别 docker-compose.yml 文件中的内容。究其原因,是因为我们的 docker-compose 1.5.2 只支持 V1 版本的 docker-compose.yml ,那么好,把现在 V2 版本的 docker-compose.yml 改成 V1 版本的格式。

V1 版本的 docker-compose.yml 只被支持到 docker-compose 1.6.x。再往后的 docker-compose 版本就不再支持 V1 版本的 docker-compose.yml。

先看文档:Compose file versions and upgrading。

V1 版本的 docker-compose.yml 文件格式主要区别就是: 
- 没有开头的 version 声明 
- 没有 services 声明 
- 不支持 depends_on 
- 不支持命名的 volumes, networks, build arguments 声明 
- 其他我没用到的所以没细究的区别

附录

  • How To Install Docker on CentOS 6
  • Docker and docker-compose in CentOS 6
  • 关于 pip 安装时提示 pkg_resources.DistributionNotFound 错误问题
  • CentOS 升级 Python2.7
  • ERROR: The Docker Engine version is less than the minimum required by Compose
  • Docker Compose Github Docs
  • Compose file versions and upgrading

关于pmm docker-compose 运行试用docker-compose lnmp的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于25.docker compose 简介 和 docker-compose.yml 参数介绍、apache pinot-docker-compose 运行试用、c# – 使用docker-compose运行docker镜像、Docker Compose 版本过高(Docker 版本不匹配),降低 docker-compose 版本的相关知识,请在本站寻找。

本文标签: