Docker(一)——Docker概览

Docker是一个用来开发,发送,运行应用的开源平台。确保将你的应用和你的基础架构分离开,所以你可以快速交付软件。使用 Docker,你可以与管理你的应用一样去管理你的基础架构。通过利用 Docker 的方法去快速发送,测试和部署代码,你可以大幅减少在写代码与在生产环境中运行它的延迟。


Docker 平台

Docker 提供能力去打包和运行一个应用在一个被称为 container 的松散隔离的环境。隔离性与安全性使你能够在一台主机上同时运行多个 containercontainer 是轻量化的,并且包括了任何运行应用需要的东西。所以,你不需要依赖任何当前主机上安装的东西。你可以在工作中轻松地共享你的 container,并且确保共享的所有人都可以获得同样的 container 然后以相同的方式运行。

Docker 提供了工具和一个平台去管理你的 container 的生命周期。

  • 使用 container 去开发你的应用以及支持组件
  • container 成为一个发布和测试你的应用的单元
  • 当你已经在生产环境部署你的应用,使用一个 container 。无论你的生产环境是以本地数据为中心还是以云服务为中心,都同样奏效。

可以使用 Docker 干什么?

应用程序的快速,一致的交付

Docker 流程化了开发周期,通过允许开发者工作在一个标准化的环境——使用本地 container 去提供你的应用和服务。container 对于持续集成和持续交付工作流(CI/CD)非常有用。

思考一下下面的场景实例

  • 你的开发人员在本地写代码,然后使用 Docker container 去分享他们的工作
  • 他们使用 Docker 去提交他们的应用到测试环境,然后进行自动和手动的测试
  • 当开发人员发现 bug 时,他们可以在开发环境下修改,并且可以重新部署到测试环境进行测试和验证
  • 当测试完成时,为用户提供解决方案就和把更新的镜像放入到生产环境一样简单。

响应式部署和扩展

Docker 基于容器的平台考虑了高度便携的工作负载。 Docker container 可以运行在开发者的笔记本,数据中心的物理机与虚拟机,云供应商,或者是一个混合的环境。

Docker 的便携和轻量化特征使它能够方便地动态管理工作负载,几乎实时地进行扩展或卸载。

在相同硬件上运行更多工作负载

Docker 是轻量化的、快速的。提供了一个可行的,高效益的替代基于管理程序的虚拟机的方案。所以,你可以利用更多的计算性能去实现你的商业目标。Docker 对于高密度环境是完美的。对于中小型的部署,你需要更少的资源去做更多的事情。


Docker结构

Docker 使用一个 客户端-服务器 结构,Docker 客户端与 Docker 守护进程对话,守护进程承担着构建、运行、发布你的 Docker container 的重任。Docker 客户端可以和守护进程运行在同一个系统,也可以将客户端连接至远端的守护进程。客户端和守护进程使用一个 REST API 进行通信,使用 UNIX 套接字或者网络接口。另一个 Docker 客户端是 Docker Compose,让你可以使用一系列 container 组成的应用进行工作。

Docker 守护进程

Docker 守护进程监听 Docker API 请求,管理 Docker 对象(images, containers, networks, and volumes)。一个守护进程可以和其他的守护进程通信去管理 Docker 服务。

Docker 客户端

客户端是用户与 Docker 交互的主要方式。当你使用命令,比如 docker run,客户端发送命令给守护进程去执行他们。docker 命令使用 Docker API。客户端可以和多个守护进程通信。

Docker 桌面

桌面是一个安装简单的应用程序,使你能够构建和分享集装箱化的应用和微服务。桌面包括守护进程,客户端,Docker Compose,Docker Content Trust,Kubernetes,Credential Helper。

Docker 仓库

仓库存储 Docker 镜像。Docker Hub 是一个公共的仓库,所有人都可以使用,Docker 默认配置去 Docker Hub 寻找镜像。你也可以运行你的私人仓库。

当你使用 docker pulldocker run,可以从你配置的仓库下载需要的镜像。当你使用 docker push,你的镜像被 push 到你配置的仓库中。

Docker 对象

当你使用 Docker 时,你正在创建和使用 镜像、容器、网络、卷、插件和其他对象。

镜像

镜像是一个只读模板去引导创建一个 Docker container。一个镜像总是基于另一个镜像,加上一些额外的定制化。例如,当你建立一个基于 ubuntu 的镜像,但是安装了 Apache Web 服务器和你的应用,与一些使你应用运行的配置文件。

你可能会创建自己的镜像,或者使用那些已经被他人创建并且发布的镜像。为了构建你自己的镜像,使用一个简单的语法去创建 Dockerfile 文件去定义创建镜像需要的步骤并且运行它。在 Dockerfile 中的每个引导都在镜像中创建一个层级。当你改变 Dockerfile 然后 rebuild 镜像,仅仅这些被改变的层级会被重构。这使得镜像轻量化、小而快,比起其他的虚拟技术。

Containers

一个 container 使镜像的一个运行的实例。你可以使用 Docker API 或 CLI 去创建、开始、停止、移动和删除一个 container 。你可以连接一个容器到一个或多个网络,增加存储,甚至基于当前的状态创建一个新的镜像。

默认,一个 container 是独立于另一个 container 和主机。你可以控制如何隔离一个 container 的网络和存储,或者来自与其他 container 和主机的潜在的子系统。

一个 container 是由他的镜像和你创建和开始时提供的配置选项决定的。当一个 container 被移除,任何没有存储在永久空间的对他状态的改变会消失。


docker run 命令

下面的命令运行一个 ubuntu container,交互地连接到你本地的命令行会话,然后运行 /bin/bash

docker run -i -t ubuntu /bin/bash

当你运行上面的命令,下面的事情发生了(假设你使用默认的仓库配置):

  • 如果你本地没有 ubuntu 镜像。Docker 会从你配置的仓库中下载,就像你已经手动输入 docker pull ubuntu 命令一样。
  • Docker 创建一个新的容器,就像你手动运行 docker container create 命令一样
  • Docker 给容器分配一个读写文件系统,作为他的最后一层。这允许一个运行的容器去创建和修改文件和文件夹在它本地的文件系统中。
  • Docker 创建了一个网络接口去连接容器到默认网络中,因为你没有指定任何网络选项。这包括分配一个 IP 地址。默认地,容器可以使用主机网络连接连接外部网络。
  • Docker 开启容器和执行 /bin/bash。因为容器是交互运行,并且添加到你的终端的(由于 -i-t 标签),你可以使用你的键盘提供输入,输出也被记录到你的终端。
  • 当你键入 exit 去终止 /bin/bash 命令,容器停止了,但未被移除。你可以选择开启它或者移除它。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值