Linux系统Docker的镜像和容器的使用

在Docker中,容器(CONTAINER)和镜像(IMAGE)的关系类似于对象和类的关系,镜像是静态的定义,容器是镜像的一个动态实例

我们通过下列命令可以查看Docker已经安装的镜像:

docker images

可以看到一开始我们没有安装任何镜像,只有Docker自带的hello-world镜像:
在这里插入图片描述
①REPOSITORY:表示镜像的仓库源;

②TAG:镜像的标签,代表这个仓库源的不同版本,我们使用REPOSITORY:TAG来定义不同的镜像,比如我们现在的hello-world镜像就是latest最新版,也就是hello-world:latest;

③IMAGE ID:镜像ID;

④CREATED:镜像创建时间;

⑤SIZE:镜像大小。

现在我们通过下列命令启动hello-world镜像的一个容器:

docker run hello-world

会有如下输出:
在这里插入图片描述
我们通过下列命令查看启动过的所有容器:

docker ps -a

有如下输出:
在这里插入图片描述
可以看到上面有我们刚才启动的hello-world的容器,容器ID是e6e0adeed7f1,名字NAMES是系统随机分配的,它现在处于退出状态,我们可以通过下列命令将它重新启动:

docker start e6e0adeed7f1

docker restart e6e0adeed7f1

但是很奇怪,我们并没有看到和刚才启动时一样的输出,而是只有一个e6e0adeed7f1,如下:
在这里插入图片描述
实际上,它确实输出了,我们通过下列命令查看这个容器的标准输出:

docker logs e6e0adeed7f1

我们可以看到因为我们运行了两次这个容器,所以会有两个输出,如下:
在这里插入图片描述
通过上面的例子,现在我们对Docker的镜像和容器的使用有了一个大概的了解,接下来我们再通过另一个例子加深理解。

我们通过下列命令拉取ubuntu镜像文件,在Docker上安装Ubuntu系统:

docker pull ubuntu

然后我们来查看Docker已经安装的镜像:

docker images

如果输出结果中出现ubuntu,如下图,则表示Ubuntu系统安装成功,如果没有出现,也无需着急,可能是由于网络的原因导致上一步没有执行成功,可以在网络顺畅的地方多执行几遍上一步直到结果中出现ubuntu:
在这里插入图片描述
在有了ubuntu这个镜像之后,我们通过下列命令来启动它的一个容器:

docker run -it --name myubuntu ubuntu

上面命令的意思是使用ubuntu镜像启动一个容器,参数为以命令行模式进入该容器,容器的名字叫myubuntu,然后我们在本地Linux系统新建一个终端,执行如下命令:

docker ps

这个命令的意思是查看当前正在运行的容器,可以看到正在运行的容器就是我们刚才启动的ubuntu镜像的一个容器,容器ID是69b7eee2c37f:
在这里插入图片描述
然后我们关掉这个终端回到刚才的终端,发现命令行变成了如下的样子:
在这里插入图片描述
这就是安装在Docker上的Ubuntu系统的命令行,不过,需要注意的是,这里启动的Ubuntu系统是一个Docker容器,之前我们安装的是一个ubuntu镜像,我们可以在上面执行正常的命令,如下:
在这里插入图片描述
我们也可以通过如下命令或CTRL + D快捷键退出这个Ubuntu系统:

exit

执行完上面命令后,我们现在退出了刚才的Ubuntu系统,那我们又怎么进入刚才的Ubuntu系统呢,别着急,我们先通过下列命令查看正在运行的容器:

docker ps

我们会发现结果空空如也,没有正在运行的容器,这是因为刚才我们退出了Ubuntu系统,对应的容器也不再运行了:
在这里插入图片描述
那我们如何知道刚才我们运行的ubuntu镜像的容器的信息呢,其实在前面我们也看到过,我们可以通过下列命令查看启动过的所有容器:

docker ps -a

我们会发现输出结果就有刚才我们退出的ubuntu镜像的容器的信息,我们可以看到它的容器ID是69b7eee2c37f,正处于退出状态:
在这里插入图片描述
好了,现在我们可以根据这个信息再重新进入刚才的Ubuntu系统了,我们执行下列命令:

docker restart myubuntu

docker restart 69b7eee2c37f

但是我们会发现我们的命令行并没有变成在Docker上的Ubuntu系统的命令行,是没有成功进入刚才的Ubuntu系统吗,并不是,实际上,上述命令启动了刚才那个ubuntu镜像的容器,只是它现在被推到了后台,我们通过docker ps命令可以看到刚才那个ubuntu镜像的容器正在运行:
在这里插入图片描述
我们也可以通过docker ps -a命令查看,如下:
在这里插入图片描述
刚才那个ubuntu镜像的容器正在后台运行,我们可以通过下列命令进入:

docker attach 69b7eee2c37f

docker exec -it 69b7eee2c37f /bin/bash

不过,需要注意的是,使用docker attach的话,如果从这个容器退出,会导致容器的停止,但使用docker exec, 如果从这个容器退出,不会导致容器的停止,我们可以通过docker ps命令或docker ps -a命令查看上述两个命令的区别。

在最后,我们来了解一下如何删除容器和镜像,我们可以通过下列命令删除容器,-f是强制(force)删除的意思:

docker rm 容器名或容器ID

docker rm -f 容器名或容器ID

我们可以通过下列命令删除镜像:

docker rmi 容器名或容器ID

不过,需要注意的是,删除镜像时必须保证它没有如何镜像存在,否则会报错,我们可以在删除一个镜像时先将它的所有容器删完再删除它或者直接加上-f参数强制(force)删除。

学习资源:Docker 教程 | 菜鸟教程:https://www.runoob.com/docker/docker-tutorial.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章