docker restart container failed: “already in use”, 但是列表没有对应容器
场景:
使用 Docker 运行 MySQL 数据库。
运行:
docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:latest
然后关闭:
docker stop mysql
之后再尝试重启会报错:
PS C:\Users\Wayne> docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:latest
docker: Error response from daemon: Conflict. The container name "/mysql" is already in use by container 036a0bcd196c5b23431dcd9876cac62082063bf62a492145dd8a55141f4dfd74. You have to remove (or rename) that container to be able to reuse that name..
See 'docker run --help'.
可是在容器列表却什么也没有:
docker container list
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
解决办法:
因为容器只是被终止,而没有被移除,查看所有容器:
docker ps -a
你可以简单地用下面的命令启动它:
docker start mysql
可选方案:
如果您每次都想用下面的命令启动容器:
docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:latest
可以使用下面两种方法:
方法1:
使用 --rm
选项,当容器被终止运行时会自动销毁:
docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d --rm mysql:latest
方法2:
在启动当前使用的命令之前先停止容器,然后显式地删除它:
docker stop <container name>
docker rm <container name>
本作品采用《CC 协议》,转载必须注明作者和本文链接