背景
- 为了从A机器里的容器迁移到B机器;并且保证数据和配置不丢失; 并配置域名访问
操作步骤
- 把a机器的容器export,到b机器import;并打上tag标签;
在b机器启动的时候, 使用docker-compose up的时候;提示如下错误
Creating grafana ... error
ERROR: for grafana Cannot create container for service grafana: No command specified
一开始看到是自己环境变量没偶导入;(核心原因是因为export的时候,不会打包环境变量, 而且官方也不建议用export,而是用save)
所以在docker-compose 里面加入的环境变量后;运行 docker-compose up;收到如下提示:
Creating grafana ... error
ERROR: for grafana Cannot create container for service grafana: No command specified
很明显,还是一样的错误,一查发现是因为 启动命令没加;在 yml 里面加入启动命令: entrypoint: “./run.sh”;继续运行docker-compose up
Attaching to grafana
grafana | /run.sh: line 80: exec: grafana-server: not found
这个我就没辙了,为什么会找不到这个 bin 文件呢;我检查了一下环境;发现只要是使用export,好像会把所有环境变量都丢弃,连基本的bin环境变量都丢弃了。所以再次加下环境变量
注意里面的第一个PATH 一定要添加
PATH=/usr/share/grafana/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
GF_PATHS_CONFIG=/etc/grafana/grafana.ini
GF_PATHS_DATA=/var/lib/grafana
GF_PATHS_HOME=/usr/share/grafana
GF_PATHS_LOGS=/var/log/grafana
GF_PATHS_PLUGINS=/var/lib/grafana/plugins
GF_PATHS_PROVISIONING=/etc/grafana/provisioning
然后继续运行 docker-compose up 最后成功了;
- grafana 进入容器后,无法切换到root角色(有时候是为了打包某些文件):解决方式:
docker-compose.yml 加入配置
user: "0"
这样就会以root身份启动容器了;
influxdb
- influxdb, 则非常顺利;只要用 volumnes 指定数据目录(数据目录,用打包的方式打包到新机器),一下子拷贝过来;
- 最后非常完美,grafana 配合 influxdb 都跑起来了;
jwilder/nginx-proxy的修改,以让域名能够访问 grafana ,以及添加https
```
要达到两个目的:
1. 加了证书后,也要能访问http;(目前系统是会自动301到https)
2. 增加一个域名访问 grafana (因为grafana默认是是用ip:port方式访问的,这个方式再阿里云那边会被封掉的)
操作方式;
docker exec -it nginx-proxy /bin/bash
apt-get update
api-get install vim
vim /etc/nginx/conf.d/default.conf
增加一个http域名;
增加一个映射到grafan的域名;
```