Docker基本使用和认识

目录

基本使用

镜像仓库

镜像操作

Docker 如何实现镜像

1) namespace

2) cgroup

3) LXC

Docker常见的网络类型

bridge网络如何实现


基本使用

镜像仓库

镜像仓库登录

1)docker login

后面不指定IP地址,则默认登录到 docker hub 上

退出

2)docker logout

查找

3)docker search

从镜像仓库中拉去指定镜像。

docker pull [OPTIONS] NAME[:TAG|@DIGEST]

向仓库推送本地镜像

docker push [OPTIONS] NAME[:TAG]

镜像操作

列出本地的镜像。

1)docker images

显示镜像的详细信息

2)docker image inspect

标记本地镜像,将其归入某一个仓库。

3)docker tag 现有镜像 新镜像

删除本地镜像,可以通过镜像ID或者仓库:tag的方式指定要删除的镜像

4)docker rmi

对镜像文件保存成 tar 归档文件,-o 选项指定要输出的文件:

5)docker save

导出 docker save 归档的镜像,使用 -i 指定加载的文件

6)docker load

总结:

Docker 如何实现镜像

1) namespace

namespace 是 Linux 内核用来隔离内核资源的方式。Linux namespaces 是对全局系统资源的一种封装隔离,使得处于不同 namespace 的进程拥有独立的全局系统资源,改变一个 namespace 中的系统资源只会影响当前 namespace 里的进程,对其他 namespace 中的进程没有影响。

Linux 提供了多个 API 用来操作 namespace,它们是 clone()、 setns() 和 unshare() 函 数,为了确定隔离的到底是哪项 namespace,在使用这些 API 时,通常需要指定一些 调用参数:

namespace系统调用参数对应全局系统资源
UTSCLONE_NEWUTS主机名与域名
IPCCLONE_NEWIPC信号量、消息队列、共享内存
PIDCLONE_NEWPID进程ID
NetworkCLONE_NEWNET网络设备、网络栈、端口等
MountCLONE_NEWNS文件系统挂载点
UserCLONE_NEWUSER用户和用户组

2) cgroup

cgroups(Control Groups) 是 linux 内核提供的一种机制, 这种机制可以根据需求把一系列系统任务及其子任务整合(或分隔)到不同组内,一个组内的资源使用使用是有上限的,从而实现了对资源的控制。

本质上来说, cgroups 是内核附加在程序上的一系列钩子(hook),通过程序运行时对资源的调度触发相应的钩子以达到资源追踪和限制的目的

cgroup可以管理的子系统有:

  • blkio:对块设备的 IO 进行限制
  • cpu:限制 CPU 时间片的分配
  • cpuacct:生成 cgroup 中的任务占用 CPU 资源的报告,与 cpu 挂载在同 一目录
  • cpuset:给 cgroup 中的任务分配独立的 CPU(多处理器系统) 和内存节 点
  • devices:限制设备文件的创建,和对设备文件的读写
  • freezer:暂停/恢复 cgroup 中的任务
  • memory:对 cgroup 中的任务的可用内存进行限制,并自动生成资源占用报告。
  • perf_event:允许 perf 观测 cgroup 中的 task
  • net_cls:让 Linux 流量 控制器(tc 指令)可以识别来自特定 cgroup 任务的数据包,并 进行网络限制
  • hugetlb:限制使用的内存页数量
  • pids:限制任务的数量。
  • rdma:限制 RDMA 资源(Remote Direct Memory Access,远程直接数 据存取)

3) LXC

LXC是操作系统层的虚拟化技术,它将应用软件打包成一个软件容器,内含应用软件本身的代码,以及所需要的库和各种依赖项,创造出应用程序的独立沙箱运行环境 。

LXC的各种操作都是通过命令行交互完成的,因此通过批量命令创建实现数据迁移并不容易,其隔离性也没有虚拟机这么强大,还是具有一定的缺陷。后来的docker可以说是LXC的加强

Docker常见的网络类型

  • bridge网络

    ​ bridge 驱动会在 Docker 管理的主机上创建一个 Linux 网桥。默认情况下网桥上的容器可以相互通信。也可以通过 bridge 驱动程序配置,实现对外部容器的访问。当我们需要多个容器在同一个 Docker 主机上通信时,桥接网络是最佳选择

  • host网络

    ​ 移除容器和 Docker 主机之间的网络隔离,并直接使用主机的网络。当网络堆栈不应与 Docker 主机隔离,但是希望容器的其他资源被隔离时,主机网络是最佳选择

缺点:可能占用主机的端口

  • container网络

    ​ 让新创建的容器与已存在的容器共享一个网络,而不是与宿主机共享网络。

  • none网络

    ​ 容器网络完全隔离

  • overlay网络

    ​ 跨主机网络,当我们需要运行在不同Docker 主机上的容器进行通信时,或者当多个应用程序使用集群服务协同工作时,覆盖网络是最佳选择。

bridge网络如何实现

整体

细节介绍:

网络命名空间 (Network Namespace)

网络命名空间是 Linux 提供的一种机制,用于隔离网络资源。每个网络命名空间拥有自己的网络设备、IP 地址、路由表、/proc/net 目录等。这意味着不同的容器可以有各自独立的网络环境。

虚拟以太网设备 (veth pair)

veth pair 是成对出现的虚拟网络设备,两个 veth 设备之间通过虚拟链路连接。当一个 veth 设备收到数据包时,它会将数据包传递给另一个 veth 设备。

  • 当启动一个容器时,会创建一对 veth 设备,例如 veth0  和 veth1。
  • veth0  连接到宿主机的网络命名空间,而 veth1  连接到容器的网络命名空间。

https://github.com/lixd/daily-notes/blob/master/ComputerScience/Linux/veth%E8%AE%BE%E5%A4%87%E5%AF%B9.md

如图 圈圈内的就是 veth pair 生成的虚拟链路连接 

网桥 (Bridge) 

网桥是一种虚拟网络设备,可以将多个网络设备连接在一起,相当于一个虚拟的交换机。它允许连接到它的所有设备之间进行通信。

  • 在宿主机上创建一个虚拟网桥设备(例如 )。
  • 将 veth 对中的一端(veth0)连接到这个网桥上。

https://github.com/lixd/daily-notes/blob/master/ComputerScience/Linux/bridge%E8%AE%BE%E5%A4%87.md

如图,圈内的就是 网桥 

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

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

相关文章

大数据经典sql

一、连续登录问题 问题:1)、每个用户连续登录最大天数 2)、连续登录大于三天的用户数 分析:本质都是计算用户连续登录天数 方案一:利用排序窗口 select a.user_id,a.date_rslt,count(1) as cnt from (select t.…

进入容器修改内容_提交改变后的镜像_镜像保存成tar压缩包离线传输_镜像传输_镜像推送到公共仓库---分布式云原生部署架构搭建009

然后再来看,进入docker内部去看看. 用 docker exec -it imgid /bin/bash 这样就可以进入容器内部 而且关于,镜像的,内部放到什么地方了,都可以找到比如 在hub.docker的地址里面,找到nginx可以看到,对应的 /usr/share/nginx/html 可以看到这个路径. 然后去看看,进入到/usr…

如何恢复未格式化分区数据?看这里!

什么是未格式化分区? 未格式化或RAW文件系统的分区无法被Windows操作系统识别和挂载,因此,Windows会提示你进行格式化以创建新的文件系统。注意,不要进行格式化。通常,文件系统变为未格式化或RAW会出现以下常见错误消…

(深度学习记录)第TR5周:Transformer中的位置编码详解

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 | 接辅导、项目定制 🏡我的环境: 语言环境:Python3.11.4编译器:Jupyter Notebooktorcch版本:2.0.…

【Matlab编程学习】 | matlab语言编程基础:常用图形绘制基础学习

🎩 欢迎来到技术探索的奇幻世界👨‍💻 📜 个人主页:一伦明悦-CSDN博客 ✍🏻 作者简介: C软件开发、Python机器学习爱好者 🗣️ 互动与支持:💬评论 &…

传输层udp和tcp协议格式

UDP协议 UDP协议端格式 udp的前八个字节是报头,后面部分就是有效载荷。而目的端口号就保证了udp向应用层交付的问题。 而针对于报头和有效载荷分离是根据固定八字结的报头长度。数据的长度就是取决于报头中udp长度字段的大小来确定udp报文长度,因此也可…

Apifox 中如何处理加密或编码过的响应数据?

接口返回的响应数据有时是经过编码或加密处理的,要转换成可读的明文,可以使用 Apifox 内置的 JS 类库、或者通过调用外部编程语言 (如 Python、JavaScript 等) 来进行处理。 例如,一个经过 Base64 编码的数据可以通过…

可视化数据科学平台在信贷领域应用系列六:自动机器学习(上篇)

在现代数据驱动的世界中,机器学习已经成为解决复杂问题和推动创新的重要手段。然而,传统的机器学习模型开发过程复杂且耗时,包括数据预处理、特征工程、模型选择、参数调优和模型评估等多个步骤环节,需要模型开发人员具备丰富的专…

Java面试题:mysql执行速度慢的原因和优化

Sql语句执行速度慢 原因 聚合查询 多表查询 表数据量过大查询 深度分页查询 分析 sql的执行计划 可以使用EXPLAIN或者DESC获取Mysql如何执行SELECT语句的信息 直接在select语句前加关键字explain/desc 得到一个执行信息表 信息字段分析 possible_keys:可能使用到的索…

busybox的基本使用记录壹

内核如何启动init进程 init/main.c static int __ref kernel_init(void *unused) {int ret;kernel_init_freeable();/* need to finish all async __init code before freeing the memory */async_synchronize_full();ftrace_free_init_mem();jump_label_invalidate_initmem()…

JMeter的基本概念

一、主流测试工具 1,Loadrunner HP Loadrunner是一种工业级标准性能测试负载工具,可以模拟上万用户实施测试,并在测试时可实时检测应用服务器及服务器硬件各种数据,来确认和查找存在的瓶颈 支持多协议:Web(HTTP/HTML)、Windows…

Java项目:基于SSM框架实现的绿色农产品推广应用网站果蔬商城水果商城蔬菜商城【ssm+B/S架构+源码+数据库+答辩PPT+毕业论文】

一、项目简介 本项目是一套基于SSM框架实现的绿色农产品推广应用网站果蔬商城水果商城蔬菜商城 包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过严格调试,eclipse或者idea 确保可以运行! 该系统功能…

通信系统概述

1.定义 通信系统(也称为通信网络)是利用各种通信线路将地理上分散的、具有独立功能的计算机系统和通信设备按不同的形式连接起来,依靠网络软件及通信协议实现资源共享和信息传递的系统。 2.概述 随着通信技术和网络技术的不断发展&#xff…

Ubuntu系统如何配置通过图形界面登录root用户

Ubuntu系统中的root账号默认是锁定的,但可以通过设置密码来启用。 需要注意的是,由于root用户具有对系统完全控制的权限,因此在使用root账户时应格外小心。一个错误的命令可能会导致系统损坏,这就是为什么Ubuntu默认不启用root账户…

微服务开发与实战Day08 - Elasticsearch

一、初始Elasticsearch 高性能分布式搜索引擎 1. 认识和安装 1.1 认识 Lucene是一个Java语言的搜索引擎类库,是Apache公司的顶级项目,由DougCutting于1999年研发。官网地址:Apache Lucene - Welcome to Apache Lucene Lucene的优势&…

集合:泛型深入

一.泛型的好处 1.统一了数据类型 2.把运行时期的问题提前到了编译期间,避免了强制类型转换可能出现的异常,因为在编译阶段类型就能确定下来。 二.泛型的细节 1.泛型中不能写基本数据类型 2.指定泛型的具体类型后,传递数据时,可以传入该类类型或者该类的子类类型 3.如果不…

Vue67-Vuex简介

因为vuex是插件,所以,使用的时候:vue.use(插件名) 一、Vuex的意义和使用场景 红色的箭头,都是读数据。 若是,B、C、D都想修改A组件中的x数据(写):此时,A组件就是数据的接…

人声分离的5个方法分享,从入门到精通,伴奏提取手拿把捏!

人声分离通常是音乐制作、混音和卡拉OK中常用的重要技术之一。它的核心是将乐器伴奏从原始音轨中分离出来,使得用户可以单独处理或重混音频,创造出清晰干净的伴奏轨道。若缺乏强大的音频剪辑软件或专业人声分离工具,这一过程往往会比较困难。…

实用至上:智能体/Agent 是什么

Agent 的起源 不做词义追源,仅从大众角度,这个事儿是去年初开始的,也就是 2023 年 2-3 月。标志性事件包括: AutoGPT 等开源项目的发布,这是第一批基于自然语言的 AI 自动化实践:你告诉它一个任务&#xf…

Vscode远程ubuntu

远程连接 到这里vscode远程到ubuntu和关闭远程连接,已完成 配置python环境 在远程目录下新建.vscode隐藏文件夹,文件夹里新建一个 settings.json 文件, 先远程服务器看下conda下的python虚拟环境位置 settings.json位置及内容如下 测试pyt…