持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第9天,点击查看活动详情
container(容器)概述
container是通过image去创建的,先有image,然后去创建container。
container在image上面新增了一层可读可写的layer(运行和安装等操作)
可以类比面向对象中:类和实例的关系
类:抽象的object---image
实例:object实例化---container
Image负责app的存储和分发,container负责运行App
实际的操作
我们现在基于之前创建的image去创建container
docker run xxx
接着我们可以通过执行docker container ls 来看一下当前dokcer中所有container的状态,包含之前已经运行的container:
这里可以通过-a 来展示那些已经结束掉的容器,例如我们之前run的hello-world(运行完就退出了,不是一个常驻进程的容器)。
上面COMMAND列就是我们之前Dockerfile写的CMD。这也是容器创建之后默认执行的命令!
下面我们看一下centos这个复杂一点的image:
这里我们发现直接run这个好像没有反应,但ls之后我们发现有一个已经退出的container,只是运行完就退出了。
交互式运行容器
这里介绍一种交互式运行容器的方法:
我们切一个shell,然后看一下ls:
这里其实在第一个shell我们就进入了container了,可以在里面进行读写操作了,例如:
之后可以通过exit退出,此时的容器也退出了,ls不会有:
删除退出的容器
删除退出的容器,直接docker+回车看一下命令:
这边有一系列管理的命令,这里我们可以通过docker container再浏览对应的命令:
接着我们可以通过rm这个命令来删除:
还可以通过container ls -aq来列出所有container的ID,然后通过一个$引用来进行rm,就可以全部清理了:
命令简写
-
docker rm = docker container rm
-
ps -a = container ls -a
-
images = image ls
-
rmi = image rm