一、Docker的概念

1. 简介
Docker 是一个开源的应用容器引擎,基于Go语言实现;
Docker是一个开发、传输和运行应用程序的开放平台,可以将应用程序与基础架构分离,实现快速交付。

1)Docker引擎,是一个client-server的应用,包含以下组件:
server:一个长期运行的守护进程dockerd
rest api:用于与守护进程沟通并指导做什么的程序接口
client:command line interface(CLI) 客户端docker

客户端使用Docker API通过脚本或直接CLI命令来实现对Docker守护程序的控制和交互。 守护进程创建和管理Docker对象,例如映像,容器,网络和卷。
在这里插入图片描述

2)Docker架构
采用client-server架构,包含:daemon(守护进程)、client(客户端)、registry(仓库)。

  • 守护进程监听Docker
    API请求,创建和管理各docker对象,包括images(镜像)、containers(容器)、networks、volumes、plugins和其他对象。
  • Docker客户端用来用户与Docker服务端进行交互,比如用户输入指令docker run,客户端会下发给dockerd。
  • registry为镜像仓库,通过docker pull 或 docker run从仓库去拉取镜像,用docker push推送镜像到仓库。
  • image(镜像):就是用于指导创建容器的只读模板。
  • container(容器):就是一个镜像的可运行实例。

在这里插入图片描述
3)示例 docker run command
当执行该命令“docker run -i -t ubuntu /bin/bash”后,发生了什么:
如果本地没有ubuntu镜像,Docker会从配置的仓库中拉取对应的镜像,就像手动执行docker pull ubuntu

  • Docker创建一个新的容器(container),就像手动执行docker container create
  • Docker会给容器分配一个读写文件系统作为最后一层(final layer),允许容器在这个本地文件系统中创建或修改文件和文件夹
  • Docker给容器创建网络接口,包括分配IP地址;默认情况下,容器可以使用主机的网络连接连接到外部网络
  • Docker启动容器并执行/bin/bash,由于使用了-i
    -t,容器会交互式运行,即运行日志会直接显示在终端上,可以直接在终端上进行输入输出
  • 可以通过exit退出/bin/bash,容器会停止但不会移除。

4)底层技术
Docker是用Go语言编写的,利用Linux内核的几种特性来实现其功能。Docker使用的技术叫namespaces,用来为容器提供隔离的工作区;当运行一个容器时,Docker会为容器创建一系列的namespaces。这些namespaces提供了隔离层,容器的每一方面都运行在独立的namespaces 中,并且访问权限仅限于这些namespaces。当然也还有其他的而隔离技术:cgroups、UnionFS 等。

2. 优点
1)启动很快,没有额外的开销
2)一键(单命令)部署,简单到安装一个应用只需输入一行命令
3)预配置应用,可以在(公共)应用镜像的基础进行个性化修改
4)资源隔离,基于各自应用或服务,进行设置、监听、调整
5)一致性,一次配置各处部署
6)一个完整的平台,包括:Base Engine,容器的基础引擎;Compose,整合编排复杂的部署;Swarm,用以管理Docker集群;Machine,负责供给。可以非常轻松地管理系统的整个生命周期。
7)扩展性,微服务扩展

3. 适用场景:
web应用的自动化打包和发布;
自动化测试和持续集成、发布;
在服务型环境中部署和调整数据库或其他的后台应用;
从头编译或者扩展现有的OpenShift或Cloud Foundry平台来搭建自己的PaaS环境。

参考:
https://docs.docker.com/engine/docker-overview/
https://www.cnblogs.com/yfalcon/p/9041527.html

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值