欧美性猛交xxxx免费看_牛牛在线视频国产免费_天堂草原电视剧在线观看免费_国产粉嫩高清在线观看_国产欧美日本亚洲精品一5区

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

docker存儲驅(qū)動的工作原理

馬哥Linux運(yùn)維 ? 來源:未知 ? 作者:李倩 ? 2018-06-26 11:49 ? 次閱讀

博主一直都很喜歡思考怎樣管理裝在自己電腦上的桌面系統(tǒng),這篇算是前作能當(dāng)主力,能入虛擬機(jī),還能隨時打包帶走,Linux就是這么強(qiáng)大的后續(xù)探索吧。

近些年來,Docker由于提供了一套非常方便地創(chuàng)建并運(yùn)行應(yīng)用容器的方法,而在全球掀起了一股容器化的熱潮。容器通過將軟件及其所需要的運(yùn)行環(huán)境一同打包帶走,從而將人們從依賴的苦海中拯救出來。雖然Docker設(shè)計(jì)的初衷并不是操作系統(tǒng)容器,更不是一個直接運(yùn)行在裸機(jī)上的操作系統(tǒng),但是docker這套強(qiáng)大的工具也會給我們管理操作系統(tǒng)帶來巨大的便利。

為什么要用Docker鏡像當(dāng)作桌面系統(tǒng)?這就要從普通桌面系統(tǒng)的不方便之處說起。通常我們都擁有不止一臺電腦,我們希望這些電腦能夠保持一致。這里所說的“一致”,用一個例子來講,就是我在一臺電腦上編輯了一半的文件,不需要認(rèn)為拷貝到另一臺電腦上,而是直接打開電腦就能編輯。如果這個文件只是一個純文本文件,或者一個Microsoft Word文檔,那么實(shí)現(xiàn)這個一致性非常簡單:把文件扔到Dropbox之類的云同步盤就好。然而對于專業(yè)用戶來講,這種一致性的保持并非單純的扔到Dropbox里面那么簡單:比如說你最近忙于一個項(xiàng)目,這個項(xiàng)目要用到若干編程語言,然后在電腦里裝了一堆庫,一堆工具軟件,有圖形界面的,也有命令行的。在工作的過程中,你有可能不斷安裝新的工具,或者決定棄用某個之前計(jì)劃使用的庫或者工具。要讓你的工作在你的若干臺電腦上都能工作,就要一直維護(hù)不同機(jī)器的環(huán)境的一致性:在一臺機(jī)器上安裝的工具,要在所有機(jī)器上重新安裝一遍。在一臺機(jī)器上升級了的庫,要在所有機(jī)器上都升級,稍微有所差池,就有可能出現(xiàn)某個腳本/程序在一臺機(jī)器上跑的好好的,在另一臺機(jī)器上卻無法運(yùn)行的問題。

docker哲學(xué)

不熟悉docker的讀者可以戳這里來了解docker。Docker的使用非常簡單:我們通過寫一個Dockerfile,在Dockerfile中寫入相應(yīng)的命令來安裝以及配置我們想要的庫跟工具。不熟悉docker的讀者可以看一下下面這個抄來的Dockerfile的例子,來了解一下Dockerfile長啥樣子:

FROM ubuntuMAINTAINER Kimbro StakenRUN apt-get install -y software-properties-common pythonRUN add-apt-repository ppa:chris-lea/node.jsRUN echo "deb http://us.archive.ubuntu.om/ubuntu/ precise universe" >> /etc/apt/sources.listRUN apt-get updateRUN apt-get install -y nodejs#RUN apt-get install -y nodejs=0.6.12~dfsg1-1ubuntu1RUN mkdir /var/wwwADD app.js /var/www/app.jsCMD ["/usr/bin/node", "/var/www/app.js"]

有了Dockerfile,只需要docker build一條命令就可以創(chuàng)建一個docker鏡像。同時Docker公司提供一個叫做DockerHub的服務(wù),可以免費(fèi)托管公開鏡像。只需要使用docker push就可以直接把鏡像上傳到DockerHub。在不同的電腦上只需要docker pull就可以從DockerHub獲取最新版的鏡像。DockerHub還支持自動構(gòu)建,通過把DockerHub帳號跟GitHub帳號關(guān)聯(lián)起來,就可以讓DockerHub在GitHub上面的Dockerfile出現(xiàn)更改的時候自動重新生成鏡像。

本文開頭所說的這種一致性的維護(hù),docker實(shí)際上已經(jīng)在給我們提供答案了:我們通過構(gòu)建一個docker鏡像,讓這個鏡像包含著我們項(xiàng)目所需要的所有的一切。這樣的話,我們開發(fā),測試,部署等等一切任務(wù),都可以在先用docker run來開啟一個容器,然后在容里面進(jìn)行所有的工作。當(dāng)我們決定修改運(yùn)行環(huán)境,比如引入新的庫的時候,就在Dockerfile中進(jìn)行相應(yīng)的修改,重新生成鏡像,然后在不同的機(jī)器上用docker pull來更新一下就好。這種使用哲學(xué),通過一個中心化了的倉庫,非常優(yōu)雅地解決了不同機(jī)器上環(huán)境一致的問題。美中不足的是,并不是所有的程序都能在容器里運(yùn)行的,也并不是所有的程序都方便在容器里運(yùn)行的。如果你用到了圖形界面的程序,或者說是一些系統(tǒng)級別的程序,那么在容器里面使用這些程序會麻煩很多,有的甚至根本無法實(shí)現(xiàn)。于是自然地就會想到,如果我們能夠在每次開機(jī)的時候,直接把某個docker生成的鏡像掛載起來當(dāng)根目錄來使用,就可以讓這個鏡像直接在裸機(jī)上(而不是在容器中)運(yùn)行,來做我們的日常桌面系統(tǒng)了。

這種做法,除了在保持一致性方面帶來的便利以外,還有一些其他的好處:

整個系統(tǒng)保存在云端,本地的內(nèi)容僅僅是云端的一份緩存而已,這樣就完全沒有必要定期對系統(tǒng)進(jìn)行備份了。

你的系統(tǒng)是如何從零開始一步一步配置成你想要的樣子的,所有的一切都清晰地展現(xiàn)在Dockerfile里面。Dockerfile就是你最好的筆記。

完全不用擔(dān)心系統(tǒng)長時間使用產(chǎn)生一些殘余的垃圾文件、或者某些系統(tǒng)中某些程序的數(shù)據(jù)出現(xiàn)損壞,因?yàn)槊看伍_機(jī),我們用的都是一個全新的系統(tǒng)。

要裝一臺新機(jī)器,并不需要從頭安裝操作系統(tǒng),只要從DockerHub拉取鏡像拿來用就好,安裝系統(tǒng)這個過程變得極其方便。

系統(tǒng)更新的過程實(shí)際上就是根據(jù)Dockerfile從最新的軟件倉庫重新從頭安裝生成docker鏡像的過程,不會出現(xiàn)某些更新遇到文件沖突或者依賴無法處理,需要人為干預(yù)才能完成的問題。

docker存儲驅(qū)動的工作原理

Docker的存儲驅(qū)動官方有介紹其工作原理,這里只是簡單概括一下。Docker使用了層的概念,docker在構(gòu)建鏡像的時候,會逐行執(zhí)行我們的Dockerfile中的每一行,每執(zhí)行一行的時候,docker就會創(chuàng)建出一個新的層來存放新的內(nèi)容。當(dāng)我們執(zhí)行docker pull或者docker push的時候,docker實(shí)際上傳跟下載的是這些層之間的增量。每當(dāng)執(zhí)行docker run,docker就會把這些下載下來的層組合到一起,組合成一個完整的鏡像,然后新建一個讀寫層,所有運(yùn)行過程中的寫入都會被寫入到讀寫層中,而鏡像本身則是保持只讀,不會被更改?!皩印边@個概念具體實(shí)現(xiàn)起來,根據(jù)docker目錄(通常為/var/lib/docker這個目錄)所在的文件系統(tǒng)的不同而不同,具體的實(shí)現(xiàn)在docker中被稱為graph driver,docker自帶的graph driver包括aufs、 overlay、btrfs、***s、devicemapper等。這些graph driver大多使用了寫時復(fù)制的技術(shù),這樣在把各個層組合在一起的過程不需要重新拷貝一份數(shù)據(jù),實(shí)際的拷貝是在寫入的時候發(fā)生的。

由于筆者使用的是btrfs,所以本文就以btrfs為例子來介紹怎么讓系統(tǒng)啟動到docker鏡像上去。btrfs是一個寫時復(fù)制的系統(tǒng),由于docker的鏡像是由一個一個的層疊在一起組成的,docker在使用btrfs的時候,每往上疊一層,docker就會創(chuàng)建一個原來層的快照,然后把新層的內(nèi)容寫到快照里面去。然后docker會在從鏡像創(chuàng)建容器的時候,給鏡像的最頂層做個快照,把這個快照當(dāng)作容器讀寫層來用。

啟動到docker鏡像中去

明白了docker存儲驅(qū)動的工作原理,還需要知道Linux的啟動過程才能達(dá)成我們的目標(biāo)。Linux在啟動的時候,一般會讓啟動器給內(nèi)核裝載一個內(nèi)存盤initramfs,然后內(nèi)核完成簡單的早期初始化以后,就會解壓內(nèi)存盤的內(nèi)容到根目錄/,然后啟動內(nèi)存盤中的init程序(一般為/init),這個init程序會進(jìn)行進(jìn)一步的初始化(比如說加載文件系統(tǒng)的驅(qū)動,對文件系統(tǒng)進(jìn)行fsck等),這一步初始化完成了以后,這個init程序就會根據(jù)內(nèi)核選項(xiàng)中的root、rootflags等內(nèi)容掛載真正的根目錄,然后通過switch_root程序啟動真正根目錄中的init程序,這個init程序則會完成最后的初始化工作,比如掛載fstab、加載圖形界面等等。很多發(fā)行版都提供制作initramfs的工具,比如archlinux的mkinitcpio,這些工具通常都是模塊化的,允許用戶自己添加hook。

讓系統(tǒng)啟動到docker鏡像所需要的知識已經(jīng)完備了。思路也清晰了:通過給initramfs中添加hook,讓initramfs中的init在掛載root之前從docker本地緩存中的鏡像中創(chuàng)建出一個快照作為讀寫層,然后把這個讀寫層當(dāng)作真正的root來掛載。具體操作上,在啟動管理器里面寫啟動項(xiàng)的內(nèi)核選項(xiàng)的時候,root就寫/var/lib/docker所在的分區(qū),而rootflags里面至少要有一項(xiàng)subvol=XXXXX,其中XXXXX是我們打算創(chuàng)建的讀寫層的位置。然后重中之重則是,寫一個hook,這個hook干的事情是:找到想要的docker鏡像對應(yīng)的btrfs子卷,給這個子卷創(chuàng)建一個快照,命名為XXXXX(跟內(nèi)核選項(xiàng)中的名字保持一致)。這樣的話,在Linux把控制權(quán)交給initramfs中的init程序以后,init程序會先去從docker緩存中的子卷創(chuàng)造出XXXXX快照,然后把XXXXX快照當(dāng)作root來掛載以及進(jìn)行接下來的操作。如果讀者跟筆者一樣使用Arch Linux的話,那么所有的這些工作筆者已經(jīng)做了,讀者可以直接拿來用。

筆者的源碼位于GitHub:https://github.com/zasdfgbnm/mkinitcpio-docker-hooks,同時讀者也可以直接從AUR中搜索mkinitcpio-docker-hooks來安裝筆者的hook。下面就來介紹一下這個hook的使用方法。

mkinitcpio-docker-hooks的使用

mkinitcpio-docker-hooks的使用流程大概分為如下幾步:

確保你的/var/lib/docker位于某個btrfs分區(qū)中

準(zhǔn)備一個適合在裸機(jī)上啟動的docker鏡像

然后在這個鏡像中安裝并配置mkinitcpio-docker-hooks

準(zhǔn)備內(nèi)核跟initramfs

準(zhǔn)備top layer的內(nèi)容

設(shè)置啟動管理器

docker鏡像的準(zhǔn)備

要想啟動到docker鏡像中去,首先你得有一個適合在裸機(jī)上啟動的docker鏡像。很多docker鏡像,為了減小鏡像的大小,是不會附帶只有裸機(jī)上才能用到的軟件包(比如dhcpcd)的,所以讀者可能需要在Dockerfile中手動安裝這些軟件包,對于Arch Linux來講,只需要安裝base組就可以了。由于接下來要安裝mkinitcpio-docker-hooks,這里推薦使用一個已經(jīng)內(nèi)置yaourt的鏡像,筆者使用的是自己的archlinux-yaourt鏡像zasdfgbnm/archlinux-yaourt。所以,Dockerfile的開頭看起來是這個樣子的:

FROM zasdfgbnm/archlinux-yaourtUSER rootRUN pacman -Syu --noconfirm base

作為示例,這里就不安裝base之外的其他軟件了,讀者請自己根據(jù)需要安裝其他軟件。

安裝并配置mkinitcpio-docker-hooks

mkinitcpio-docker-hooks的安裝是在docker里面而不是當(dāng)前運(yùn)行在裸機(jī)上的系統(tǒng)中進(jìn)行的。之所以要把這個軟件包安裝在docker鏡像里面,很重要的原因是因?yàn)長inux內(nèi)核不提供ABI的穩(wěn)定性,所以內(nèi)核模塊跟內(nèi)核的版本必須嚴(yán)格對應(yīng),不然模塊是無法加載的。為了保持這種一致性,我們采取的措施是,在docker里面安裝mkinitcpio-docker-hooks,在docker中生成initramfs,并且在啟動的時候用鏡像里面的內(nèi)核啟動,就可以確保內(nèi)核、initramfs中的模塊、啟動到鏡像以后的/lib/modules三者保持一致。安裝過程在Dockerfile中的寫法如下:

RUN sudo -u user yaourt -S --noconfirm mkinitcpio-docker-hooks

安裝完了mkinitcpio-docker-hooks以后還需要配置,配置文在/etc/docker-btrfs.json,初始內(nèi)容如下:

{ "docker_image": "archlinux/base", "docker_tag": "latest"}

我們需要做的就是把這兩個變量的值替換為我們想要的值,比如說這里我打算把我的docker鏡像的名字叫做“sample_image”。同時,我們還需要在/etc/mkinitcpio.conf中添加docker-btrfs這個hook。綜上,可以在Dockerfile中使用如下命令來配置:

RUN sed -i 's/archlinux/base/sample_image/g' /etc/docker-btrfs.jsonRUN perl -i -p -e 's/(?<=^HOOKS=()(.*)(?=()/$1 docker-btrfs/g' /etc/mkinitcpio.conf

??????????????Dockerfile??

FROM zasdfgbnm/archlinux-yaourtUSER rootRUN pacman -Syu --noconfirm baseRUN sudo -u user yaourt -S --noconfirm mkinitcpio-docker-hooksRUN sed -i 's/archlinux/base/sample_image/g' /etc/docker-btrfs.jsonRUN perl -i -p -e 's/(?<=^HOOKS=()(.*)(?=))/$1 docker-btrfs/g' /etc/mkinitcpio.conf

只需要通過docker build . -t sample_image就可以構(gòu)建自己的鏡像了。

準(zhǔn)備內(nèi)核跟initramfs

鏡像生成好了以后,下一步就是準(zhǔn)備內(nèi)核跟構(gòu)建initramfs了。注意這一步操作盡量在你打算用來啟動docker鏡像的機(jī)器上進(jìn)行,因?yàn)閙kinitcpio會自動根據(jù)機(jī)器把相應(yīng)的內(nèi)核模塊放入initramfs中去,如果在別的機(jī)器上進(jìn)行的話,那就可能會有一些驅(qū)動沒有被自動裝入initramfs中。如前所述,這一步的工作是在docker容器中進(jìn)行的。首先運(yùn)行容器并開啟一個shell:

docker run -v $(pwd):/workspace -w /workspace -it sample_image bash

然后在容器中執(zhí)行如下命令:

mkinitcpio -p linuxcp /boot/* .exit

然后就可以在當(dāng)前目錄下看到準(zhǔn)備好的initramfs-linux-fallback.img、initramfs-linux.img以及vmlinuz-linux了。

準(zhǔn)備top layer的內(nèi)容

Top layer是mkinitcpio-docker-hooks引入的新概念,它指的是某個驅(qū)動器中的某個目錄,這個目錄會在啟動的時候讀寫層創(chuàng)建之后,真正的root掛載之前,通過busybox的cp -a命令整個拷貝到讀寫層里面去。為什么需要top layer呢?因?yàn)槲覀冃枰诙嗯_機(jī)器上啟動同一個鏡像,而不同機(jī)器上的往往會根據(jù)需要配置不同的配置文件,比如/etc/fstab以及/etc/X11/xorg.conf。另外,DockerHub免費(fèi)賬戶上的鏡像都是公開的,/etc/passwd、/etc/shadow等的私密性文件也不適合放在鏡像里面存儲。

準(zhǔn)備top layer的內(nèi)容,實(shí)際上就是找一個文件夾,把需要單獨(dú)配置的文件,按照從根目錄算起的相對路徑存放在這個文件夾里面。比如說如果你想給某臺機(jī)器單獨(dú)配置/etc/fstab,那么你就應(yīng)該在top layer的目錄中添加etc/fstab這個文件。這里推薦的具體的操作流程是:首先通過docker run -v $(pwd):/workspace -w /workspace -it sample_image bash進(jìn)入容器中的shell,然后在其中做各種配置,比如useradd ...,完了以后把新生成的配置文件拷貝到top layer的文件夾中去

設(shè)置啟動管理器

設(shè)置好了top layer以后,我們基本上可以算是萬事具備只差東風(fēng)了。我們只需要簡單設(shè)置一下啟動管理器就可以啟動我們的系統(tǒng)了。這里以refind為例子,這里假設(shè)我們的所有東西放在一個label為“l(fā)inux”的btrfs分區(qū)中,docker目錄(也就是你系統(tǒng)啟動以后會掛載到/var/lib/docker的目錄)存放在這個分區(qū)根目錄下的一個叫做“docker”的子卷中,而內(nèi)核、initramfs以及top layer都是位于分區(qū)根目錄下的“boot_docker”文件夾中,而我們希望創(chuàng)建的讀寫層名字叫做“docker_rwlayer”,那么相應(yīng)的refind.conf中的菜單項(xiàng)的代碼如下:

menuentry archlinux-docker { icon EFI/refind/icons/os_arch.png volume linux loader boot_docker/vmlinuz-linux initrd boot_docker/initramfs-linux.img options "root=LABEL=linux rootflags=subvol=docker_rwlayer rw docker_path=docker toplayer=LABEL=linux toplayer_path=boot_docker"}

其中內(nèi)核選項(xiàng)中,我們通過root來指定docker目錄所在的分區(qū),rootflags中的subvol來指定讀寫層的位置,docker_path來指定docker目錄在root中的相對位置;通過toplayer來指定top layer目錄所在的分區(qū),toplayerflags來指定top layer所在分區(qū)的掛載選項(xiàng),toplayer_path來指定top layer的目錄在toplayer分區(qū)中的相對位置。

一切就緒,重啟并享受吧!

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11342

    瀏覽量

    210308
  • 編程語言
    +關(guān)注

    關(guān)注

    10

    文章

    1950

    瀏覽量

    34957
  • Docker
    +關(guān)注

    關(guān)注

    0

    文章

    492

    瀏覽量

    11949

原文標(biāo)題:把docker鏡像當(dāng)作桌面系統(tǒng)來用

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    半導(dǎo)體存儲元器件工作原理

    半導(dǎo)體存儲元器件工作原理
    發(fā)表于 02-05 13:25

    Docker數(shù)據(jù)存儲方式Volumes詳解

    Docker數(shù)據(jù)存儲之Volumes
    發(fā)表于 03-26 11:27

    Docker持久化數(shù)據(jù)存儲方案

    Docker持久化存儲與數(shù)據(jù)共享
    發(fā)表于 03-23 11:17

    存儲器的工作原理

    單片機(jī)內(nèi)部結(jié)構(gòu)分析存儲器的工作原理
    發(fā)表于 02-04 07:46

    存儲器的工作原理

    單片機(jī)內(nèi)部結(jié)構(gòu)分析存儲器的工作原理
    發(fā)表于 02-04 07:51

    MOS存儲單元的工作原理

    方式邊界對齊的數(shù)據(jù)存放方法主存的基本結(jié)構(gòu)和工作過程存儲系統(tǒng)的層次結(jié)構(gòu)半導(dǎo)體存儲器靜態(tài)MOS存儲器 SRAM靜態(tài)MOS存儲單元靜態(tài)MOS
    發(fā)表于 07-28 07:59

    步進(jìn)電機(jī)及驅(qū)動電路工作原理工作方式介紹

    步進(jìn)電機(jī)及驅(qū)動電路工作原理工作方式介紹
    發(fā)表于 05-11 18:00 ?0次下載

    淺析Docker鏡像本地存儲機(jī)制及容器啟動原理

    鏡像各層內(nèi)容及對應(yīng)大小,每層對應(yīng)著 Dockerfile 中的一條指令。Docker 鏡像默認(rèn)存儲在 /var/lib/docker/《storage-driver》中,可通過 DOCKER
    發(fā)表于 10-19 14:17 ?2543次閱讀

    Docker五種存儲驅(qū)動原理詳解

    問題,在Docker 0.7版本中引入了存儲驅(qū)動, 目前,Docker支持AUFS、Btrfs、Device mapper、OverlayFS、ZFS五種
    發(fā)表于 05-13 10:33 ?2727次閱讀
    <b class='flag-5'>Docker</b>五種<b class='flag-5'>存儲</b><b class='flag-5'>驅(qū)動</b>原理詳解

    存儲程序的工作原理是什么

    要想搞清楚存儲程序的工作原理,最好先知道它是存儲在了什么地方,或者說,應(yīng)當(dāng)先搞清楚存儲工作的物質(zhì)基礎(chǔ)是什么。
    發(fā)表于 06-13 15:23 ?7386次閱讀

    無刷電機(jī)的驅(qū)動工作原理

    無刷電機(jī)的驅(qū)動工作原理說明。
    發(fā)表于 02-21 15:22 ?192次下載

    如何遷移docker存儲目錄

    那就準(zhǔn)備遷移 docker存儲目錄吧,或者對 /var 設(shè)備進(jìn)行擴(kuò)容來達(dá)到相同的目的。更多關(guān)于 dockerd 的詳細(xì)參數(shù),請點(diǎn)擊查看 官方文檔 地址。
    的頭像 發(fā)表于 07-03 09:21 ?5166次閱讀

    docker容器刪除后數(shù)據(jù)還在嗎

    的數(shù)據(jù)是否還會保留,這是一個需要深入分析和理解的問題。 本文將詳細(xì)探討Docker容器刪除后數(shù)據(jù)的存儲機(jī)制,從容器使用的存儲驅(qū)動、數(shù)據(jù)卷、掛載以及網(wǎng)絡(luò)等方面進(jìn)行講解,以幫助讀者全面理解
    的頭像 發(fā)表于 11-23 09:32 ?1938次閱讀

    電機(jī)驅(qū)動電路工作原理

    電機(jī)驅(qū)動電路的工作原理 電機(jī)驅(qū)動電路是控制電機(jī)運(yùn)行的核心部分,其工作原理涉及到電機(jī)的運(yùn)行和控制。本文將詳細(xì)介紹電機(jī)驅(qū)動電路的
    的頭像 發(fā)表于 12-13 10:54 ?7466次閱讀

    驅(qū)動器的工作原理

    驅(qū)動器的工作原理 驅(qū)動器,又稱為執(zhí)行器,是將電能、氣能、液壓能等能量轉(zhuǎn)換為機(jī)械能的裝置。驅(qū)動器廣泛應(yīng)用于工業(yè)自動化、機(jī)器人、航空航天、汽車制造等領(lǐng)域。本文將詳細(xì)介紹
    的頭像 發(fā)表于 06-10 16:08 ?2532次閱讀