docker重启提示已存在一个容器的问题处理

一、问题:在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

 

posted @ 2020-05-18 09:49  sfccl  阅读(2766)  评论(0编辑  收藏  举报