久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1328|回復(fù): 0
收起左側(cè)

ARM平臺實現(xiàn)Docker容器技術(shù)

[復(fù)制鏈接]
ID:336245 發(fā)表于 2024-3-13 10:57 | 顯示全部樓層 |閱讀模式
什么是Docker?
(1)Docker架構(gòu)

Docker是一個開源的應(yīng)用容器引擎,讓開發(fā)者可打包他們的應(yīng)用以及依賴包到一個可移植的鏡像中,然后發(fā)布到任何流行的Linux或Windows機器上,亦可實現(xiàn)虛擬化。容器是完全使用沙箱機制,相互之間不會有任何接口。使用Docker,可像管理應(yīng)用程序一樣管理基礎(chǔ)結(jié)構(gòu)。通過利用Docker的快速發(fā)布、測試和部署代碼的方法,可顯著減少產(chǎn)品開發(fā)時間。

Docker使用客戶端——服務(wù)器(C/S)體系結(jié)構(gòu)。Docker客戶端與Docker守護進程進行通信,后者執(zhí)行構(gòu)建、運行和分發(fā)Docker容器的繁重工作。Docker客戶端和守護進程可在同一個系統(tǒng)上運行,亦可將Docker客戶端連接至遠(yuǎn)程Docker守護進程。Docker客戶端和守護進程使用REST API、UNIX套接字或網(wǎng)絡(luò)接口進行通信。

1.png
圖1
2Docker的作用
更高效的利用系統(tǒng)資源:Docker對系統(tǒng)資源的利用率更高,無論是應(yīng)用執(zhí)行速度,內(nèi)存損耗或者文件存儲速度,都要比傳統(tǒng)虛擬機技術(shù)更高效。因此,相比虛擬機技術(shù),一個相同配置的主機往往可以運行更多數(shù)量的應(yīng)用。

更快速的啟動時間:傳統(tǒng)的虛擬機技術(shù)啟動應(yīng)用服務(wù)往往需要數(shù)分鐘,而Docker容器應(yīng)用,由于直接運行于宿主內(nèi)核,無需啟動完整的操作系統(tǒng),因此可以做到秒級,甚至毫秒級的啟動時間,極大的節(jié)約了開發(fā)測試,部署的時間。

一致的運行環(huán)境:開發(fā)過程中常見的一個問題是環(huán)境一致問題,由于開發(fā)環(huán)境,測試環(huán)境,生產(chǎn)環(huán)境不一致,導(dǎo)致有些bug并未在開發(fā)過程中發(fā)現(xiàn)。而Docker的鏡像提供了除內(nèi)核外完整的運行時環(huán)境,確保環(huán)境一致性,從而不會在出現(xiàn)“這段代碼在我機器上沒問題”這類問題。

持續(xù)支付和部署:對開發(fā)和運維人員來說,最希望就是一次創(chuàng)建和部署,可以在任意的地方運行。(定制應(yīng)用鏡像來實現(xiàn)集成、持續(xù)支付、部署。開發(fā)人員可以通過dockerfile來進行鏡像構(gòu)建,并結(jié)合持續(xù)集成系統(tǒng)進行集成測試,而運維人員則可直接在生產(chǎn)環(huán)境中快速部署該鏡像,甚至結(jié)合持續(xù)部署系統(tǒng)進行自動部署)。而且使用dockerfile使鏡像構(gòu)建透明化,不僅僅開發(fā)團隊可理解應(yīng)用運行環(huán)境,也方便運維團隊理解應(yīng)用運行所需條件,幫助更好的生產(chǎn)環(huán)境中部署該鏡像。

更輕松的遷移:由于Docker確保了執(zhí)行環(huán)境的一致性,使得應(yīng)用的遷移更加的容易。Docker可在很多平臺上運行,無論是物理機、虛擬機、公有云、私有云、甚至是筆記本、其運行結(jié)果是一致的。因此用戶可很輕易的將在一個平臺上運行的應(yīng)用,遷移到另一個平臺上,而不用擔(dān)心運行環(huán)境的變化導(dǎo)致應(yīng)用無法正常運行的情況。

更輕松的維護和拓展:Docker使用的分層存儲以及鏡像的技術(shù),使得應(yīng)用重復(fù)部分的復(fù)用更為容易,也使得應(yīng)用的維護更新更加簡單,基于基礎(chǔ)鏡像進一步擴展鏡像也變得十分簡單。此外,Docker團隊同各個開源項目團隊一起維護了一大批高質(zhì)量的官網(wǎng)鏡像,既可直接在生產(chǎn)環(huán)境使用,又可作為基礎(chǔ)進一步定制,大大的降低了應(yīng)用服務(wù)的鏡像制作成本。

Docker容器技術(shù)應(yīng)用場景
Docker的應(yīng)用場景十分廣泛,涵蓋工業(yè)網(wǎng)關(guān)、儲能EMS、通訊管理機、電力RTU、電力錄波器、汽車充電樁等領(lǐng)域。而由創(chuàng)龍科技推出的雙核Cortex-A7@1.2GHz含稅79元超強性價比全志T113-i工業(yè)核心板在支持Docker后,其性價比還將進一步提升!

2.jpg
圖2
基于T113-i平臺實現(xiàn)Docker容器技術(shù)
如下為基于全志T113-i工業(yè)平臺,演示Docker安裝、構(gòu)建鏡像以及下載鏡像并運行容器的方法。

1 Docker安裝1.1 安裝方法
(1)安裝依賴包
打開Ubuntu,確保Ubuntu可正常訪問互聯(lián)網(wǎng),執(zhí)行如下命令安裝Docker依賴包。
Host#sudo apt-get update
3.png
圖3

Host#sudo apt-get install ca-certificates curl gnupg lsb-release
4.png
圖4
(2)添加Docker官方GPG密鑰

Host#sudo mkdir -m 0755 -p /etc/apt/keyrings
Host#curl -fsSL dockercomdownloaddockercom/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

5.png
圖5
(3)設(shè)置Docker Stable存儲庫

Host#echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] dockercomdownloaddockercom/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
6.png
圖6
(4)安裝Docker
Host#sudo apt-get updateHost#sudo apt-get install docker-ce docker-ce-cli containerd.io
7.png
圖7
8.png
圖8
(5)驗證Docker

執(zhí)行如下命令,通過運行Docker自帶的hello-world鏡像來驗證是否已安裝成功。程序運行后,輸出如下內(nèi)容則表示Docker安裝成功。

Host#sudo docker run hello-world
9.png
圖9
更多參考信息,請查閱官方手冊:dockercomdocsdockercom/engine/install/ubuntu

1.2 搭建本地鏡像倉庫

Docker用Registry來保存用戶構(gòu)建的鏡像。Registry分為公共和私有兩種。Docker公司運營的公共Registry叫做Docker Hub,用戶可在Docker Hub注冊賬號,分享并保存自己的鏡像。Docker公司的公共鏡像倉庫(dockercomhubdockercom)提供了龐大的鏡像集合供用戶使用。一個Docker Registry中可包含多個倉庫,每個倉庫可包含多個標(biāo)簽(Tag),每個標(biāo)簽對應(yīng)一個鏡像。通常,一個倉庫會包含同一個軟件不同版本的鏡像,而標(biāo)簽對應(yīng)該軟件的各個版本。用戶可通過“[<倉庫名>:<標(biāo)簽>]”的格式來指定具體是某個軟件某個版本的鏡像。如未給出標(biāo)簽,將以[latest]作為默認(rèn)標(biāo)簽。本次使用的鏡像是registry:2,請執(zhí)行如下命令自動下載并啟動。
Host#mkdir -p /home/tronlong/docker/myregistryHost#sudo docker run -d -p 5000:5000 -v /home/tronlong/docker/myregistry:/var/lib/registry registry:2
參數(shù)說明:-d:后臺啟動容器。-p:將容器的5000端口映射至Ubuntu的5000端口(5000是registry服務(wù)端口)。-v:將容器"/var/lib/registry"目錄映射至Ubuntu的"/home/tronlong/docker/myregistry",用于存放鏡像數(shù)據(jù)。


10.png


圖10
請執(zhí)行如下命令,查看容器是否已啟動,出現(xiàn)如下內(nèi)容說明容器已正常啟動。

Host#sudo docker ps
11.png

圖11
請通過瀏覽器訪問"http://192.168.10.101:5000/v2/_catalog",若返回如下內(nèi)容則說明registry已經(jīng)成功啟動,192.168.10.101為Ubuntu的IP。

12.png
圖12

因為Docker剛建立運行,所以里面無任何鏡像內(nèi)容。至此,Docker環(huán)境安裝完成。

2 構(gòu)建鏡像

請在Ubuntu上新建工作目錄"/home/tronlong/docker/dockerfile/",并將產(chǎn)品資料“4-軟件資料\Linux\Filesystem\docker\”目錄下的文件系統(tǒng)壓縮包和產(chǎn)品資料“4-軟件資料\Demo\base-demos\led_flash\bin\”目錄下的可執(zhí)行文件拷貝至Ubuntu共享目錄下,再執(zhí)行如下命令拷貝至Docker工作目錄。

Host#mkdir /home/tronlong/docker/dockerfile
Host#cp /mnt/hgfs/SharedFolders/led_flash /home/tronlong/docker/dockerfile/
Host#cp /mnt/hgfs/SharedFolders/rootfs.tar /home/tronlong/docker/dockerfile/

13.png
圖13

在"/home/tronlong/docker/dockerfile/"目錄下,創(chuàng)建Dockerfile文件,并編寫如下內(nèi)容。

Host#cd /home/tronlong/docker/dockerfile
Host#gedit Dockerfile

14.png
圖14
15.png
圖15
Dockerfile文件內(nèi)容如下:

FROM scratch #基于空的基礎(chǔ)鏡像構(gòu)建新的鏡像
# Set work directory
WORKDIR /root #為CMD、COPY和AND設(shè)置工作目錄
# Decompress the file system
ADD rootfs.tar / #解壓文件系統(tǒng)
# Copy file to image
COPY led_flash . #拷貝可執(zhí)行文件至鏡像的"/home/root/"目錄下
# Shell command executed when the container is started
# CMD ["executable","param1","param2"]
CMD ["./led_flash", "-n 1"] #容器啟動時執(zhí)行的shell命令,此處為執(zhí)行LED閃爍程序的命令
在Dockerfile文件所在的目錄下執(zhí)行如下命令,進行構(gòu)建鏡像。

Host#sudo docker build -t 192.168.10.101:5000/led_flash:v1.0 .//注意命令最后含有"."
Host#sudo docker images //查看已構(gòu)建的鏡像

參數(shù)說明:
192.168.10.101:Ubuntu的IP地址;
-t:指定鏡像的名字及標(biāo)簽(name:tag)。
16.png
圖16
請執(zhí)行如下命令,將鏡像推送至本地倉庫Registry。

Host#sudo docker push 192.168.10.101:5000/led_flash:v1.0
17.png
圖17

Docker版本從1.3.X之后,與Docker Registry交互默認(rèn)使用https,然而前面搭建的私有倉庫僅提供http服務(wù),因此當(dāng)與私有倉庫交互時將出現(xiàn)上面的錯誤提示。可通過修改"/etc/docker/daemon.json"文件來解決該問題,請執(zhí)行如下命令,192.168.10.101為Ubuntu的IP。

Host#sudovi /etc/docker/daemon.json
18.png
圖18
請在daemon.json中添加如下配置內(nèi)容:{"insecure-registries": ["192.168.10.101:5000"]}執(zhí)行如下命令,重新啟動Docker、Registry容器(通過指定ID),并重新推送鏡像至本地Registry。
Host#sudo /etc/init.d/docker restartHost#sudo docker ps -aHost#sudo docker start 0833de1304d9//以查詢得到的CONTAINER ID號為準(zhǔn)Host#sudo docker push 192.168.10.101:5000/led_flash:v1.0
19.png
圖19
通過瀏覽器訪問"http://192.168.10.101:5000/v2/_catalog",即可看到當(dāng)前倉庫里已有的鏡像。

20.png
圖20
3 下載鏡像并運行容器

(1)請使用網(wǎng)線將創(chuàng)龍科技T113-i評估板ETH0(RGMII)網(wǎng)口連接至路由器,并確保和Ubuntu處于同一網(wǎng)絡(luò)下,評估板上電啟動,執(zhí)行如下命令下載鏡像并列舉出下載后的鏡像。下載鏡像過程中將會打印警告和錯誤信息,不影響功能正常使用,請忽略。

Target#docker pull 192.168.10.101:5000/led_flash:v1.0 //下載鏡像
Target#docker images //列舉已下載的鏡像

21.png
圖21
若出現(xiàn)如下錯誤,請執(zhí)行如下命令,通過修改"/etc/docker/daemon.json"文件來解決此問題,修改保存后,重新啟動dockerd守護進程。

22.png
圖22

Target#vi /etc/docker/daemon.json
23.png
圖23
請在daemon.json中添加如下配置內(nèi)容:{"insecure-registries": ["192.168.10.101:5000"]}Target#/etc/init.d/S60dockerd restart 24.png
圖24
(2)創(chuàng)建并啟動容器。由于Docker使用VFS存儲驅(qū)動程序,當(dāng)創(chuàng)建容器時,需要先創(chuàng)建容器層,該容器層需要對上一層進行“深拷貝”,因此完成創(chuàng)建并啟動容器整個過程需要耗時約1min,請耐心等待。
Target#docker run -d --name led_flash -v /sys/:/sys 2d17af57ec7e
參數(shù)說明:-d:后臺運行容器;--name:為容器指定一個名稱;-v:映射卷(將主機的目錄"/sys"映射至容器的"/sys");2d17af57ec7e:鏡像ID,以docker images命令列舉的"IMAGE ID"為準(zhǔn)。

25.png
圖25

容器啟動完成后,評估底板的用戶可編程指示燈閃爍。

(3)容器的基本操作

執(zhí)行如下命令,查看正在運行的容器并進入容器。

Target#docker ps -a
Target#docker exec -it 2d7c23bd13c0 /bin/bash

參數(shù)說明:
-i:以交互模式運行容器,通常與-t同時使用;
-t:為容器重新分配一個偽輸入終端,通常與-i同時使用;
2d7c23bd13c0:容器ID,以實際"CONTAINER ID"為準(zhǔn);
/bin/bash:在容器內(nèi)執(zhí)行"/bin/bash"命令。
26.png
圖26

執(zhí)行如下命令,退出容器。

Bash#exit
27.png
圖27
執(zhí)行如下命令,停止容器。此時,評估底板的用戶可編程指示燈不再閃爍。

Target#docker stop 2d7c23bd13c0
28.png
圖28
執(zhí)行如下命令,啟動容器。此時,評估底板的用戶可編程指示燈閃爍。

Target#docker start 2d7c23bd13c0

29.png
圖29
備注:若運行Docker時,出現(xiàn)"x509: certificate signed by unknown authority"類似警告信息(如下圖),可通過修改/etc/docker/daemon.json文件解決。該警告是由于本機沒有遠(yuǎn)程倉庫的證書文件導(dǎo)致。

30.png
圖30

修改內(nèi)容:
{
"registry-mirrors": ["dockercomregistry-1dockerio"],
"insecure-registries": ["dockercomregistry-1dockerio"]
}

31.png
圖31
修改完成后,重新運行Docker。



回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 伊人网伊人网 | 日韩一级黄色片 | 欧美日韩久久久久 | 天天拍天天操 | 国产精品片aa在线观看 | 亚洲人a | 中文字幕人成乱码在线观看 | 男女av| 午夜男人视频 | 一级黄色片免费在线观看 | 男女激情网站免费 | 成人精品免费 | 亚洲国产精品久久久久秋霞不卡 | 天天爱天天操 | 亚洲第1页| 91精品国产乱码麻豆白嫩 | 91色视频在线 | 久久蜜桃av一区二区天堂 | 国产一区二区三区视频在线观看 | 亚洲 精品 综合 精品 自拍 | 秋霞电影一区二区三区 | 久久久不卡网国产精品一区 | 美女逼网站 | 久久久高清 | 国产亚洲欧美在线视频 | 少妇一级淫片免费放播放 | 欧洲精品在线观看 | 偷拍自拍网址 | 国产精品日产欧美久久久久 | 亚洲视频在线一区 | 国产伦一区二区三区视频 | 欧美精品一区二区三区在线播放 | 国产日韩精品一区二区三区 | 搞黄网站在线观看 | 国产精品毛片久久久久久 | 一区二区三区国产 | 无码一区二区三区视频 | 91夜色在线观看 | 国产成人精品久久二区二区91 | 久久一二| 国产一区二区电影 |