主頁 >  其他 > 關于docker那點事兒——docker原理

關于docker那點事兒——docker原理

2021-07-29 08:41:05 其他

文章目錄

  • 前言
  • 一、namespace
    • 1、認識namespace
    • 2、基于 Linux Namespace 的隔離機制相比于虛擬化技術的不足之處
  • 二、cgroups
    • 1、為什么要限制容器
    • 2、cgroups與容器最親密的限制能力
    • 3、cgroups不足
  • 三、rootfs

前言

容器本質:
namespace 空間隔離
cgroup 資源限制
rootfs 檔案系統

一、namespace

1、認識namespace

??namespace是Linux 容器中用來實作"隔離"的技術手段,namespace 技術實際上修改了應用行程看待整個計算機"視圖",即它的"視線"被作業系統做了限制,只能"看到"某些指定的內容,但對于宿主機來說,這些被"隔離"了的行程跟其他行程并沒有太大區別,
?? docker run -it busybox —name busybox /bin/sh 這條指令翻譯成人類的語言就是:請幫我啟動一個容器,在容器里執行 /bin/sh,并且給我分配一個命令列終端跟這個容器互動,docker exec -it busybox ps -ef在容器里執行 ps 指令會發現/bin/sh行程,就是這個容器內部的第 1 號行程(PID=1),而這個容器里一共只有兩個行程在運行,這就意味著,前面執行的 /bin/sh,以及我們剛剛執行的 ps,已經被 Docker 隔離在了一個跟宿主機完全不同的世界當中,

PID   USER     TIME  COMMAND
1 root      0:00 /bin/sh
8 root      0:00 ps -ef

??在 Linux 系統中創建執行緒的系統呼叫是 clone(),比如:int pid = clone(main_function, stack_size, SIGCHLD, NULL); 這個系統呼叫就會為我們創建一個新的行程,并且回傳它的行程號 pid, 而當用 clone() 系統呼叫創建一個新行程時,就可以在引數中指定 CLONE_NEWPID 引數,比如:int pid = clone(main_function, stack_size, CLONE_NEWPID | SIGCHLD, NULL); 這時,新創建的這個行程將會"看到"一個全新的行程空間,在這空間里,它的 PID 是 1,之所以說"看到",是因為這只是一個"障眼法",在宿主機真實的行程空間里,這個行程的 PID 還是真實的數值, 當然可以多次執行上面的 clone() 呼叫,這樣就會創建多個 PID Namespace,而每個 Namespace 里的應用行程,都會認為自己是當前容器里的第 1 號行程,它們既看不到宿主機里真正的行程空間,也看不到其他 PID Namespace 里的具體情況,

??除了剛用到的 PID Namespace,Linux 作業系統還提供了 Network 、IPC、Mount、UTS和 User 這些 Namespace,用來對各種不同的行程背景關系進行"障眼法"操作,

  • pid 命名空間

    不同用戶的行程就是通過 pid 名字空間隔離開的,且不同名字空間中可以有相同 pid,所有的 LXC 行程在 Docker中的父行程為Docker行程,每個 LXC 行程具有不同的名字空間,同時由于允許嵌套,因此可以很方便的實作嵌套的Docker 容器, LXC:Linux Container容器是一種內核虛擬化技術,可以提供輕量級的虛擬化,以便隔離行程和資源,

  • net 命名空間

    有了pid名字空間, 每個名字空間中的 pid 能夠相互隔離,但是網路埠還是共享 host 的埠,網路隔離是通過 net 名字空間實作的,每個 net 名字空間有獨立的 網路設備, IP 地址, 路由表, /proc/net 目錄,這樣每個容器的網路就能隔離開來,Docker 默認采用 veth 的方式,將容器中的虛擬網卡同 host 上的一 個Docker 網橋 docker0 連接在一起,

  • ipc 命名空間

    容器中行程互動還是采用了 Linux 常見的行程間互動方法(interprocess communication - IPC), 包括信號量、訊息佇列和共享記憶體、socket、管道等,然而同 VM 不同的是,容器的行程間互動實際上還是 host 上具有相同 pid 名字空間中的行程間互動,因此需要在 IPC 資源申請時加入名字空間資訊,每個 IPC 資源有一個唯一的 32 位 id,

  • mnt命名空間

    類似 chroot,將一個行程放到一個特定的目錄執行,mnt 名字空間允許不同名字空間的行程看到的檔案結構不同,這樣每個名字空間中的行程所看到的檔案目錄就被隔離開了,同 chroot 不同,每個名字空間中的容器在 /proc/mounts 的資訊只包含所在名字空間的 mount point,

  • uts 命名空間

    UTS(“UNIX Time-sharing System”) 名字空間允許每個容器擁有獨立的 hostname 和 domain name, 使其在網路上可以被視作一個獨立的節點而非主機上的一個行程,

  • user 命名空間

    每個容器可以有不同的用戶和組 id, 也就是說可以在容器內用容器內部的用戶執行程式而非主機上的用戶,

??所以,Docker 容器這個聽起來玄而又玄的概念,實際上是在創建容器行程時,指定了這個行程所需要啟用的一組 Namespace 引數,這樣,容器就只能"看"到當前 Namespace 所限定的資源、檔案、設備、狀態,或者配置,而對于宿主機以及其他不相關的程式,它就完全看不到了,所以說,容器,其實是一種特殊的行程而已,所以說人們常把docker與虛擬機相比,其實不恰當,到此下面這張docker與虛擬機的對比圖,可以很容易就看懂了,

??容器與虛擬機對比圖:
在這里插入圖片描述

2、基于 Linux Namespace 的隔離機制相比于虛擬化技術的不足之處

1. 隔離得不徹底

??既然容器只是運行在宿主機上的一種特殊的行程,那么多個容器之間使用的就還是同一個宿主機的作業系統內核,

??盡管可以在容器里通過 Mount Namespace 單獨掛載其他不同版本的作業系統檔案,比如 CentOS 或者 Ubuntu,但這并不能改變共享宿主機內核的事實,如果你要在 Windows 宿主機上運行 Linux 容器,或者在低版本的 Linux 宿主機上運行高版本的 Linux 容器,都是行不通的,

??而相比之下,擁有硬體虛擬化技術和獨立 Guest OS 的虛擬機就要方便得多了,最極端的例子是,Microsoft 的云計算平臺 Azure,實際上就是運行在 Windows 服務器集群上的,但這并不妨礙你在它上面創建各種 Linux 虛擬機出來,

2. 在 Linux 內核中,有很多資源和物件是不能被 Namespace 化的,最典型的例子就是:時間

??如果你的容器中的程式使用 settimeofday(2) 系統呼叫修改了時間,整個宿主機的時間都會被隨之修改,這顯然不符合用戶的預期,相比于在虛擬機里面可以隨便折騰的自由度,在容器里部署應用的時候,“什么能做,什么不能做”,就是用戶必須考慮的一個問題,

3. 因為共享宿主機內核的事實,容器給應用暴露出來的攻擊面是相當大的

??盡管實踐中可以使用 Seccomp 等技術,對容器內部發起的所有系統呼叫進行過濾和甄別來進行安全加固,但這種方法因為多了一層對系統呼叫的過濾,一定會拖累容器的性能,何況,默認情況下,誰也不知道到底該開啟哪些系統呼叫,禁止哪些系統呼叫,

??所以,生產環境中,沒有人敢把運行在物理機上的 Linux 容器直接暴露到公網上,當然,基于虛擬化或者獨立內核技術的容器實作,則可以比較好地在隔離與性能之間做出平衡,

二、cgroups

??一個正在運行的 Docker 容器,其實就是一個啟用了多個 Linux Namespace 的應用行程,而這個行程能夠使用的資源量,則受 Cgroups 配置的限制,

??Linux Cgroups 的全稱是 Linux Control Group,它最主要的作用,是限制一個行程組能夠使用的資源上限,包括 CPU、記憶體、磁盤、網路帶寬等,Cgroups提供了對一組行程及將來的子行程的資源的限制,控制和統計的能力,這些資源包括CPU,記憶體,存盤,網路等,通過Cgroups,可以方便的限制某個行程的資源占用,并且可以實時的監控行程的監控和統計資訊,

??此外,Cgroups 還能夠對行程進行優先級設定、審計,以及將行程掛起和恢復等操作,

1、為什么要限制容器

?? 以 PID Namespace 為例,雖然容器內的 1 號行程在"障眼法"的干擾下只能看到容器里的情況,但是宿主機上,它作為第 100 號行程與其他所有行程之間依然是平等競爭關系,這就意味著,雖然第 100 號行程表面上被隔離了起來,但是它所能夠使用到的資源(比如 CPU、記憶體),卻是可以隨時被宿主機上的其他行程占用的,當然,這個行程自己也可能把所有資源吃光,這些情況,顯然都不是一個"沙盒"應該表現出來的合理行為, 而Linux Cgroups 就是 Linux 內核中用來為行程設定資源限制的一個重要功能,

2、cgroups與容器最親密的限制能力

?? Linux 中,Cgroups 給用戶暴露出來的操作介面是檔案系統,即它以檔案和目錄的方式組織在作業系統的 /sys/fs/cgroup 路徑下,
?? 用 mount 指令把它們展示出來:

mount -t cgroup  
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/usr/lib/systemd/systemd-cgroups-agent,name=systemd)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)
cgroup on /sys/fs/cgroup/pids type cgroup (rw,nosuid,nodev,noexec,relatime,pids)
cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,net_prio,net_cls)
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpuacct,cpu)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)
cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory)
cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,hugetlb)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)

?? 輸出結果,是一系列檔案系統目錄,在 /sys/fs/cgroup 下面有很多諸如 cpuset、cpu、 memory 這樣的子目錄,也叫子系統,這些都是這臺機器當前可以被 Cgroups 進行限制的資源種類,而在子系統對應的資源種類下,你就可以看到該類資源具體可以被限制的方法,

?? 比如,對 CPU 子系統來說,可以看到如下幾個組態檔:

ls /sys/fs/cgroup/cpu  

cgroup.clone_children cpu.cfs_period_us cpu.rt_period_us cpu.shares notify_on_release  

cgroup.procs cpu.cfs_quota_us cpu.rt_runtime_us cpu.stat tasks  

?? 比如:cfs_period 和 cfs_quota 這兩個引數需要組合使用,可以用來限制行程在長度為 cfs_period 的一段時間內,只能被分配到總量為 cfs_quota 的 CPU 時間,

?? Linux Cgroups 的設計,簡單粗暴地理解,就是一個子系統目錄加上一組資源限制檔案的組合,而對于 Docker 等 Linux 容器專案來說,它們只需要在每個子系統下面,為每個容器創建一個控制組(即創建一個新目錄),然后在啟動容器行程之后,把這個行程的 PID 填寫到對應控制組的 tasks 檔案中就可以了,

?? 至于在這些控制組下面的資源檔案里填上什么值,就靠用戶執行 docker run 時的引數指定了,比如這樣一條命令:

docker run -it --cpu-period=100000 --cpu-quota=20000 daocloud.io/centos /bin/bash

?? 在centos7里面是下面這個目錄:

cat /sys/fs/cgroup/cpu,cpuacct/system.slice/docker-92f76c52e9c0c34e0f8e5bac01f75919ce59838951a86501e7114d218f8aaf3e.scope/cpu.cfs_quota_us
20000

?? 這就意味著這個 Docker 容器,只能使用到 20% 的 CPU 帶寬,

?? 由于一個容器的本質就是一個行程,用戶的應用行程實際上就是容器里 PID=1 的行程,也是其他后續創建的所有行程的父行程,這就意味著,在一個容器中,你沒辦法同時運行兩個不同的應用,除非你能事先找到一個公共的 PID=1 的程式來充當兩個不同應用的父行程,這也是為什么很多人都會用 systemd 或者 supervisord 這樣的軟體來代替應用本身作為容器的啟動行程,

?? 這是因為容器本身的設計,就是希望容器和應用能夠同生命周期,這個概念對后續的容器編排非常重要,否則,一旦出現類似于"容器是正常運行的,但是里面的應用早已經掛了"的情況,編排系統處理起來就非常麻煩了,

3、cgroups不足

??Cgroups 對資源的限制能力也有很多不完善的地方,被提及最多的自然是 /proc 檔案系統的問題,

??眾所周知,Linux 下的 /proc 目錄存盤的是記錄當前內核運行狀態的一系列特殊檔案,用戶可以通過訪問這些檔案,查看系統以及當前正在運行的行程的資訊,比如 CPU 使用情況、記憶體占用率等,這些檔案也是 top 指令查看系統資訊的主要資料來源,

??但是,你如果在容器里執行 top 指令,就會發現,它顯示的資訊居然是宿主機的 CPU 和記憶體資料,而不是當前容器的資料,造成這個問題的原因就是,/proc 檔案系統并不知道用戶通過 Cgroups 給這個容器做了什么樣的資源限制,即:/proc 檔案系統不了解 Cgroups 限制的存在,

三、rootfs

??實際上,Mount Namespace 是基于對 chroot 的不斷改良才被發明出來的,它也是 Linux作業系統里的第一個 Namespace,當然,為了能夠讓容器的這個根目錄看起來更“真實”,我們一般會在這個容器的根目錄下掛載一個完整作業系統的檔案系統,而這個掛載在容器根目錄上、用來為容器行程提供隔離后執行環境的檔案系統,就是所謂的“容器鏡像”,它還有一個更為專業的名字,叫作:rootfs(根檔案系統)

??Docker 公司在實作 Docker 鏡像時并沒有沿用以前制作 rootfs 的標準流程,而是做了一個小小的創新,當然,這個想法不是憑空臆造出來的,而是用到了一種叫作聯合檔案系統(Union FileSystem)的能力,Union File System 也叫 UnionFS,最主要的功能是將多個不同位置的目錄聯合掛載(union mount)到同一個目錄下,現在高版本的docker都使用OverlayFS檔案系統,OverlayFS類似AUFS,

??Docker 在鏡像的設計中,引入了層(layer)的概念,也就是說,用戶制作鏡像的每一步操作,都會生成一個層,也就是一個增量 rootfs,它最關鍵的目錄結構在 /var/lib/docker 路徑下的 diff 目錄:

ls /var/lib/docker/overlay/diff/<layer_id>

#我們可以使用 docker image inspect 查詢Layers
docker image inspect eureka-server:t1

"RootFS": {
    "Type": "layers",
    "Layers": [
        "sha256:a2ae92ffcd29f7ededa0320f4a4fd709a723beae9a4e681696874932db7aee2c",
        "sha256:0eb22bfb707db44a8e5ba46a21b2ac59c83dfa946228f04be511aba313bdc090",
        "sha256:30339f20ced009fc394410ac3360f387351641ed40d6b2a44b0d39098e2e2c40",
        "sha256:ce6c8756685b2bff514e0b28f78eedb671380084555af2b3833e54bb191b262a",
        "sha256:a3483ce177ce1278dd26f992b7c0cfe8b8175dd45bc28fee2628ff2cf063604c",
        "sha256:6ed1a81ba5b6811a62563b80ea12a405ed442a297574de7440beeafe8512a00a",
        "sha256:c3fe59dd955634c3fa1808b8053353f03f4399d9d071be015fdfb98b3e105709",
        "sha256:35c20f26d18852b74cc90afc4fb1995f1af45537a857eef042a227bd8d0822a3",
        "sha256:70ecef0b4267941f5c4384f7938cbadafd36fdbfadf52c2be58ce2418236f180",
        "sha256:984b7bf3b699879285c3d6dc3f6bba8bbf273ad0576f40c4b89ca055441e6644"
    ]
},

?&emsp可以看到,eureka-server這個共有10層layer,也就是10個rootfs,每一層都是基礎OS、java環境、eureka服務所用檔案系統的一部分,當運行景象時,這些檔案系統會掛載到一個統一的目錄—— /var/lib/docker/overlay2/,可以嘗試去查看每個目錄下檔案,

ll 32183dfcce4ea5f0cc2f5dca77937f14aeeb6527ef94014d583dfa7817d23b81/diff/  #讀寫層
total 32
drwxr-xr-x 10 root root 4096 Nov 14  2019 etc
-rw-r--r--  1 root root  920 Nov 11  2019 ip.txt
dr-xr-x---  2 root root 4096 Nov 14  2019 root
drwxr-xr-x  2 root root 4096 Nov 14  2019 run
drwxr-xr-x  2 root root 4096 Nov 14  2019 test
drwxrwxrwt  2 root root 4096 Nov 14  2019 tmp
drwxr-xr-x  8 root root 4096 Jun  1  2018 usr
drwxr-xr-x  7 root root 4096 Jun  1  2018 var
ll 32183dfcce4ea5f0cc2f5dca77937f14aeeb6527ef94014d583dfa7817d23b81-init/diff/
total 8
drwxr-xr-x 4 root root 4096 Nov 14  2019 dev
drwxr-xr-x 2 root root 4096 Nov 14  2019 etc

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/290770.html

標籤:其他

上一篇:計算機網路(三):應用層

下一篇:Linux-CentOS 7.9 - 7、Linux 常用運維命令&操作(高級)建議收藏

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more