【k8s】(二)docker知识补充

0x01 Docker介绍

Docker是一个非常流行的开源容器引擎,使用沙箱机制实现容器和虚拟化,使开发者可以方便地将应用程序打包并发布到其他机器中,解决了发布时可能存在的环境问题和部署复杂的问题。

其典型工作场景可概述为:开发者A开发了应用test,通过dokcer将test打包为镜像,该镜像通过镜像仓库或直接以文件形式发布到使用者B、C、D…手中,使用者拿到镜像后将镜像在本地通过docker运行起来。该过程避免了test本身环境的部署,只需部署docker就能保证程序正常运行。

同时,docker也提供了容器对设备、网络、用户/组的隔离,常常有人拿他与虚拟机比较,其二者的区别在于共享系统资源情况不同;VM多了一层系统,调度消耗更多:

0x02 Docker中的概念

镜像:如果曾经做过 VM 管理员,则可以把 Docker 镜像理解为 VM 模板,VM 模板就像停止运行的 VM,而 Docker 镜像就像停止运行的容器;而作为一名研发人员,则可以将镜像理解为类(Class)。镜像由多个层组成,每层叠加之后,从外部看来就如一个独立的对象。镜像内部是一个精简的操作系统(OS),同时还包含应用运行所必须的文件和依赖包。

容器:容器是镜像运行时的结构,可以理解为类的实例,他解释镜像中的内容并使用镜像创建一个运行时的实例。一旦容器从镜像启动后,二者之间就变成了互相依赖的关系,并且在镜像上启动的容器全部停止之前,镜像是无法被删除的。尝试删除镜像而不停止或销毁使用它的容器,会导致出错。

镜像仓库:将多个镜像上传到统一的地方进行管理,以提供给更多人方便的使用。例如dockerhub。

0x03 工作架构

如下图所示,Docker_Host(就是docker使用者的机器)从外部镜像仓库拉取(docker pull)镜像到本地(例如nginx),拉取到本地后,image会存储到本地镜像仓库中,此时docker通过docker run将某个image启动为container,即通过docker成功启动了一个nginx服务。

同时,也可以通过dockerfile创建(docker build)一个本地docker镜像,再通过docker push推送到远端镜像仓库中。

0x04 命令详解

镜像管理相关:

docker pull:从远端镜像仓库拉取一个镜像到本地。

docker login/logout:登录/退出远端镜像仓库。

docker push:将本地的镜像推送到远端镜像仓库。

docker images:展示本地当前具备的所有镜像。

docker rmi:删除指定本地镜像。

docker commit:将指定容器提交为本地镜像。

docker save:将指定镜像存储为本地文件。

docker load:加载本地文件为docker镜像。

docker build:通过docker file创建docker镜像。

容器管理相关:

docker run:为指定镜像启动一个容器,该命令包含多个参数,可以为容器指定参数(如重启策略等)。(例如docker run –name=test -p 80:88 -v /home/data:/home/datas nginx,为nginx启动一个容器test,将本机80端口映射到容器88端口, 将本地/home/data目录映射到容器中的/home/datas目录)

docker stats:动态展示当前docker创建的容器状态

docker ps:展示当前docker创建的容器

docker rm:删除一个已停止的容器。该命令包含多个参数。

docker stop:停止一个容器。

docker update:对一些docker的参数(如重启策略等)进行更新。

docker exec:使用容器环境执行命令。(例如:docker exec -it [id] /bin/bash,即可进入container中的bash命令行)。

0x05 命令交互全景图

发表评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注