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 协议》,转载必须注明作者和本文链接
Wayne
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!