MeterSphere和Prometheus部署在一台服务器上的注意事项

挂载卷问题:

docker-compose去做容器编排,可能会遇到volume挂载卷写错的问题,也就是从别的机器上复制下来的docker-compose.yml文件里面的volume是错的,这时候我们如果使用docker-compose up -d起动了,那么对应的volume会创建一个新的

比如我在别的服务器上对应docker-compose.yml文件volume配的是下面这样子:
volumes:
  prometheus:
    driver: local
    driver_opts:
      type: none
      o: bind
      device: /home/liushiwen555/prom/prometheus/data
  grafana:
    driver: local
    driver_opts:
      type: none
      o: bind
      device: /home/liushiwen555/prom/grafana
 
 
现在服务器换到别的地方后,原本的device路径要更换成/opt/prom/prometheus/data,在没修改的情况下,我们docker-compose up -d起了服务后,会报下面错误
Starting prom_dingtalk_1      ... done
Starting prom_node-exporter_1 ... done
Starting prom_alertmanager_1  ... done
Creating prom_prometheus_1    ... error
 
ERROR: for prom_prometheus_1  Cannot create container for service prometheus: error while mounting volume with options: type='none' device='/home/liushiwen555/prom/prometheus/data' o='bind': no such file or directory
 
ERROR: for prometheus  Cannot create container for service prometheus: error while mounting volume with options: type='none' device='/home/liushiwen555/prom/prometheus/data' o='bind': no such file or directory
ERROR: Encountered errors while bringing up the project.
 
 
这是由于挂在卷错误,这时如果我们将原本prometheus挂载卷配置从/home/liushiwen555/prom/prometheus/data修改成/opt/prom/prometheus/data,再起还是会报同样的错误
这是由于docker-compose在判断你的VOLUME NAME存在的时候,是不会去创建新的挂载卷,会继续用以前的配置,这就导致它还是用的/home/liushiwen555/prom/prometheus/data这个配置
 
 
具体我们可以使用docker volume ls可以看到所有的挂载卷
[root@localhost prom]# docker volume ls
DRIVER              VOLUME NAME
local               3dc40abe4f0b7cd22bfbef880187b28e2322bf450f69bb5adafc35aaf2cc6648
local               7a680be0a6843212cb8cd35d1fc6dfc05a7b581d67f8513a0be27aec9c8f7770
local               898b780f932cc81c8b542713adb08d2bf1426bd87d7e25ee52036091a5e792ab
local               d9ae1a59bd4042006153c6e93c33360ae07529f135b6e61e21ee226adfdfb7cb
local               metersphere_ms-conf
local               metersphere_ms-data
local               metersphere_ms-kafka-data
local               metersphere_ms-logs
local               metersphere_ms-mysql-data
local               metersphere_ms-prometheus-conf
local               metersphere_ms-prometheus-data
local               metersphere_ms-zookeeper-data
local               prom_grafana
local               prom_prometheus
 
 
我们使用docker volume inspect prom_prometheus的时候会发现以下内容:
[root@localhost prom]# docker volume inspect prom_prometheus
[
    {
        "CreatedAt": "2021-11-04T13:55:41+08:00",
        "Driver": "local",
        "Labels": {
            "com.docker.compose.project": "prom",
            "com.docker.compose.volume": "prometheus"
        },
        "Mountpoint": "/var/lib/docker/volumes/prom_prometheus/_data",
        "Name": "prom_prometheus",
        "Options": {
            "device": "/home/liushiwen555/prom/prometheus/data",
            "o": "bind",
            "type": "none"
        },
        "Scope": "local"
    }
]
 
 
[root@localhost prom]# docker volume inspect prom_grafana
[
    {
        "CreatedAt": "2021-11-04T13:55:41+08:00",
        "Driver": "local",
        "Labels": {
            "com.docker.compose.project": "prom",
            "com.docker.compose.volume": "grafana"
        },
        "Mountpoint": "/var/lib/docker/volumes/prom_grafana/_data",
        "Name": "prom_grafana",
        "Options": {
            "device": "/home/liushiwen555/prom/grafana",
            "o": "bind",
            "type": "none"
        },
        "Scope": "local"
    }
]
会发现Options里面对应的device还是以前的 "device": "/home/liushiwen555/prom/prometheus/data",我们新改的配置并没有应用
解决办法是得先暂停对应的容器实例:
docker stop 容器的CONTAINER ID
移除容器实例:
docker rm 容器的CONTAINER ID
删掉对应的挂载卷VOLUME NAME为prom_grafana和prom_prometheus
docker volume rm prom_grafana
docker volume rm prom_prometheus
 
 
[root@localhost prom]# docker volume ls
DRIVER              VOLUME NAME
local               3dc40abe4f0b7cd22bfbef880187b28e2322bf450f69bb5adafc35aaf2cc6648
local               7a680be0a6843212cb8cd35d1fc6dfc05a7b581d67f8513a0be27aec9c8f7770
local               898b780f932cc81c8b542713adb08d2bf1426bd87d7e25ee52036091a5e792ab
local               d9ae1a59bd4042006153c6e93c33360ae07529f135b6e61e21ee226adfdfb7cb
local               metersphere_ms-conf
local               metersphere_ms-data
local               metersphere_ms-kafka-data
local               metersphere_ms-logs
local               metersphere_ms-mysql-data
local               metersphere_ms-prometheus-conf
local               metersphere_ms-prometheus-data
local               metersphere_ms-zookeeper-data
local               prom_grafana
local               prom_prometheus
[root@localhost prom]# docker volume rm prom_grafana
prom_grafana
[root@localhost prom]# docker volume rm prom_prometheus
prom_prometheus
 
 
然后重新docker-compose up -d新的docker-compose.yml
最后对应的VOLUME会重新创建
 
 
[root@localhost prom]# docker-compose up -d
Creating volume "prom_prometheus" with local driver
Creating volume "prom_grafana" with local driver
prom_node-exporter_1 is up-to-date
prom_dingtalk_1 is up-to-date
prom_alertmanager_1 is up-to-date
Creating prom_prometheus_1 ... done
Creating prom_grafana_1    ... done
[root@localhost prom]# docker volume ls
DRIVER              VOLUME NAME
local               3dc40abe4f0b7cd22bfbef880187b28e2322bf450f69bb5adafc35aaf2cc6648
local               7a680be0a6843212cb8cd35d1fc6dfc05a7b581d67f8513a0be27aec9c8f7770
local               898b780f932cc81c8b542713adb08d2bf1426bd87d7e25ee52036091a5e792ab
local               d9ae1a59bd4042006153c6e93c33360ae07529f135b6e61e21ee226adfdfb7cb
local               metersphere_ms-conf
local               metersphere_ms-data
local               metersphere_ms-kafka-data
local               metersphere_ms-logs
local               metersphere_ms-mysql-data
local               metersphere_ms-prometheus-conf
local               metersphere_ms-prometheus-data
local               metersphere_ms-zookeeper-data
local               prom_grafana
local               prom_prometheus
[root@localhost prom]# docker volume inspect prom_grafana
[
    {
        "CreatedAt": "2021-11-04T15:14:13+08:00",
        "Driver": "local",
        "Labels": {
            "com.docker.compose.project": "prom",
            "com.docker.compose.volume": "grafana"
        },
        "Mountpoint": "/var/lib/docker/volumes/prom_grafana/_data",
        "Name": "prom_grafana",
        "Options": {
            "device": "/opt/prom/grafana",
            "o": "bind",
            "type": "none"
        },
        "Scope": "local"
    }
]
[root@localhost prom]# docker volume inspect prom_prometheus
[
    {
        "CreatedAt": "2021-11-04T15:14:11+08:00",
        "Driver": "local",
        "Labels": {
            "com.docker.compose.project": "prom",
            "com.docker.compose.volume": "prometheus"
        },
        "Mountpoint": "/var/lib/docker/volumes/prom_prometheus/_data",
        "Name": "prom_prometheus",
        "Options": {
            "device": "/opt/prom/prometheus/data",
            "o": "bind",
            "type": "none"
        },
        "Scope": "local"
    }
]
最后对应的服务就全起起来了

端口映射问题:

docker里端口映射关系是  HOST:CONTAINER  的关系,遇到出现映射出来的HOST端口冲突,需要去修改端口映射

比如下面这种:

会发现端口映射写错了,左边宿主机端口,右边容器端口,prometheus默认端口是9090,而这里的端口映射关系写的9200:9200

右边端口应该是容器里prometheus的端口9090,这样写成9200那就需要去容器里改prometheus默认端口了,很麻烦,换成9200:9090就可以了,映射关系是HOST:CONTAINER  宿主机:容器

猜你喜欢

转载自blog.csdn.net/weixin_47614014/article/details/121165228