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 | 系统调用参数 | 对应全局系统资源 |
UTS | CLONE_NEWUTS | 主机名与域名 |
IPC | CLONE_NEWIPC | 信号量、消息队列、共享内存 |
PID | CLONE_NEWPID | 进程ID |
Network | CLONE_NEWNET | 网络设备、网络栈、端口等 |
Mount | CLONE_NEWNS | 文件系统挂载点 |
User | CLONE_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
如图,圈内的就是 网桥
相关文章:
Docker基本使用和认识
目录 基本使用 镜像仓库 镜像操作 Docker 如何实现镜像 1) namespace 2) cgroup 3) LXC Docker常见的网络类型 bridge网络如何实现 基本使用 镜像仓库 镜像仓库登录 1)docker login 后面不指定IP地址,则默认登录到 docker hub 上 退出 2)docker logo…...
Halcon 文本文件操作,形态学
一文件的读写 *******************************************************向文本文件写入字符串内容*************************************************************read_image (Image, fabrik)threshold (Image, Region, 0, 120)area_center (Region, Area, Row, Column)open_…...
【鸿蒙】稍微理解一下Stage模型
鸿蒙的Stage模型是HarmonyOS多端统一的应用开发框架中的一个核心概念,用于描述应用的界面层次结构和组件之间的关系。下面将详细解析Stage模型的主要组成部分和特点: 模型组成: UIAbility组件:这是应用中负责绘制用户界面的组件&a…...
毕业答辩制作PPT【攻略】
毕业答辩制作PPT【攻略】 前言版权毕业答辩制作PPT【攻略】一、WPS AI 15天免费会员二、AI文档生成PPT三、修改完善PPT 最后 前言 2024-06-14 23:43:05 以下内容源自《【攻略】》 仅供学习交流使用 版权 禁止其他平台发布时删除以下此话 本文首次发布于CSDN平台 作者是CSDN…...
深入解析npm install --save-dev:开发依赖管理的艺术
npm(Node Package Manager)是JavaScript编程语言的包管理器,用于管理项目中的依赖关系。在开发过程中,合理地管理依赖是保证项目可维护性和可扩展性的关键。npm install命令是npm中最常用的命令之一,而--save-dev参数则…...
福布斯 AI 50 榜单中唯一开源向量数据库:Weaviate
本篇文章,聊聊福布斯全球网站前俩月发布的 2023 AI 50 榜单中的唯一一个开源的向量数据库:Weaviate。 它在数据持久化和容错性上表现非常好、支持混合搜索、支持水平扩展,同时又保持了轻量化。官方主打做 AI 时代的原生数据库,减…...
信息学奥赛初赛天天练-38-CSP-J2021阅读程序-约数个数、约数和、埃氏筛法、欧拉筛法筛素数应用
PDF文档公众号回复关键字:20240628 2021 CSP-J 阅读程序3 1阅读程序(判断题1.5分 选择题3分 共计40分 ) 01 #include<stdio.h> 02 using namespace std; 03 04 #define n 100000 05 #define N n1 06 07 int m; 08 int a[N],b[N],c[N],d[N]; 09 int f[N],g[N]; 10 11 …...
第100+13步 ChatGPT学习:R实现决策树分类
基于R 4.2.2版本演示 一、写在前面 有不少大佬问做机器学习分类能不能用R语言,不想学Python咯。 答曰:可!用GPT或者Kimi转一下就得了呗。 加上最近也没啥内容写了,就帮各位搬运一下吧。 二、R代码实现决策树分类 (…...
Hi3861 OpenHarmony嵌入式应用入门--LiteOS MessageQueue
CMSIS 2.0接口中的消息(Message)功能主要涉及到实时操作系统(RTOS)中的线程间通信。在CMSIS 2.0标准中,消息通常是通过消息队列(MessageQueue)来进行处理的,以实现不同线程之间的信息…...
ffmpeg编码图象时报错Invalid buffer size, packet size * < expected frame_size *
使用ffmpeg将单个yuv文件编码转为jpg或其他图像格式时,报错: Truncating packet of size 11985408 to 3585 [rawvideo 0x1bd5390] Packet corrupt (stream 0, dts 1). image_3264_2448_0.yuv: corrupt input packet in stream 0 [rawvideo 0x1bd7c60…...
解决类重复的问题
1.针对AndroidX 类重复问题 解决办法: android.useAndroidXtrue android.enableJetifiertrue2.引用其他sdk出现类重复的问题解决办法:configurations {all { // You should exclude one of them not both of themexclude group: "com.enmoli"…...
使用 shell 脚本 统计app冷启动耗时
下面是一个 shell 脚本,它使用 参数将包名称作为参数--app,识别相应应用程序进程的 PID,使用 终止该进程adb shell kill,最后使用 重新启动该应用程序adb shell am start: #!/bin/bash# Check if package name is pro…...
使用容器部署redis_设置配置文件映射到本地_设置存储数据映射到本地_并开发java应用_连接redis---分布式云原生部署架构搭建011
可以看到java应用的部署过程,首先我们要准备一个java应用,并且我们,用docker,安装一个redis 首先我们去start.spring.io 去生成一个简单的web项目,然后用idea打开 选择以后下载 放在这里,然后我们去安装redis 在公共仓库中找到redis . 可以看到它里面介绍说把数据放到了/dat…...
第五节:如何使用其他注解方式从IOC中获取bean(自学Spring boot 3.x的第一天)
大家好,我是网创有方,上节我们实践了通过Bean方式声明Bean配置。咱们这节通过Component和ComponentScan方式实现一个同样功能。这节实现的效果是从IOC中加载Bean对象,并且将Bean的属性打印到控制台。 第一步:创建pojo实体类studen…...
Paragon NTFS与Tuxera NTFS有何区别 Mac NTFS 磁盘读写工具选哪个好
macOS系统虽然以稳定、安全系数高等优点著称,但因其封闭性,不能对NTFS格式磁盘写入数据常被人们诟病。优质的解决方案是使用磁盘管理软件Paragon NTFS for Mac(点击获取激活码)和Tuxera NTFS(点击获取激活码࿰…...
EtherCAT主站IGH-- 2 -- IGH之coe_emerg_ring.h/c文件解析
EtherCAT主站IGH-- 2 -- IGH之coe_emerg_ring.h/c文件解析 0 预览一 该文件功能coe_emerg_ring.c 文件功能函数预览 二 函数功能介绍coe_emerg_ring.c 中主要函数的作用1. ec_coe_emerg_ring_init2. ec_coe_emerg_ring_clear3. ec_coe_emerg_ring_size4. ec_coe_emerg_ring_pus…...
psensor 的手势功能
psensor 的手势功能的移植过程 有时间再来写下...
使用 nvm 管理 Node 版本及 pnpm 安装
文章目录 GithubWindows 环境Mac/Linux 使用脚本进行安装或更新Mac/Linux 环境变量nvm 常用命令npm 常用命令npm 安装 pnpmNode 历史版本 Github https://github.com/nvm-sh/nvm Windows 环境 https://nvm.uihtm.com/nvm.html Mac/Linux 使用脚本进行安装或更新 curl -o- …...
uni-appx使用form表单页面初始化报错
因为UniFormSubmitEvent的类型时 e-->detail-->value,然后没有了具体值。所以页面初始化的时候 不能直接从value取值,会报错找不到 所以form表单里的数据我们要设置成一个对象来存放 这个问题的关键在于第22行代码 取值: 不能按照点的方式取值 …...
TiDB-从0到1-数据导出导入
TiDB从0到1系列 TiDB-从0到1-体系结构TiDB-从0到1-分布式存储TiDB-从0到1-分布式事务TiDB-从0到1-MVCCTiDB-从0到1-部署篇TiDB-从0到1-配置篇TiDB-从0到1-集群扩缩容 一、数据导出 TiDB中通过Dumpling来实现数据导出,与MySQL中的mysqldump类似,其属于…...
动手学深度学习(Pytorch版)代码实践 -卷积神经网络-16自定义层
16自定义层 import torch import torch.nn.functional as F from torch import nnclass CenteredLayer(nn.Module):def __init__(self):super().__init__()#从其输入中减去均值#X.mean() 计算的是整个张量的均值#希望计算特定维度上的均值,可以传递 dim 参数。#例如…...
树莓派4设置
使用sudo命令时要求输入密码 以 sudo 为前缀的命令以超级用户身份运行。默认情况下,超级用户不需要密码。不过,您可以要求所有以 sudo 运行的命令都输入密码,从而提高 Raspberry Pi 的安全性。 要强制 sudo 要求输入密码,请为你…...
44.商城系统(二十五):k8s基本操作,ingress域名访问,kubeSphere可视化安装
上一章我们已经配置好了k8s集群,如果没有配置好先去照着上面的配。 一、k8s入门操作 1.部署一个tomcat,测试容灾恢复 #在主机器上执行 kubectl create deployment tomcat6 --image=tomcat:6.0.53-jre8#查看k8s中的所有资源 kubectl get all kubectl get all -o wide#查看po…...
MySQL高级查询
MySQL 前言 文本源自微博客 (www.microblog.store),且已获授权. 一. mysql基础知识 1. mysql常用系统命令 启动命令 net start mysql停止命令 net stop mysql登录命令 mysql -h ip -P 端口 -u 用户名 -p 本机可以省略 ip mysql -u 用户名 -p 查看数据库版本 mysql --ve…...
聊聊啥项目适合做自动化测试
作为测试从业者,你是否遇到过这样的场景,某天公司大Boss找你谈话。 老板:小李,最近工作辛苦了 小李:常感谢您的认可,这不仅是对我个人的鼓励,更是对我们整个团队努力的认可。我们的成果离不开每…...
ROS2开发机器人移动
.创建功能包和节点 这里我们设计两个节点 example_interfaces_robot_01,机器人节点,对外提供控制机器人移动服务并发布机器人的状态。 example_interfaces_control_01,控制节点,发送机器人移动请求,订阅机器人状态话题…...
【强化学习】第02期:动态规划方法
笔者近期上了国科大周晓飞老师《强化学习及其应用》课程,计划整理一个强化学习系列笔记。笔记中所引用的内容部分出自周老师的课程PPT。笔记中如有不到之处,敬请批评指正。 文章目录 2.1 动态规划:策略收敛法/策略迭代法2.2 动态规划…...
安全技术和防火墙(二)
接上一节 备份和还原 iptables-save > /opt/iptables.bak iptables-restore < /opt/iptables.bak snat和dnat snat源地址转换 内网到外网 内网ip转换成可以访问外网的ip 内网的多个主机可以只有一个有效的公网ip地址访问外部网络 dnat 目的地址转发 外部用户&#…...
【51单片机入门】数码管原理
文章目录 前言共阴极与共阳极数码管多个数码管显示原理 总结 前言 在我们的日常生活中,数码管被广泛应用于各种电子设备中,如电子表、计时器、电子钟等。数码管的主要功能是显示数字和一些特殊字符。在这篇文章中,我们将探讨数码管的工作原理…...
三星DRAM、NAND,“又双叒叕”带头涨价了
据韩国媒体《每日经济新闻》报道,三星电子计划在第三季度上调服务器DRAM和企业级NAND闪存的价格,涨幅预计在15%-20%,主要受人工智能(AI)需求激增的推动。这一举措有望提振公司下半年业绩。 据《经济日报》报道援引业内消息,由于厂…...
可视化建网站/市场推广方案
现在网上一查出现安全模式的连接,基本都是要关闭服务端的操作,其实这种方式是不正确的,最有效的解决方式是使用stunnel进行安全模式的连接。 我碰到的问题是微软云(其实我不想用!)连接Redis,默认…...
什么是自适应网站/东莞网站快速排名提升
将数据(如音频、视频、文本)变为图像结构,然后进行处理 输入二维像素,输出是 即使输入数据是经过旋转、缩放等处理的,输出仍然可以正确识别并进行输出 feature map 颜色越深,值越低 卷积核 如果卷积核形状与…...
装修案例实景图/天津百度快速排名优化
实验三 模型机组合部件的实现(二)(实验报告格式案例) 班级 计XXXXX 姓名 wolf 学号 2021080XXXXX 一、实验目的 1.了解简易模型机的内部结构和工作原理。 2.分析模型机的功能&am…...
亚马逊注册没有公司网站怎么做/小网站怎么搜关键词
Python 实现用户登录系统 案例 一(基于hashlib & sys)基于hashlib 库MD5算法对用户密码进行加密用户名和密码信息存储在内存中 import sys import hashlib"""实现一个用户登录系统,用户可以输入用户面进行用户的注册、用户…...
男女做羞羞事动画网站免费/百度一下 你就知道首页
20172330 2017-2018-2 《程序设计与数据结构》第一周学习总结 教材学习内容总结 本周的学习内容为是软件工程,这是一门关于高质量软件开发的技术和理论的学科,用来控制开发过程,实现高质量的软件。 概述 软件工程的目标包括以下: …...
内江市住房和城乡建设局网站电话号码/一份完整的电商运营方案
重要提示: 下一版本的 Microsoft SQL Server 将删除该功能。请不要在新的开发工作中使用该功能,并尽快修改当前还在使用该功能的应用程序。 改为使用链接服务器和链接服务器存储过程。 返回远程 SQL Server 数据库服务器在登录记录中显示的名称。 Transa…...