背景

  • 为了从A机器里的容器迁移到B机器;并且保证数据和配置不丢失; 并配置域名访问

操作步骤

  • 把a机器的容器export,到b机器import;并打上tag标签;
  • 在b机器启动的时候, 使用docker-compose up的时候;提示如下错误

    1. Creating grafana ... error
    2. ERROR: for grafana Cannot create container for service grafana: No command specified
  • 一开始看到是自己环境变量没偶导入;(核心原因是因为export的时候,不会打包环境变量, 而且官方也不建议用export,而是用save)

    1. 所以在docker-compose 里面加入的环境变量后;运行 docker-compose up;收到如下提示:
    2. Creating grafana ... error
    3. ERROR: for grafana Cannot create container for service grafana: No command specified
  • 很明显,还是一样的错误,一查发现是因为 启动命令没加;在 yml 里面加入启动命令: entrypoint: “./run.sh”;继续运行docker-compose up

    1. Attaching to grafana
    2. grafana | /run.sh: line 80: exec: grafana-server: not found
  • 这个我就没辙了,为什么会找不到这个 bin 文件呢;我检查了一下环境;发现只要是使用export,好像会把所有环境变量都丢弃,连基本的bin环境变量都丢弃了。所以再次加下环境变量

  • 注意里面的第一个PATH 一定要添加

    1. PATH=/usr/share/grafana/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    2. GF_PATHS_CONFIG=/etc/grafana/grafana.ini
    3. GF_PATHS_DATA=/var/lib/grafana
    4. GF_PATHS_HOME=/usr/share/grafana
    5. GF_PATHS_LOGS=/var/log/grafana
    6. GF_PATHS_PLUGINS=/var/lib/grafana/plugins
    7. GF_PATHS_PROVISIONING=/etc/grafana/provisioning
  • 然后继续运行 docker-compose up 最后成功了;

  • grafana 进入容器后,无法切换到root角色(有时候是为了打包某些文件):解决方式:
    1. docker-compose.yml 加入配置
    2. user: "0"
    3. 这样就会以root身份启动容器了;

influxdb

  • influxdb, 则非常顺利;只要用 volumnes 指定数据目录(数据目录,用打包的方式打包到新机器),一下子拷贝过来;
  • 最后非常完美,grafana 配合 influxdb 都跑起来了;

jwilder/nginx-proxy的修改,以让域名能够访问 grafana ,以及添加https

  1. ```
  2. 要达到两个目的:
  3. 1. 加了证书后,也要能访问http;(目前系统是会自动301到https)
  4. 2. 增加一个域名访问 grafana (因为grafana默认是是用ip:port方式访问的,这个方式再阿里云那边会被封掉的)
  5. 操作方式;
  6. docker exec -it nginx-proxy /bin/bash
  7. apt-get update
  8. api-get install vim
  9. vim /etc/nginx/conf.d/default.conf
  10. 增加一个http域名;
  11. 增加一个映射到grafan的域名;

```

参考资料