kubernetes是docker之上的平台,采用docker实现其底层容器相关的操作。
-
docker是github上开发的Moby开源项目的一部分。docker一词来自于英国口语,意为码头工人(docker worker)。
-
docker版本号遵循YY.MM-xx格式。分为CE(社区版)和EE(企业版)。
-
rkt(发言“rocket”),是CoreOS公司的同类产品。
-
以镜像的形式交付,以容器的方式运行。
-
将应用整合到容器中并运行起来的过程,称为容器化。
-
如果在仓库名称后没有指定具体的镜像标签,则默认拉取latest镜像。latest镜像不保证是仓库中最新的。例如,Alpine仓库中最新的镜像通常标签是edge。
-
只要给出镜像的名字和标签,就能在仓库中定位一个镜像(采用“:”分割)。
-
docker镜像存储在镜像仓库服务(Image Registry)中,镜像仓库服务包含多个镜像仓库(Image Repository)。
-
Google容器镜像仓库服务(GCR)中,需要在仓库名称前面加上gcr.io。
-
使用--filter "is-official=true",只返回官方镜像。
-
悬虚镜像。没有标签的镜像被称为,在列表中展示为<none>:<none>。出现这种镜像,是因为构建新镜像,然后为该新镜像打已经存在的标签。
-
docker通过存储引擎(新版本采用快照机制)的方式实现镜像层堆栈,并保证多镜像层对展示位统一的文件系统。linux上常用overlay2。
-
docker可以识别出要拉取的镜像中,哪几层已经在本地存在。
-
linux上各存储引擎(包括overlay2)有自己的镜像分层,镜像层共享和写时复制(CoW)技术的具体实现。
- docker提供--filter参数过滤docker images ls命令返回的镜像列表内容,dangling,before,since和label。
- 根据镜像的摘要,可以准确拉取镜像。镜像每层会包含一个分发散列值。
- Manifest列表是指摸个镜像标签支持的架构列表。多架构镜像。
- 在docker中,包含应用文件的目录称为构建上下文。通常将Dockerfile放到构建上下文的根目录。
- Dockerfile通过WORKDIR指令,为Dockerfile中尚未执行的指令设置工作目录。
- 多阶段构建方式。一个Dockerfile,包含多个FROM指令。每个FROM指令都是一个新的构建阶段,并且可以复制之前阶段的构件。COPY --from
- Docker Compose。在docker节点上,以单引擎模式进行多容器应用的部署和管理。
docker compose是基于docker engine进行安装的python工具。该工具在声明式的配置文件中定义一个多容器的应用,并通过简单命令部署。compose文件可以是yaml或json格式,其中定义了所有的容器,网络,卷和应用所需的密码。 - Docker Stack。docker节点上,以Swarm模式进行多容器应用进行部署和管理。
- Docker Swarm是企业级的docker安全集群,是微服务应用编排引擎。自docker1.12版本后集成。
容器和虚拟机对比
虚拟机运行在完整的操作系统上。
容器共享主机的操作系统/内核。并且动态分配资源。
Hypervisor是硬件虚拟化。容器是操作系统虚拟化(空间进行隔离)。
CPU,内存,硬盘等硬件资源的占用。操作系统等软件资源的占用,导致虚拟机启动缓慢。
虚拟机的Guest OS能为应用提供更加隔离和安全的环境,不会因为应用程序的漏洞给宿主机造成任何威胁。
Docker Engine只对linux内核namespace API进行封装和调用,真正的内核虚拟化技术是由linux提供。
docker常用命令
- 镜像命令
docker image build
docker image pull
docker image ls
docker image inspect
docker images rm - 容器命令
docker container run
docker container ls
Ctrl-PQ 断开shell和容器终端的连接,容器在后台运行。
docker container exec 在运行的容器中,启动新进程。 - 网络命令
docker network create
docker network ls
docker network inspect
docker network rm - 卷与持久化数据命令
docker volume create
docker volume ls
docker volume inspect
docker volume rm
参考
《深入浅出Docker--》
网友评论