一、問題:在vmware虛擬機中測試以docker方式安裝的prometheus,當重啟虛擬機后,再次運行prometheus的執行文件,提示已有名稱為prometheus的容器存在。
二、處理過程
1、使用docker container ls看不到容器條目(使用docker container ls -a可以看到已存在而未啟動的容器。)
2、使用docker start prometheus啟動容器,再使用docker container ls就可以看到prometheus的容器條目了。
3、上述過程說明prometheus的容器在重啟虛擬機的過程中並不會自動卸載,僅僅處於停止狀態。
4、為確認上述過程,使用命令docker inspect prometheus查看prometheus容器的配置內容,包括id等,再反復使用docker stop prometheus和docker start prometheus命令,可看到同一個id的容器處於停止或啟動狀態。
5、由此分析,prometheus的啟動命令(docker run -d -p 9090:9090 -v $PWD/prometheus.yml:/etc/prometheus/prometheus.yml -v $PWD/prometheus-data:/prometheus --name prometheus prom/prometheus),其實質是建立docker容器的命令。若此容器還存在的狀態下重啟虛擬機,則此容器仍然不會消失,僅處於停止狀態,可使用docker start prometheus命令恢復運行。
6、若需要再次使用prometheus的容器建立命令(docker run -d -p 9090:9090 -v $PWD/prometheus.yml:/etc/prometheus/prometheus.yml -v $PWD/prometheus-data:/prometheus --name prometheus prom/prometheus)而不會與已存在的prometheus沖突的話,需要先停止容器(docker stop prometheus),移除容器(docker rm prometheus)才可。
三、配置prometheus開機啟動
1、修改/etc/rc.d/rc.local文件屬性,添加執行權限 (默認情況下,/etc/rc.d/rc.local是沒有執行權限的)
[root@ELK ~]# chmod +x /etc/rc.d/rc.local
2、在/etc/rc.d/rc.local中添加prometheus容器啟動腳本命令
[root@ELK ~]# vi /etc/rc.d/rc.local
...
docker start prometheus
四、重啟vmware虛擬機測試,prometheus運行正常。
[root@ELK ~]# docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8d969b5e3765 prom/prometheus "/bin/prometheus --c…" 2 hours ago Up 18 seconds 0.0.0.0:9090->9090/tcp prometheus