Docker入门-基础知识

news/2024/4/29 13:31:56/文章来源:https://www.cnblogs.com/qiangfenger/p/16607696.html

Docker入门-基础知识

Cloud研习社 Cloud研习社 2022-06-17 07:26 发表于山东

图片

 

Docker 是一个用于开发、发布和运行应用程序的开放平台。Docker 使您能够将应用程序与基础架构分离,以便您可以快速交付软件。使用 Docker,您可以像管理应用程序一样管理基础设施。通过利用 Docker 快速交付、测试和部署代码的方法,您可以显著减少从编码到发布的时长。图片

docker平台

图片

 

Docker 提供了在容器的松散隔离环境中打包和运行应用程序的能力。隔离和安全性允许您在给定主机上同时运行多个容器。容器是轻量级的,包含运行应用程序所需的一切,因此您无需依赖主机上当前安装的内容。您可以在工作时轻松共享容器,并确保与您共享的每个人都获得以相同方式工作的同一个容器。

Docker 提供工具和平台来管理容器的生命周期:

  • 在容器中开发应用程序及其支持组件。

  • 容器成为发布和测试应用程序的单元。

  • 准备就绪后,将应用程序部署到生产环境中,作为容器或编排的服务。无论您的生产环境是本地数据中心、云提供商还是两者的混合,效果都是一样的。

图片

Docker能做什么

图片
快速交付应用

Docker 通过允许开发人员使用提供应用程序和服务的本地容器在标准化环境中工作来简化开发生命周期。容器非常适合持续集成和持续交付 (CI/CD) 工作流程。

考虑以下场景:

  • 开发人员在本地编写代码并使用 Docker 容器发布成果。

  • 他们使用 Docker 将他们的应用程序推送到测试环境中并执行自动化和手动测试。

  • 当开发者发现bug时,可以在开发环境中修复,重新部署到测试环境中进行测试和验证。

  • 测试完成后,将修复程序提供给客户就像将更新的镜像推送到生产环境一样简单。

方便部署和扩展

Docker 基于容器的平台允许高度可移植的工作负载。Docker 容器可以在开发人员的本地笔记本电脑、数据中心的物理或虚拟机、云提供商或混合环境中运行。Docker 的可移植性和轻量级特性还使得动态管理工作负载、根据业务需求近乎实时地扩展或拆除应用程序和服务变得容易。

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

Docker 是轻量级和快速的。它为基于管理程序的虚拟机提供了一种可行且经济高效的替代方案,因此您可以使用更多计算容量来实现业务目标。Docker 非常适合复杂环境以及需要用更少资源完成更多工作的中小型部署。

 

图片

Docker架构

图片

 

 

Docker 使用客户端-服务器架构。

Docker客户端与 Docker守护进程对话,后者负责构建、运行和分发 Docker 容器的繁重工作。Docker 客户端和守护程序可以在同一系统上运行,或者您可以将 Docker 客户端连接到远程 Docker 守护程序。

Docker 客户端和守护程序使用 REST API,通过 UNIX 套接字或网络接口进行通信。另一个 Docker 客户端是 Docker Compose,它允许您使用由一组容器组成的应用程序。

图片

 


1. Docker守护进程(Docker daemon)

 

Docker 守护程序 ( dockerd) 侦听 Docker API 请求并管理 Docker 对象,例如镜像、容器、网络和卷。守护进程还可以与其他守护进程通信以管理 Docker 服务。

2. Docker客户端

Docker Client ( docker) 是许多 Docker 用户与 Docker 交互的主要方式。当您使用诸如docker run之类的命令时,客户端会将这些命令发送到dockerd去执行。该docker命令使用 Docker API。Docker 客户端可以与多个守护进程通信。

3. Docker桌面

Docker Desktop 是一个易于安装的应用程序,适用于 Mac 或 Windows 环境,使您能够构建和共享容器化应用程序和微服务。Docker Desktop 包括 Docker 守护程序 ( dockerd)、Docker 客户端 ( docker)、Docker Compose、Docker Content Trust、Kubernetes 和 Credential Helper。

4. Docker registry(Docker 仓库)

Docker registry存储 Docker 镜像,我们可以理解为他就是一个镜像仓库。我们后面也称其为镜像仓库。Docker Hub 是一个任何人都可以使用的公共镜像仓库,并且 Docker 默认配置为在 Docker Hub 上查找镜像。当然您也可以搭建自己的私有镜像仓库。

当您使用docker pull 或 docker run命令时,将从您配置的镜像仓库中提取所需的镜像。当您使用该docker push命令时,您的镜像会被推送到您配置的镜像仓库中。

5. Docker对象

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

1)镜像

镜像是一个只读模板。通常,一个镜像基于另一个镜像,并带有一些自定义配置。任何应用程序运行都需要环境,而镜像就是用来提供这种运行环境的。例如一个Ubuntu镜像就是一个包含Ubuntu操作系统环境的模板,同理在该镜像上装上Apache软件,就可以称为Apache镜像。。

您可以创建自己的镜像,也可以使用其他人创建并在镜像仓库中发布的镜像。要构建您自己的镜像,您需要使用简单的语法创建一个Dockerfile ,用于定义创建和运行镜像所需的步骤。Dockerfile 中的每条指令都会在镜像中创建一个层。当您更改 Dockerfile 并重建镜像时,仅重建有变化的层。与其他虚拟化技术相比,这是使镜像变得轻量、小巧和快速。

2)容器

容器是镜像的运行实例。您可以使用 Docker API 或 CLI 创建、启动、停止、移动或删除容器。您可以将容器连接到一个或多个网络,将存储附加到它,甚至可以根据其当前状态创建新镜像。

默认情况下,一个容器与其他容器及其主机的隔离相对较好。您可以控制容器的网络、存储或其他底层子系统与其他容器或主机的隔离程度。

容器由其镜像以及您在创建或启动它时提供给它的任何配置选项定义。当容器被移除时,任何未存储在持久存储中的状态更改都会消失。

示例docker run命令

以下命令运行一个ubuntu容器,以交互方式附加到您的本地命令行会话,然后运行/bin/bash.

docker run -i -t ubuntu /bin/bash

当您运行此命令时,会发生以下情况(假设您使用的是默认镜像仓库配置):

  1. 如果您在本地没有ubuntu镜像,Docker 会从您配置的仓库中提取它,就像您docker pull ubuntu手动运行一样。
  2. Docker 会创建一个新容器,就像您docker container create 手动运行命令一样。
  3. Docker 为容器分配一个读写文件系统,作为它的最后一层。这允许正在运行的容器在其本地文件系统中创建或修改文件和目录。
  4. Docker 创建了一个网络接口来将容器连接到默认网络,因为您没有指定任何网络选项。这包括为容器分配 IP 地址。默认情况下,容器可以使用主机的网络连接连接到外部网络。
  5. Docker 启动容器并执行/bin/bash. 因为容器以交互方式运行并附加到您的终端(由于-iand-t 标志),所以您可以在输出记录到终端时使用键盘提供输入。
  6. 当您键入exit终止/bin/bash命令时,容器会停止但不会被删除。您可以重新启动或删除它。

图片

底层技术

图片

 

Docker 是用Go 编程语言编写的,并利用 Linux 内核的特性来提供其功能。Docker 使用一种称为容器namespaces的技术来提供隔离的工作空间。当您运行容器时,Docker 会为该容器创建一组命名空间。

这些命名空间提供了一层隔离。容器的每个方面都在单独的命名空间中运行,并且它的访问权限仅限于该命名空间。


推荐阅读

ifconfig已淘汰,ip登场

放后台的Linux任务没有了,试试这个命令

Linux 网络状态工具 ss 命令详解

这次终于搞明白VLAN技术了

终于有人把敏捷、DevOps、CI、CD讲清楚了


 

 

除每周二、四、六定期更新的《Linux云计算一站式教程》以外,其余时间雷哥会推送一些工作中遇到的小知识、实战经验总结的文章。后续都会收录在“实战经验”合集中。

图片

 


Cloud研习社
为Linux云计算零基础同学服务,致力于打造一套完整的linux云计算教程。包括新手学习路线、linux、存储、集群架构以及Docker,K8S,DevOps等
146篇原创内容
公众号

图片

 

收录于合集 #实战经验
 33
上一篇40个简单而有效的Shell脚本,想不起来的时候一看就懂(上)下一篇Linux下用nmcli命令做网卡绑定,你还不会用?
阅读原文
阅读 246

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_2348.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AJAX概念和AJAX实现原生JS方式

AJAX概念 概念:ASynchronous JavaScript And XML 异步的JavaScript 和 XML1.异步和同步:客户端和服务器端相互通信的基础上同步:客户端必须等待服务器端的响应。在等待的期间客户端不能做其他操作。异步:客户端不需要等待服务器端的响应。在服务器处理请求的过程中,客户端…

mysql初识

mysql需要了解哪些知识 1.sql操作 2.索引 索引原理 索引优化 sql语句优化 3.事务 并发读异常的问题 并发死锁怎么解决 4. mysql与缓存 解决读性能问题 集群的内容OLTP: OLTP(online transaction processing)翻译为联机事务处理;主要对数据库增删改查; OLTP主要用来记录某类…

5个必知的高级SQL函数

5个必知的高级SQL函数SQL是关系数据库管理的标准语言,用于与数据库通信。它广泛用于存储、检索和操作数据库中存储的数据。SQL不区分大小写。用户可以访问存储在关系数据库管理系统中的数据。SQL允许描述数据。用户可以轻松创建和删除表和数据库。我们可以使用SQL库、模块和预…

Golang基础教程

以下使用goland的IDE演示,包含总计的golang基础功能共20个章节 一、go语言结构: 二、go基础语法:三、变量四、常量五、运算符 六、条件语句 七、循环 八、函数 九、变量作用域 十、数组 十一、指针 十二、结构体 十三、切片 十四、范围(Range) 十五、集合 十六、递归 十七、…

ceph 009 管理定义crushmap 故障域

管理和自定义crushmap 定义pg到osd的映射关系 通过crush算法使三副本映射到理想的主机或者机架 更改故障域提高可靠性 pg到osd映射由crush实现下载时需要将对象从osd搜索到,组成文件,那么对象多了就会效率变低,那么从pg组里面搜索。提高效率 对象放在pg要通过hash算法 95个…

网络编程-TCP通信程序(下)代码

TCP通信的客户端:向服务器发送连接请求,给服务端发送数据,读取服务端回写的数据 表示客户端的类:java.net.Socket:该类实现客户端套接字(也称为“套接字”)。 套接字是两台机器之间通讯的端点。套接字:包含了IP地址和端口号的网络单位 构造方法: Socket(String host, …

IfcDocumentInformation

IfcDocumentInformation实体定义 IfcDocumentInformation捕获外部文档的“元数据”。本规范未定义文件的实际内容;相反,它可以在Location属性之后找到。可以使用IfcDocumentReference从交换结构中全部或部分引用相同的IFCDocationInformation(例如,通过引用特定章节或段落)…

Volatile介绍

介绍 volatile 是 Java 虚拟机提供的轻量级的同步机制,它可以保证可见性(缓存一致性协议)和有序性(禁止指令重排序,也就是通过内存屏障来实现),但是不保证原子性。JMM 介绍 JMM 是一个抽象的概念,它描述的是一种规范。这些规范定义了程序中各种变量的访问规则。 JMM 定…

monodepth2学习-KITTI数据集内容

KITTI数据集介绍 monodepth2采用KITTI数据集进行训练,KITTI数据集主要是针对自动驾驶领域的图形处理技术,主要应用在评测立体图像(stereo)、光流(optical flow)、3D物体检查等计算机视觉领域。KITTI数据集采用配备有两个灰度摄像头,两个彩色摄像头和一个Velodye 64激光雷…

代码审计-PHP反序列化漏洞

什么是序列化序列化可以实现将对象压缩并格式化,方便数据的传输和存储。 为什么要序列化? PHP 文件在执行结束时会把对象销毁,如果下次要引用这个对象的话就很麻烦,所以就有了对象序列化,实现对象的长久存储,对象序列化之后存储起来,下次调用时直接调出来反序列化之后就…

世事无常,人生有定,此乃时也、运也、命也

参考: https://www.163.com/dy/article/H6NVOULE0528OPI5.html“万般皆由命,半点不由人。”半生已过,红尘辗转,才真正明白人的寿命与财富,在你来到人世间的那一刻上天就安排好了,半点由不得我们自己。正所谓“世事无常,人生有定,此乃时也、运也、命也!” 所谓命者。先…

三次握手,四次挥手

三次握手 连接建立阶段: 第一次握手:客户端的应用进程主动打开,并向服务端发出请求报文段。其首部中:SYN=1,seq=x。 第二次握手:服务器应用进程被动打开。若同意客户端的请求,则发回确认报文,其首部中:SYN=1,ACK=1,ack=x+1,seq=y。 第三次握手:客户端收到确认报文之后…

操作系统学习笔记4 | CPU管理 多进程图像

操作系统的核心功能就是管理计算机硬件,而CPU就是计算机中最核心的硬件。操作系统通过多进程图像实现对CPU的管理。所以多进程图像是操作系统的核心图像。操作系统的核心功能就是管理计算机硬件,而CPU就是计算机中最核心的硬件。而通过学习笔记3的简史回顾,操作系统通过多进…

Hadoop十九

HDFS API操作在Windows上操作hadoop,需要添加hadoop依赖,我的hadoop是3.3.1版本的,我用的依赖是3.2.0的,需要配置环境变量 PATH添加如下路径: 然后双击依赖中的一闪而过就是成功的。 在maven项目中添加如下依赖<dependencies><!-- https://mvnrepository.com/a…

框架-逻辑层(逻辑层简介和注册程序)

逻辑层简介 小程序逻辑层 小程序开发框架的逻辑层是使用JavaScript编写的。 逻辑层将数据进行处理后发送给视图层,同时接收视图层的事件反馈。 在 JavaScript 的基础上,微信做了一些修改,以方便地开发小程序。增加 App 和 Page 方法,进行程序和页面的注册。 增加 getApp和g…

德飞莱 C51 学习笔记

《电子元件基础教程》 :数字集成电路 从结构上分为 : TTL 型 和 CMOS 型 《跟我学数字电子技术》: 数字电路分为 组合逻辑电路 和 时序逻辑电路

golang中GOPATH、GOROOT、GOBIN不生效等相关问题

比较重要的三个配置:GOPATH、GOROOT、GOBIN GOPATH : go项目开发的工程目录 GOROOT: go安装所在的目录 GOBIN: go项目编译完二进制程序目录 不生效问题,其实应该好好检查是否上面相关路径配置是否正确 编辑vim ~/.bash_profile 添加以下3个配置export GOROOT="/usr/loca…

高性能服务器之事件处理模式

I/O模型 对于一个套接字上的输入操作,通常存在以下两个步骤:等待分组到达,被复制到内核缓冲区中 将数据从内核缓冲区复制到应用进程的缓冲区中对于上述过程,在 Unix 下有 5 中基本的 I/O 模型可以对其进行处理:阻塞式 I/O 非阻塞式 I/O I/O 复用 信号驱动 I/O 异步 I/O1. …

算法总结

1.每日温度题(一道关于栈的问题) 请根据每日 气温 列表 temperatures ,重新生成一个列表,要求其对应位置的输出为:要想观测到更高的气温,至少需要等待的天数。如果气温在这之后都不会升高,请在该位置用 0 来代替。 输入: temperatures = [73,74,75,71,69,72,76,73] 输出…