当前位置: 首页 > news >正文

Linux之Docker虚拟化技术(四)

一、基于Docker搭建私有仓库

Docker仓库主要用于存储Docker镜像,Docker 仓库主要分为私有仓库和公有仓库

私有仓库优点

  • 节省带宽,只针对每个镜像无需去docker官网下载
  • 下载Docker镜像从本地私有仓库中下载
  • 组件公司内部私有仓库,方便各部门使用
  • 可以基于git,SVN,jkens,k8s更新本地Docker私有仓库镜像版本

使用的操作流程如下

## 拉取regitry镜像
docker pull registry## 创建容器
docker run -itd --name=jfedu-registry -p 5000:5000 -v /data/registry:/var/lib/registry/ registry:latest## 修改tag名
docker tag nginx:latest 192.168.101.5:5000/nginx:latest## 将镜像上传到私有仓库
docker push nginx:latest## 指定拉取仓库
docker pull nginx:latest## 进入docker配置文件,修改daemon.json文件
"insecure-registries":["192.168.101.5:5000"]## 查看上传的镜像
http://192.168.101.135:5000/v2/_catalog

本地镜像通常会存在此目录

打开网站我们也能发现镜像

  • 仓库的迁移和备份

现在我将这里面的镜像移除

## 移除镜像
[root@localhost v2]# mv repositories repositories.bak
[root@localhost v2]# ls
blobs  repositories.bak

一旦备份数据,再次访问仓库时镜像就不存在了

一旦数据恢复,又可以再次拉取镜像了

  • 分布式实现后台服务均衡(nginx代理)

创建两个私有仓库容器

[root@localhost v2]# docker run -itd --name=regitery  -v /data/registry:/var/lib/registry/ registry:latest

第三方机器上安装nginx

在docker仓库配置文件添加配置信息

现在即可拉取自己搭建私有仓库了

二、容器和镜像理论知识

Docker概念

Docker技术好比是一个一个庞大的工厂,在工厂里面集装箱好比是容器,里面每一个货物我们可以将它成为镜像

Docker是一个开源的应用容器引擎,让开发者可以打包他们的依赖包到一个可移植的容器,跨平台使用。

Dockerd的基础是基于LXC技术,在LXC基础上,docker进一步进行封装

Docker 虚拟化三大要点(镜像、容器、仓库)

镜像:Docker的进行其实就是模版,生活中好比一栋大厦的地基,通常情况可以将镜像中的文件,数据挂载到容器内部,相较于iso镜像文件,系统安装完成,镜像中的文件,数据会拷贝到系统中

容器(服务、轻量级容器):使用镜像常见的应用或系统

镜像类似于程序,容器类似于运行中的进程

Docker虚拟机 VS 传统虚拟机

优点:

  • 操作启动快:容器的启动、管理、开始、重启都是以毫秒为单位响应
  • 轻量级虚拟机:在一台服务器上可以部署100~1000个Containr容器
  • 开源免费:开源的、免费,低成本,由现代Linux内核支持并驱动公司 
  • 前景云服务:各大主流公司都在推动docker快速发展

缺点:

GO语言还未成熟、知道的人比较少

为什么使用docker ?

  • 更快速的交付和部署,开发人员可以快速构建一套开发容器,开发完成后,运维人员可以使用这个容器来部署代码
  • 可以高效实现资源的扩缩容(数量),提高资源利用率
  • 更简单的管理:所有的修改都以=增量的方式被分发和更新,只需小小的修改就可以替代大量的更新工作

Docker引擎是一个c/s架构的应用,其结构图如下:

Docker使用c/s结构,docker client 端和servre端,可以运行同一台集群,也可以跨主机远程通信

Docker镜像的原理

一个完整的镜像可以支撑一个docker容器的运行,在docker容器运行过程中,主要提供文件系统的支撑

Docker镜像

  • 镜像分层:每个镜像由一个或多个镜像层组成
  • 可以通过原基础镜像加上一定的镜像层得到一个新镜像
  • 每个镜像层拥有唯一的镜像ID
  • 镜像层在共享相同的镜像层时,在pull镜像时,已有的镜像会自动跳过下载
  • 每个镜像层都是只读的,即使启动成容器,也无法对其进行修改,修改只会作用于容器层

三、容器硬件资源配置(Cpu,内存、硬盘)

查看cpu、内存使用情况

## 创建容器,并分配资源
[root@localhost v2]# docker run -itd --name=vm03 --cpuset-cpus=0-1 -m 2048m --privileged  openeuler:latest
496f9081ea63fd38471b919cca8d675e187829438cb05f7d622176ce5d70c6b0## 查看分配资源
[root@localhost v2]# docker inspect vm03|grep -aiwE "cpusetcpus|memory""Memory": 2147483648,"CpusetCpus": "0-1",## 更新资源
[root@localhost v2]# docker update vm02 -m 2048m --cpuset-cpus=0-2
vm02## 获取CPU、MEM信息
[root@localhost v2]# docker stats vm02 --no-stream | awk 'NR>1{print "CPU:"$3"\n""MEM:"$4}'
CPU:0.00%
MEM:16.58MiB
[root@localhost v2]# docker stats vm02 --no-stream | awk 'NR>1{print "CPU:"$3"\n""MEM:"$4}'
CPU:0.00%
MEM:16.58MiB

容器硬盘的调整

添加一块硬盘

格式化为xfs格式

[root@localhost ~]# mkfs.xfs /dev/sdb
meta-data=/dev/sdb               isize=512    agcount=4, agsize=6553600 blks=                       sectsz=512   attr=2, projid32bit=1=                       crc=1        finobt=1, sparse=1, rmapbt=0=                       reflink=1    bigtime=1 inobtcount=0
data     =                       bsize=4096   blocks=26214400, imaxpct=25=                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=12800, version=2=                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@localhost ~]# 

开启磁盘配额完成挂载


## 用户配额,目录配额
[root@localhost ~]# mount -o uquota,prjquota /dev/sdb /data/
[root@localhost ~]# 

## 指定容器挂载分区和资源分配

## 每次创建分配50G硬盘空间/usr/local/docker/dockerd --data-root=/data/docker --storage-opt overlay2.size=40G -H 0.0.0.0:2375 -H unix:///var/run/docker.sock 

硬盘资源设置成功


文章转载自:

http://9UWBceHi.ptLwt.cn
http://O1RPOUDN.ptLwt.cn
http://w7p4yD8g.ptLwt.cn
http://aCDf1S9p.ptLwt.cn
http://hlA5RhrL.ptLwt.cn
http://1P1Rcx8e.ptLwt.cn
http://Vwpvhy22.ptLwt.cn
http://QE8077Eu.ptLwt.cn
http://TYSOJGoD.ptLwt.cn
http://WLZsJlDY.ptLwt.cn
http://d2weCZRK.ptLwt.cn
http://3U4tlqls.ptLwt.cn
http://AkGSFHk6.ptLwt.cn
http://WYIfqOtw.ptLwt.cn
http://sr7bXRpv.ptLwt.cn
http://iS2jdrEw.ptLwt.cn
http://BffZH4zE.ptLwt.cn
http://d3jkLnTB.ptLwt.cn
http://4AU21KIo.ptLwt.cn
http://5HhF3coX.ptLwt.cn
http://jdyYDfBS.ptLwt.cn
http://xHHIHrYb.ptLwt.cn
http://8whdg9Za.ptLwt.cn
http://ZeIMpq62.ptLwt.cn
http://kbaAplux.ptLwt.cn
http://Ws83DHAR.ptLwt.cn
http://UvX3zjSx.ptLwt.cn
http://P6uFpAec.ptLwt.cn
http://EmilDNPw.ptLwt.cn
http://Kv4BihvT.ptLwt.cn
http://www.dtcms.com/a/368555.html

相关文章:

  • JS中的String的常用方法
  • Linux调试命令速查:Java/微服务必备
  • 一文吃透 Protobuf Proto3 语法 + 风格规范 + 枚举行为全解(含检查清单与示例)
  • 第24节:3D音频与空间音效实现
  • AI Compass前沿速览:Kimi K2、InfinityHuman-AI数字人、3D-AI桌面伴侣、叠叠社–AI虚拟陪伴
  • 8051单片机-蜂鸣器
  • 来WAVE SUMMIT,文心快码升级亮点抢先看!
  • Redis 深度解析:数据结构、持久化与集群
  • MyBatis高频问题-自动映射与缓存解析
  • 力扣152:乘积最大子数组
  • honmony 中集成 tuanjie/unity
  • (二)文件管理-基础命令-rm命令的使用
  • 鸿蒙系统开发资料汇总:全面助力鸿蒙开发HarmonyOS
  • 手写React状态hook
  • scrypt 密钥派生算法(RFC7914)技术解析及源码示例
  • 案例分享|企微智能会话风控系统:为尚丰盈铝业筑牢沟通安全防线
  • Docker部署Drawnix开源白板工具
  • linux缺页中断频繁怎么定位
  • 代码随想录70期day3
  • AI驱动开发:颠覆传统编程新范式
  • 第三方web测评机构:【WEB安全测试中HTTP方法(GET/POST/PUT)的安全风险检测】
  • PAT 1096 Consecutive Factors
  • 53.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--新增功能--集成短信发送功能
  • vsan高可用:确保可访问性、全部数据迁移,两种类型权衡
  • 神经网络|(十八)概率论基础知识-伽马函数·下
  • 力扣55:跳跃游戏
  • IDEA中Transaction翻译插件无法使用,重新配置Transaction插件方法
  • Daemon Tools Lite下载安装图文教程 | 2025官方中文版免费指南
  • 原子工程用AC6编译不过问题
  • 旧服务下线方案