好的,这一讲,我们继续来学习一些Docker命令。我的每一个系列连载章节都可能会依赖上一讲的实践内容,所以如果你还没有完成上一讲的实践,建议先去上一讲完成实践后再来看这讲。
移除一个容器
我们现在来试试如何移除一个容器,我们首先用下列命令来查看可以被我们删除的容器:
docker ps -a
在里面定位你要删除的容器,在这里,我会删除上一讲我们运行的ubuntu容器,所以运行下列命令:
docker rm [把这里替换成容器ID]
如:
docker rm b7
需要注意的是,rm并不能删除一个运行中的容器,如果你要删除一个容器的话,需要先停止其运行,所以如果上述rm命令报错,请先运行下列命令停止容器运行。
docker stop [把这里替换成容器ID]
在完成删除操作后,你应该就没法在容器列表中找到它了。
删除所有容器
可能你不满足于单个删除,那可以试试下列命令,该命令会删除所有已停止的Docker容器:
docker container prune
image的相关操作
列出所有的images
docker images
或
docker image ls
删除一个image
需要注意的是,Docker只会删除没有被任何容器使用的image,由于我们在上一个实践已经删除了所有的容器,因此在这里我们尝试删除下ubuntu 这个image
docker rmi ubuntu
删除所有的images
docker image prune
只下载docker image但不运行它
docker pull ubuntu
这里有件有趣的事情是,我们可以输入下列命令:
docker run ubuntu
然后再查询当前运行的containers:
docker ps
你会发现ubuntu的容器并没有在运行,因为你没有给这个container任何的命令,所以它一被启动就结束了。所以我们可以用下列命令让ubuntu容器进入交互模式:
docker run -it ubuntu
当容器运行起来后,你应该会发现当前的Terminal与容器进行了连接。要退出该模式,只需要输入下列命令:
exit
当然还有另一种与容器进行连接的方式
我们还是运行ubuntu这个image,只不过我们做一点小改变:
docker run -itd ubuntu
这次你会发现当命令执行后,Terminal并没有立刻进入到和容器的交互模式界面,因为d代表要让启动容器与当前Terminal分离。
此时我们执行下列命令:
docker ps
此时的输出应该像下面这样:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9017cdca79ce ubuntu "bash" 2 minutes ago Up 2 minutes infallible_herschel
此时我们需要关注的是 ”COMMAND"对应的值,
接下来我们我们要使用这个值进入与Ubuntu的交互界面:
docker exec -it [容器ID] bash
例子如下:
docker exec -it 90 bash
此时你应该又进入了与该容器的交互界面。
或许你不想要进入和容器的交互界面,只想执行容器的某些内部命令
可以尝试运行以下命令:
docker exec [容器ID] ls
它的效果就和我们连接到容器并且执行“ls"的效果差不多,也就是把容器根目录下的内容打印出来。
我们这讲的最后一个要学的inspect命令
docker inspect [容器ID]
这个命令可以获取一个容器的详细信息
当然你也可以用它来获取一个image的详细信息
docker inspect [image ID]
小讲总结
恭喜啦,到这里我们就基本把Docker的基础命令学会了。下一讲我们会一起学习如何将一个Web应用程序作为Docker 容器进行部署