Docker 容器就是 Docker 镜像的运行实例,是真正运行项目程序、消耗系统资源、提供服务的地方。 Docker Container 提供了系统硬件环境,我们可以使用 Docker Images 这些制作好的系统盘,再加上我们所编写好的项目代码, run 一下就可以提供服务啦。
Docker组件是如何协作运行容器看到这里,我相信各位读者朋友们应该已经对Docker基础架构已经熟悉的差不多了,我们还记得上一篇我们运行的第一个容器吗?现在我们再通过hello-world这个例子来体会一下 Docker 各个组件是如何协作的。
容器启动过程如下:
Docker 客户端执行 docker run 命令
Docker daemon 发现本地没有 hello-world 镜像
daemon 从 Docker Hub 下载镜像
下载完成,镜像 hello-world 被保存到本地
Docker daemon 启动容器
具体过程可以看如下这幅演示图:
我们可以通过docker images 可以查看到 hello-world 已经下载到本地
我们可以通过docker ps 或者 docker container ls 显示正在运行的容器,我们可以看到, hello-world 在输出提示信息以后就会停止运行,容器自动终止,所以我们在查看的时候没有发现有容器在运行。
我们把 Docker 容器的工作流程剖析的十分清楚了,我们大体可以知道 Docker 组件协作运行容器可以分为以下几个过程:
Docker 客户端执行 docker run 命令
Docker daemon 发现本地没有我们需要的镜像
daemon 从 Docker Hub 下载镜像
下载完成后,镜像被保存到本地
Docker daemon 启动容器
了解了这些过程以后,我们再来理解这些命令就不会觉得很突兀了,下面我来给大家讲讲 Docker 常用的一些命令操作吧。
Docker常用命令我们可以通过 docker -h 去查看命令的详细的帮助文档。在这里我只会讲一些平常日常比赛或者生活中我们可能会用的比较多的一些命令。
例如,我们需要拉取一个 docker 镜像,我们可以用如下命令:
docker pull image_nameimage_name 为镜像的名称,而如果我们想从 Docker Hub 上去下载某个镜像,我们可以使用以下命令:
docker pull centos:latestcentos:lastest 是镜像的名称, Docker daemon 发现本地没有我们需要的镜像,会自动去 Docker Hub 上去下载镜像,下载完成后,该镜像被默认保存到 /var/lib/docker 目录下。
接着我们如果想查看下主机下存在多少镜像,我们可以用如下命令:
docker images我们要想知道当前有哪些容器在运行,我们可以用如下命令:
docker ps -a-a 是查看当前所有正在运行的容器
我们该如何去对一个容器进行启动,重启和停止呢?我们可以用如下命令:
docker start container_name/container_id docker restart container_name/container_id docker stop container_name/container_id这个时候我们如果想进入到这个容器中,我们可以使用 attach 命令:
docker attach container_name/container_id那如果我们想运行这个容器中的镜像的话,并且调用镜像里面的 bash ,我们可以使用如下命令:
docker run -t -i container_name/container_id /bin/bash那如果这个时候,我们想删除指定镜像的话,由于 image 被某个 container 引用(拿来运行),如果不将这个引用的 container 销毁(删除),那 image 肯定是不能被删除。我们首先得先去停止这个容器:
docker ps -a docker stop container_name/container_id然后我们用如下命令去删除这个容器:
docker rm container_name/container_id然后这个时候我们再去删除这个镜像:
docker rmi image_name此时,常用的 Docker 相关的命令就讲到这里为止了,我们在后续的文章中还会反复地提到这些命令。
Dockerfile是什么