如何将现有Docker镜像启动为后台运行容器且解决名称冲突问题
解决方案
你遇到的报错是因为example1这个容器名已经被之前创建的已退出状态的容器占用,和镜像本身无关,你所说的不想用rm删除镜像的要求完全不影响以下操作:
方案1:直接启动已存在的同名容器
你本地已经有基于todoapp镜像创建的example1容器,不需要重新执行run命令。docker start默认就是后台运行容器,不需要额外加类似-d的参数,直接执行以下命令即可:
docker start example1
启动后可以用docker ps验证运行状态,你之前创建容器时已经配置的-p 8000:8000端口映射规则会自动生效。
如果启动后需要进入容器终端操作,可以使用如下命令:
# 启动并附加到容器前台终端 docker start -a example1 # 后台启动后进入容器执行交互式命令 docker exec -it example1 /bin/sh
方案2:更换容器名重新创建运行新容器
如果你不想使用之前的旧容器,也不需要删除旧容器或者镜像,只要更换新的容器名执行run命令即可:
docker run -d -it -p 8000:8000 --name example2 todoapp
方案3:删除旧容器后复用原名(仅当你不需要旧容器时使用)
注意这里删除的是已退出状态的旧容器,不是镜像,完全不会影响你已经构建好的todoapp镜像:
# 删除旧的exited状态的example1容器 docker rm example1 # 再重新执行run命令创建同名容器 docker run -d -it -p 8000:8000 --name example1 todoapp
内容的提问来源于stack exchange,提问作者Ashar
相关产品推荐
相关产品推荐

