我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Docker 容器学习笔记

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Docker 容器学习笔记

Docker 容器学习笔记

容器的由来

早先,虚拟机通过操作系统实现相互隔离,保证应用程序在运行时相互独立,避免相互干扰。但是操作系统又笨又重,耗费资源严重:

img

img

容器技术只隔离应用程序的运行时环境但容器之间共享同一个操作系统,这里的运行时环境指的是程序运行依赖的各种库以及配置。

img

容器更加轻量级且占用资源更少,与操作系统动辄几G的内存占用相比,容器占用的空间少得多,只需要若干M的空间,因此可以在同等规格的硬件上大量部署容器,这是虚拟机无法比拟的,且容器启动速度快,其的打包服务栈提供了更加高效的方式,So cool。

容器是一种通用技术,Docker只是其中一种实现。

什么是Docker

一个用Go语言实现的开源项目,方便用户创建和使用容器,Docker将程序以及程序所有的依赖都打包到Docker container,这样程序在任何环境都有一致的表现,程序运行的依赖也就是容器就好比集装箱,容器所处的操作系统就好比货船或港口,程序的表现之和集装箱有关系(容器),与货船或者港口(操作系统)没关系。

因此我们看到Docker可以屏蔽环境差异,也就是说,只要程序打包到docker中,无论运行在什么环境下程序的行为都是一致的,不会再有“在我的环境上可以运行",可以实现"build once, run everywhere"。

此外Docker另一个好处是快速部署,是当前互联网公司最常见的应用场景,一方面原因是容器的启动速度快,另一方面的原因是只要确保一个容器中的程序正确运行,那么无论在生产环境部署多少都能正常运行。

如何使用Docker

Docker中的重要概念:

  • dockerfile
  • image
  • container

实际上,可以简单的把image理解为可执行程序,container就是运行起来的进程。

写程序需要源代码,“写”image就需要dockerfile,dockerfile就是image的源代码,Docker就是“编译器”。

因此程序员只需要在Dockerfile中指定那些程序、依赖哪些配置,之后dockerfile交给“编译器”Docker进行“编译”,即docker build命令,生成可执行程序就是image,之后就可以运行image了,即docker run命令,image运行起来之后就是docker container。

Docker是如何工作的

实际上docker使用了常见的CS架构,也就是client-server模式,docker client负责处理用户输入的各种命令,比如docker builddocker run,真正工作的其实是server,即docker daemon,值得注意的是,docker client和docker daemon可以运行在同一台机器上。

可以用一下命令解释docker的工作流程:

docker build

当写完dockerfile交给docker“编译”时使用这个命令,那么client在接收到请求后转发给docker daemon,接着docker daemon根据dockerfile创建出“可执行程序”image。

img

docker run

有了“可执行文件”image就可以运行程序了,接下来使用命令docker run,docker daemon接收到该命令后找到具体的image,然后加载到内存开始执行,image执行起来就是所谓的container。

img

docker pull

其实docker build和docker run是两个最核心的命令,会用连个命令基本上docker就可以用起来了,剩下的都是一些补充。

那么docker pull是干嘛的?

我们之前说过,docker中image的概念就类似于“可执行程序”,我们可以从哪里下载到别人写好的应用程序呢?很简单,那就是APP Store,即应用商店。与之类似,既然image也是一种“可执行程序”,那么有没有"Docker Image Store"呢?答案是肯定的,这就是Docker Hub,docker官方的“应用商店”,你可以在这里下载到别人编写好的image,这样你就不用自己编写dockerfile了。

docker registry 可以用来存放各种image,公共的可以供任何人下载image的仓库就是docker Hub。那么该怎么从Docker Hub中下载image呢,就是这里的docker pull命令了。

因此,这个命令的实现也很简单,那就是用户通过docker client发送命令,docker daemon接收到命令后向docker registry发送image下载请求,下载后存放在本地,这样我们就可以使用image了。

img

最后可以了解一下docker的底层实现。

docker的底层实现

docker基于Linux内核提供这样几项功能实现的:

NameSpace

Linux中的PID、IPC、网络等资源师全局的,而NameSpace机制是一种资源隔离方案,在该机制下这些资源不再是全局的,而是属于某个特定的NameSpace,各个NameSpace下的资源互不干扰,使得每个NameSpace看上去就像一个独立的操作系统,但是只有NameSpace是不够的。

Control groups

虽然有了NameSpace技术可以实现资源隔离,但进程还是可以不受控的访问系统资源,比如CPU、内存、磁盘、网络等,为了控制容器中进程对资源的访问,Docker采用control groups技术(也就是cgroup),有了cgroup就可以控制容器中进程对系统资源的消耗了,比如你可以限制某个容器使用内存的上限、可以在哪些CPU上运行等等。

有了这两项技术,容器看起来就真的像是独立的操作系统了。

总结

docker是目前非常流行的技术,很多公司都在生产环境中使用,但是docker依赖的底层技术实际上很早就已经出现了,现在以docker的形式重新焕发活力,并且能很好的解决面临的问题。
内容参考自:什么是Docker?看这一篇干货文章就够了!

来源地址:https://blog.csdn.net/qq_41119146/article/details/132516044

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Docker 容器学习笔记

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Docker 容器学习笔记

Docker 容器学习笔记 容器的由来 早先,虚拟机通过操作系统实现相互隔离,保证应用程序在运行时相互独立,避免相互干扰。但是操作系统又笨又重,耗费资源严重: 容器技术只隔离应用程序的运行时环境但容器之间共享同一个操作系统,这里的运行时
2023-08-30

docker学习5:Docker 容器连接

参考:http://www.runoob.com/docker/docker-container-connection.html前面我们实现了通过网络端口来访问运行在docker容器内的服务。下面我们来实现通过端口连接到一个docker容器
2023-06-06

GNS3学习笔记

最近在自学CCNA,为了搭建路由模拟器先后下载了Boson Network 、DynamipsGUI用的不是很顺手,后来听朋友推荐GNS3很好用,他们报的CCNP培训班老师用的就是GNS,平时的模拟实验都是用这个完成的,由于我本机已有下好的
2023-01-31

20200616学习笔记

count(*) 的实现方式 在不同的 MySQL 引擎中,count(*) 有不同的实现方式 MyISAM 引擎把一个表的总行数存在了磁盘上,因此执行 count(*) 的时候会直接返回这个数,效率很高 而 InnoDB 引擎就麻烦了,它执行 coun
20200616学习笔记
2018-10-19

Kafka 学习笔记

😀😀😀创作不易,各位看官点赞收藏. 文章目录 Kafka 学习笔记1、消息队列 MQ2、Kafka 下载安装2.1、Zookeeper 方式启动2.2、KRaft 协议启动2.3
2023-08-30

20200619 学习笔记

主键和唯一的区别 主键:唯一、不为空、只能有一个、可以组合但不推荐 唯一:唯一、可为空、可以多个、可以组合但不推荐 外键 要求在从表设置外键关系 从表的外键列的类型和主表的关联列的类型要求一致或兼容 主表的关联列必须时一个key 插入数据时,
20200619 学习笔记
2019-12-15

Mycat 学习笔记

概述1. Mycat 是什么?Mycat 是数据库中间件,连接 Java 应用程序和数据库,它的作用如下:读写分离数据分片:垂直拆分(分库)、水平拆分(分表)、垂直+水平拆分(分库分表)多数据源整合2. Mycat 原理Mycat 拦截了用户发送过来的 SQL
Mycat 学习笔记
2019-10-05

sqlite3 学习笔记

#!/usr/bin/env python3# -*- coding: utf-8 -*-# @descrip : operate SqLite intrface# @Time : 2020/04/22 21:57# @Author : mingfei
sqlite3 学习笔记
2017-12-28

学习笔记3

一文件查找和压缩1文件查找locate 搜索依赖于数据库,非实时搜索,搜索新建文件需手动更新,适于搜索稳定不频繁修改文件 find 实时搜索,精确搜索,默认当前目录递归搜索 find用法 -maxdepth l
2023-01-31

H3CNE学习笔记

H3CNE五日“游”——之第一天废话少说 直接进入真题!!!!(哈哈 )H3CNE   H3C认证初级网络工程师第    一   节路由器、交换机及其操作系统介绍路由器1、 路由器的作用连接具有不同介质的链路连接网络或子网,隔离广播交换和维
2023-01-31

postgres学习笔记

将一个标识符变得受限同时也使它变成大小写敏感的,反之非受限名称总是被转换成小写形 式。例如,标识符FOO、foo和"foo"在PostgreSQL中被认为是相同的,而"Foo"和"FOO"则互 不相同且也不同于前面三个标识符(PostgreSQL将非受限名字转
postgres学习笔记
2018-01-09

Python学习笔记

Python介绍Python是一种解释型、面向对象的语言。官网:www.python.orgPython环境解释器:www.python.org/downloads运行方式:交互模式。在IDLE中运行。脚本模式。文件的后缀名为.py。
2023-01-30

学习笔记(3)

1.* 匹配零个或多个字符(通配符中)2.ls 的-d选项不仅仅可以显示指定目录的信息,还可以用来表示不递归子文件夹。  # ls -dl /etc 显示/etc目录的信息  # ls -d /etc/* 显示/etc下面的文件和文件夹,并
2023-01-31

编程热搜

目录