------------------------------------重要说明------------------------------------

本文内容都是参考Cloudman系列进行学习,是个人学习过程记录!

原版请参考cloudman《每天5分钟玩转Docker容器技术》Cloudman博客如下:

https://blog.51cto.com/cloudman

------------------------------------重要说明------------------------------------

Docker 服务器 - Docker daemon

Docker 客户端 – Client

Docker 容器 - Container

Docker 镜像 - Image

Registry – 仓库

记忆理解:首先搭建一个码头dock/docker(Docker daemon),码头需要管理吗?(Docker client),码头干什么呢?运送集装箱(container),集装箱里面装的是什么呢?(货物/image),货物从哪里来的呢?(registry仓库)

Docker 架构如下图所示:

Docker 采用的是 Client/Server 架构。客户端向服务器发送请求,服务器负责构建、运行和分发容器。客户端和服务器可以运行在同一个 Host 上,客户端也可以通过 socket 或 REST API 与远程的服务器通信。

1. Docker 客户端

最常用的 Docker 客户端是 docker 命令。通过 docker 我们可以方便地在 Host 上构建和运行容器。

docker 支持很多操作(子命令),后面会逐步用到。

除了 docker 命令行工具,用户也可以通过 REST API 与服务器通信。

2. Docker 服务器

Docker daemon 是服务器组件,以 Linux 后台服务的方式运行。

Docker daemon 运行在 Docker host 上,负责创建、运行、监控容器,构建、存储镜像。

默认配置下,Docker daemon 只能响应来自本地 Host 的客户端请求。如果要允许远程客户端请求,需要在配置文件中打开 TCP 监听,步骤如下:

1、编辑配置文件 /etc/systemd/system/multi-user.target.wants/docker.service,在环境变量 ExecStart 后面添加 -H tcp://0.0.0.0,允许来自任意 IP 的客户端连接。

如果使用的是其他操作系统,配置文件的位置可能会不一样

2、重启 Docker daemon。

3、服务器 IP 为 192.168.56.102,客户端在命令行里加上 -H 参数,即可与远程服务器通信。

info 子命令用于查看 Docker 服务器的信息。

3. Docker 镜像

可将 Docker 镜像看着只读模板,通过它可以创建 Docker 容器。

例如某个镜像可能包含一个 Ubuntu 操作系统、一个 Apache HTTP Server 以及用户开发的 Web 应用。

镜像有多种生成方法:

1、可以从无到有开始创建镜像

2、也可以下载并使用别人创建好的现成的镜像

3、还可以在现有镜像上创建新的镜像

我们可以将镜像的内容和创建步骤描述在一个文本文件中,这个文件被称作 Dockerfile,通过执行 docker build <docker-file> 命令可以构建出 Docker 镜像,后面我们会讨论。

4. Docker 容器

Docker 容器就是 Docker 镜像的运行实例。

用户可以通过 CLI(docker)或是 API 启动、停止、移动或删除容器。可以这么认为,对于应用软件,镜像是软件生命周期的构建和打包阶段,而容器则是启动和运行阶段。

5. Registry仓库

Registry 是存放 Docker 镜像的仓库,Registry 分私有和公有两种。

Docker Hub(https://hub.docker.com/) 是默认的 Registry,由 Docker 公司维护,上面有数以万计的镜像,用户可以自由下载和使用。

出于对速度或安全的考虑,用户也可以创建自己的私有 Registry。后面我们会学习如何搭建私有 Registry。

docker pull 命令可以从 Registry 下载镜像。

docker run 命令则是先下载镜像(如果本地没有),然后再启动容器。

还记得我们运行的第一个容器吗?现在通过它来体会一下 Docker 各个组件是如何协作的。

容器启动过程如下:

1、Docker 客户端执行 docker run 命令。

2、Docker daemon 发现本地没有 httpd 镜像。

3、daemon 从 Docker Hub 下载镜像。

4、下载完成,镜像 httpd 被保存到本地。

5、Docker daemon 启动容器。

docker images 可以查看到 httpd 已经下载到本地

docker ps 或者 docker container ls 显示容器正在运行。

6. 小结

Docker 借鉴了集装箱的概念。标准集装箱将货物运往世界各地,Docker 将这个模型运用到自己的设计哲学中,唯一不同的是:集装箱运输货物,而 Docker 运输软件。

每个容器都有一个软件镜像,相当于集装箱中的货物。容器可以被创建、启动、关闭和销毁。和集装箱一样,Docker 在执行这些操作时,并不关心容器里到底装的什么,它不管里面是 Web Server,还是 Database。

用户不需要关心容器最终会在哪里运行,因为哪里都可以运行。

开发人员可以在笔记本上构建镜像并上传到 Registry,然后 QA 人员将镜像下载到物理或虚拟机做测试,最终容器会部署到生产环境。

使用 Docker 以及容器技术,我们可以快速构建一个应用服务器、一个消息中间件、一个数据库、一个持续集成环境。因为 Docker Hub 上有我们能想到的几乎所有的镜像。

不知大家是否意识到,潘多拉盒子已经被打开。容器不但降低了我们学习新技术的门槛,更提高了效率。

如果你是一个运维人员,想研究负载均衡软件 HAProxy,只需要执行docker run haproxy,无需繁琐的手工安装和配置既可以直接进入实战。

如果你是一个开发人员,想学习怎么用 django 开发 Python Web 应用,执行 docker run django,在容器里随便折腾吧,不用担心会搞乱 Host 的环境。

不夸张的说:容器大大提升了 IT 人员的幸福指数。

------------------------------------重要说明------------------------------------

本文内容都是参考Cloudman系列进行学习,是个人学习过程记录!

原版请参考cloudman《每天5分钟玩转Docker容器技术》Cloudman博客如下:

https://blog.51cto.com/cloudman

------------------------------------重要说明------------------------------------

书籍:

1.《每天5分钟玩转Kubernetes》
https://item.jd.com/26225745440.html

2.《每天5分钟玩转Docker容器技术》
https://item.jd.com/16936307278.html

3.《每天5分钟玩转OpenStack》
https://item.jd.com/12086376.html

转载于:https://blog.51cto.com/hostman/2094021

3、《每天5分钟玩转Docker容器技术》学习-Docker架构相关推荐

  1. Docker容器技术-基础与架构

    一.什么是容器 容器是对应用程序及其依赖关系的封装. 1.容器的优点 容器与主机的操作系统共享资源,提高了效率,性能损耗低 容器具有可移植性 容器是轻量的,可同时运行数十个容器,模拟分布式系统 不必花 ...

  2. 服务计算作业:Docker 容器技术

    Docker实践:CaaS 服务计算作业:Docker 容器技术 准备docker环境(win10) 运行第一个容器:hello-world 运行镜像 显示本地镜像库内容 Mysql安装 构建镜像并运 ...

  3. 用 Label 控制 Service 的位置 - 每天5分钟玩转 Docker 容器技术(106)

    上一节我们讨论了 Service 部署的两种模式:global mode 和 replicated mode.无论采用 global mode 还是 replicated mode,副本运行在哪些节点 ...

  4. 如何用 Graylog 管理日志?- 每天5分钟玩转 Docker 容器技术(93)

    上一节已经部署好了 Graylog,现在学习如何用它来管理日志. 首先启动测试容器. docker run -d \ --log-driver=gelf \ --log-opt gelf-addres ...

  5. 日志管理之 Docker logs - 每天5分钟玩转 Docker 容器技术(87)

    高效的监控和日志管理对保持生产系统持续稳定地运行以及排查问题至关重要. 在微服务架构中,由于容器的数量众多以及快速变化的特性使得记录日志和监控变得越来越重要.考虑到容器短暂和不固定的生命周期,当我们需 ...

  6. k8s 重要概念 - 每天5分钟玩转 Docker 容器技术(117)

    在实践之前,必须先学习 Kubernetes 的几个重要概念,它们是组成 Kubernetes 集群的基石. Cluster  Cluster 是计算.存储和网络资源的集合,Kubernetes 利用 ...

  7. 回收 PV - 每天5分钟玩转 Docker 容器技术(152)

    当 PV 不再需要时,可通过删除 PVC 回收. 当 PVC mypvc1 被删除后,我们发现 Kubernetes 启动了一个新 Pod recycler-for-mypv1,这个 Pod 的作用就 ...

  8. DaemonSet 典型应用场景 - 每天5分钟玩转 Docker 容器技术(129)

    Deployment 部署的副本 Pod 会分布在各个 Node 上,每个 Node 都可能运行好几个副本.DaemonSet 的不同之处在于:每个 Node 上最多只能运行一个副本. DaemonS ...

  9. Swarm 如何存储数据?- 每天5分钟玩转 Docker 容器技术(103)

    service 的容器副本会 scale up/down,会 failover,会在不同的主机上创建和销毁,这就引出一个问题,如果 service 有要管理的数据,那么这些数据应该如何存放呢? 选项一 ...

  10. Swarm 如何实现 Failover?- 每天5分钟玩转 Docker 容器技术(98)

    故障是在所难免的,容器可能崩溃,Docker Host 可能宕机,不过幸运的是,Swarm 已经内置了 failover 策略. 创建 service 的时候,我们没有告诉 swarm 发生故障时该如 ...

最新文章

  1. 04 pod setup 慢的问题
  2. mysql连接编程环境_C++连接MySQL(一):环境配置和实例
  3. mybatis 多租户saas_MybatisPlus 多租户架构(SaaS)实现
  4. oracle 关于归档的视图,oracle 与归档日志相关的几个视图
  5. 【python】*与** 参数问题
  6. Hadoop的map阶段流程
  7. RocketMQ开发指导之三——RocketMQ编程示例
  8. wifinative.java_Android 中的WiFi剖析
  9. 梵语和藏语_《百字明》梵文和藏文发音区分
  10. 目前文字识别技术,主要应用在哪些场景?
  11. 行政管理和计算机应用哪个更容易,自考本科汉语言文学和行政管理哪个比较简单...
  12. 零基础如何学习SEO网站优化
  13. linux下写脚本时-gt或-lt是什么意思?
  14. chi2inv函数 matlab_matlab中ltiview怎么使用啊
  15. 使用Busybox制作根文件系统
  16. Snapman设计中的思考
  17. 转行做程序员,你后悔了吗
  18. 华为2013年存储市场战略分析
  19. 国家自然科学基金计算机立项,2017年国家自然科学基金立项清单.PDF
  20. foobar2000 1.1.10 用苹果新近开源的ALAC编码器很方便将APE、FLAC、WAV转无损m4a

热门文章

  1. jquery easyui datagrid view detailview 使用
  2. DVPP媒体数据处理图片解码问题案例
  3. 游戏开发(十五) 之 任务系统 成就系统
  4. leetcode-8-String to Integer (atop)字符串转整数
  5. 如何搭建一款高质量的APP
  6. 创业失败的十八个原因——The 18 Mistakes that Kill Startups
  7. html表单js自动计算,用Javascript制作会计算的表单
  8. 中小企业网络营销的5个技巧!
  9. Springboot + layui + FTP文件上传删除 + HTTP文件下载预览 + pdf.js文件预览(项目实战总结)
  10. Vue 和 React 大厂面试通关指南.pdf