广告
返回顶部
首页 > 资讯 > 操作系统 >Docker 容器学习笔记
  • 433
分享到

Docker 容器学习笔记

docker学习笔记容器 2023-08-30 14:08:01 433人浏览 独家记忆
摘要

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

--结束END--

本文标题: Docker 容器学习笔记

本文链接: https://www.lsjlt.com/news/382970.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • Docker 容器学习笔记
    Docker 容器学习笔记 容器的由来 早先,虚拟机通过操作系统实现相互隔离,保证应用程序在运行时相互独立,避免相互干扰。但是操作系统又笨又重,耗费资源严重: 容器技术只隔离应用程序的运行时环境但容器之间共享同一个操作系统,这里的运行时...
    99+
    2023-08-30
    docker 学习 笔记 容器
  • 学习笔记:从零开始学习 ASP、Unix 和容器
    在当今数字化时代,学习计算机编程成为越来越多人的选择。ASP、Unix 和容器是三个非常重要的领域,本文将从零开始介绍学习这三个领域的方法和技巧。 一、ASP ASP(Active Server Pages)是微软公司的一种动态网页技术,...
    99+
    2023-08-20
    unix 容器 学习笔记
  • 学习笔记-TP5框架学习笔记\(路由\)
    TP5框架简单理解 (PS:只做粗略、关键知识的记录,TP程序的开始。详情请阅读官方手册) 1. 架构总览 TP程序的开始 PHP >=5.3.0, PHP7 ThinkPHP5.0应用基于MVC(模型-视图-控制器)的方...
    99+
    2023-10-25
    学习 php 开发语言
  • docker学习5:Docker 容器连接
    参考:http://www.runoob.com/docker/docker-container-connection.html前面我们实现了通过网络端口来访问运行在docker容器内的服务。下面我们来实现通过端口连接到一个docker容器...
    99+
    2023-06-06
  • PHP 容器学习笔记:为什么容器是重要的?
    作为一名 PHP 开发人员,你可能听说过容器这个词。那么,什么是容器?为什么容器在 PHP 开发中如此重要?本篇文章将为你详细介绍。 容器是什么? 在软件开发中,容器是一种虚拟化技术。它允许开发人员在同一台物理机器上运行多个相互隔离的应用...
    99+
    2023-09-21
    学习笔记 容器 数据类型
  • PHP学习笔记:容器编程算法是什么?如何学习?
    在PHP编程中,容器编程算法是一个非常重要的概念。它可以帮助我们更加高效地管理和组织数据,提高代码的可读性和可维护性。本文将详细介绍什么是容器编程算法,以及如何学习和应用它。 一、什么是容器编程算法? 容器编程算法是一种用于管理和组织数据...
    99+
    2023-10-09
    学习笔记 容器 编程算法
  • ASP、Unix、容器,哪个更适合学习笔记?
    在计算机科学领域,ASP、Unix和容器都是非常重要的技术。ASP是一种运行在Web服务器上的脚本语言,Unix是一种操作系统,容器则是一种虚拟化技术。对于初学者来说,选择一种适合自己的学习笔记非常重要。本文将探讨ASP、Unix和容器三...
    99+
    2023-08-20
    unix 容器 学习笔记
  • ASP、Unix、容器:学习笔记的必备组合
    在当今的信息时代,学习和掌握计算机技术是非常必要的,而ASP、Unix和容器是学习笔记的必备组合。在本文中,我们将探讨这三个关键技术,并为您提供演示代码,以帮助您更好地理解和掌握它们。 ASP ASP(Active Server Page...
    99+
    2023-08-20
    unix 容器 学习笔记
  • ASP、Unix、容器:学习笔记的完美结合
    在当今的软件开发领域中,ASP(Active Server Pages)和Unix操作系统都是非常重要的技术。而容器技术则是近年来快速发展的一种技术,对于软件开发和部署有着重要的作用。本篇文章将介绍如何将ASP、Unix和容器技术结合起来...
    99+
    2023-08-20
    unix 容器 学习笔记
  • 学习笔记3
    一文件查找和压缩1文件查找locate 搜索依赖于数据库,非实时搜索,搜索新建文件需手动更新,适于搜索稳定不频繁修改文件 find 实时搜索,精确搜索,默认当前目录递归搜索 find用法 -maxdepth...
    99+
    2023-01-31
    学习笔记
  • python3学习笔记
    好久不用python,努力捡起来ing python3语法 字符串 repr()把其他类型变量转换为字符串 ord()把单个字符转换为相应的ascii码 int()把其他进制的“字符串”转换为十进制 int(str,n...
    99+
    2023-01-31
    学习笔记
  • Android学习笔记
    LinearLayoutCompat 线性布局 android:orientation=“vertical” 指定布局内控件排列方式为 垂直排...
    99+
    2022-06-06
    android学习 Android
  • 20200619 学习笔记
    主键和唯一的区别 主键:唯一、不为空、只能有一个、可以组合但不推荐 唯一:唯一、可为空、可以多个、可以组合但不推荐 外键 要求在从表设置外键关系 从表的外键列的类型和主表的关联列的类型要求一致或兼容 主...
    99+
    2019-12-15
    20200619 学习笔记
  • 20200618_MySQL学习笔记
    加号 + Mysql中加号只能做运算符 select 100+90  ==> 190  select "100"+90 ==> 190  如果有一个是字符串,那么尝试转换成数值型,转换成功 select "ja...
    99+
    2014-11-26
    20200618_MySQL学习笔记
  • 20200617学习笔记
    基数  一个索引上不同的值的个数,我们称之为“基数”(cardinality)。也就是说,这个基数越大,索引的区分度越好 我们可以使用 show index 方法,看到一个索引的基数 MySQL 是怎样得到索引的基数的呢? 采样...
    99+
    2022-02-22
    20200617学习笔记
  • 20200616学习笔记
    count(*) 的实现方式 在不同的 MySQL 引擎中,count(*) 有不同的实现方式 MyISAM 引擎把一个表的总行数存在了磁盘上,因此执行 count(*) 的时候会直接返回这个数,效率很高 而 InnoDB ...
    99+
    2018-10-19
    20200616学习笔记
  • MySQL学习笔记
    作者: Grey 原文地址:MySQL学习笔记 说明 注:本文中的SQL语句如果用到了特定方言,都是基于MySQL数据库。 关于DDL DDL 的英文全称是 Data Definition Language,中文是数据定义语言。它定义了...
    99+
    2015-01-17
    MySQL学习笔记
  • Mycat 学习笔记
    概述 1. Mycat 是什么? Mycat 是数据库中间件,连接 Java 应用程序和数据库,它的作用如下: 读写分离 数据分片:垂直拆分(分库)、水平拆分(分表)、垂直+水平拆分(分库分表) 多数据源整合 2....
    99+
    2019-10-05
    Mycat 学习笔记
  • postgres学习笔记
    将一个标识符变得受限同时也使它变成大小写敏感的,反之非受限名称总是被转换成小写形 式。例如,标识符FOO、foo和"foo"在PostgreSQL中被认为是相同的,而"Foo"和"FOO"则互 不相同且也不同于前面三个标识符(Postgr...
    99+
    2018-01-09
    postgres学习笔记
  • sqlite3 学习笔记
    #!/usr/bin/env python3 # -*- coding: utf-8 -*- # @descrip : operate SqLite intrface # @Time : 2020/04/22 21:57 # @Au...
    99+
    2017-12-28
    sqlite3 学习笔记 数据库入门 数据库基础教程
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作