前 言
本指導(dǎo)文檔適用開發(fā)環(huán)境:
Windows開發(fā)環(huán)境:Windows 7 64bit、Windows 10 64bit
Linux開發(fā)環(huán)境:VMware16.2.5、Ubuntu20.04.6 64bit
U-Boot:U-Boot-2017.09
Kernel:Linux-5.10.160
Debian:Debian11
LinuxSDK:LinuxSDK-[版本號(hào)](基于rk3588_linux_release_v1.2.1_20230720)
Docker是一個(gè)開源的應(yīng)用容器引擎,讓開發(fā)者可打包他們的應(yīng)用以及依賴包至一個(gè)可移植的鏡像中,然后發(fā)布至任何流行的Linux或Windows機(jī)器上,亦可實(shí)現(xiàn)虛擬化。容器是完全使用沙箱機(jī)制,相互之間不會(huì)有任何接口。使用Docker,可像管理應(yīng)用程序一樣管理基礎(chǔ)結(jié)構(gòu)。通過利用Docker的快速發(fā)布、測(cè)試和部署代碼的方法,可顯著減少產(chǎn)品開發(fā)時(shí)間。
Docker架構(gòu)
Docker使用客戶端——服務(wù)器(C/S)體系結(jié)構(gòu)。Docker客戶端與Docker守護(hù)進(jìn)程進(jìn)行通信,后者執(zhí)行構(gòu)建、運(yùn)行和分發(fā)Docker容器的繁重工作。Docker客戶端和守護(hù)進(jìn)程可在同一個(gè)系統(tǒng)上運(yùn)行,亦可將Docker客戶端連接至遠(yuǎn)程Docker守護(hù)進(jìn)程。Docker客戶端和守護(hù)進(jìn)程使用REST API、UNIX套接字或網(wǎng)絡(luò)接口進(jìn)行通信。
圖 1
更多詳情請(qǐng)可參考Docker官網(wǎng)鏈接:https://docs.docker.com/get-started/overview。
Docker安裝
安裝方法
(1)安裝依賴包
打開Ubuntu,確保Ubuntu可正常訪問互聯(lián)網(wǎng),執(zhí)行如下命令進(jìn)行安裝Docker依賴包。
Host# sudo apt-get update
圖 2
Host# sudo apt-get install ca-certificates curl gnupg lsb-release
圖 3
(2)添加Docker官方GPG密鑰
Host# sudo mkdir -m 0755 -p /etc/apt/keyrings
Host# curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
圖 4
(3)設(shè)置Docker Stable存儲(chǔ)庫
Host# echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
圖 5
(4)安裝Docker
Host# sudo apt-get update
Host# sudo apt-get install docker-ce docker-ce-cli containerd.io
圖 6
圖 7
(5)驗(yàn)證Docker
執(zhí)行如下命令,通過運(yùn)行Docker自帶的hello-world鏡像來驗(yàn)證是否已安裝成功。程序運(yùn)行后,輸出如下內(nèi)容則表示Docker安裝成功。
Host# sudo docker run hello-world
圖 8
更多參考信息,請(qǐng)查閱官方手冊(cè):https://docs.docker.com/engine/install/ubuntu。
搭建本地鏡像倉庫
Docker用Registry來保存用戶構(gòu)建的鏡像。Registry分為公共和私有兩種。Docker公司運(yùn)營(yíng)的公共Registry叫做Docker Hub,用戶可在Docker Hub注冊(cè)賬號(hào),分享并保存自己的鏡像。Docker公司的公共鏡像倉庫(https://hub.docker.com)提供了龐大的鏡像集合供用戶使用。一個(gè)Docker Registry中可包含多個(gè)倉庫,每個(gè)倉庫可包含多個(gè)標(biāo)簽(Tag),每個(gè)標(biāo)簽對(duì)應(yīng)一個(gè)鏡像。通常,一個(gè)倉庫會(huì)包含同一個(gè)軟件不同版本的鏡像,而標(biāo)簽對(duì)應(yīng)該軟件的各個(gè)版本。用戶可通過“[<倉庫名>:<標(biāo)簽>]”的格式來指定具體是某個(gè)軟件某個(gè)版本的鏡像。如未給出標(biāo)簽,將以[latest]作為默認(rèn)標(biāo)簽。
本次使用的鏡像是registry:2,請(qǐng)執(zhí)行如下命令自動(dòng)下載并啟動(dòng)。
Host# mkdir -p /home/tronlong/docker/myregistry
Host# sudo docker run -d -p 5000:5000 -v /home/tronlong/docker/myregistry:/var/lib/registry registry:2
參數(shù)說明:
-d:后臺(tái)啟動(dòng)容器。
-p:將容器的5000端口映射至Ubuntu的5000端口(5000是registry服務(wù)端口)。
-v:將容器"/var/lib/registry"目錄映射至Ubuntu的"/home/tronlong/docker/myregistry",用于存放鏡像數(shù)據(jù)。
圖 9
請(qǐng)執(zhí)行如下命令,查看容器是否已啟動(dòng),出現(xiàn)如下內(nèi)容說明容器已正常啟動(dòng)。
Host# sudo docker ps
圖 10
請(qǐng)通過瀏覽器訪問"http://192.168.13.51:5000/v2/_catalog",如返回如下內(nèi)容則說明registry已經(jīng)成功啟動(dòng),192.168.13.51為Ubuntu的IP。
圖 11
因?yàn)镈ocker剛建立運(yùn)行,所以里面無任何鏡像內(nèi)容。至此,Docker環(huán)境安裝完成。
構(gòu)建鏡像
構(gòu)建單個(gè)鏡像
請(qǐng)?jiān)赨buntu上新建工作目錄"/home/tronlong/docker/dockerfile/",并將產(chǎn)品資料“4-軟件資料DebianFilesystemdocker”目錄下的文件系統(tǒng)壓縮包和產(chǎn)品資料“4-軟件資料Demobase-demosled_flashbin”目錄下的可執(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-v1.1-gc740ad9.tar/home/tronlong/docker/dockerfile/
圖 12
在"/home/tronlong/docker/dockerfile/"目錄下,創(chuàng)建Dockerfile文件,并編寫如下內(nèi)容。
Host# cd /home/tronlong/docker/dockerfile
Host# gedit Dockerfile
圖 13
圖 14
Dockerfile文件內(nèi)容如下:
FROM scratch #基于空的基礎(chǔ)鏡像構(gòu)建新的鏡像
# Set work directory
WORKDIR /root #為CMD、COPY和AND設(shè)置工作目錄
# Decompress the file system
ADD rootfs-v1.1-gc740ad9.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 2"] #容器啟動(dòng)時(shí)執(zhí)行的shell命令,此處為執(zhí)行LED閃爍程序的命令
在Dockerfile文件所在的目錄下執(zhí)行如下命令,進(jìn)行構(gòu)建鏡像。
Host# sudo docker build -t 192.168.13.51:5000/led_flash:v1.0 . //注意命令最后含有"."
Host# sudo docker images //查看已構(gòu)建的鏡像
參數(shù)說明:
192.168.13.51:Ubuntu的IP地址;
-t:指定鏡像的名字及標(biāo)簽(name:tag)。
圖 15
請(qǐng)執(zhí)行如下命令,將鏡像推送至本地倉庫Registry。
Host# sudo docker push 192.168.13.51:5000/led_flash:v1.0
圖 16
Docker版本從1.3.X之后,與Docker Registry交互默認(rèn)使用https。由于前面搭建的私有倉庫僅提供http服務(wù),因此當(dāng)與私有倉庫交互時(shí)將出現(xiàn)上面的錯(cuò)誤提示??赏ㄟ^修改"/etc/docker/daemon.json"文件來解決該問題,請(qǐng)執(zhí)行如下命令,192.168.13.51為Ubuntu的IP。
Host# sudovi/etc/docker/daemon.json
圖 17
圖 18
請(qǐng)?jiān)赿aemon.json中添加如下配置內(nèi)容:
{
"insecure-registries": ["192.168.13.51:5000"]
}
執(zhí)行如下命令,重新啟動(dòng)Docker、Registry容器(通過指定ID),并重新推送鏡像至本地Registry。
Host# sudo /etc/init.d/docker restart
Host# sudo docker ps -a
Host# sudo docker start 6d50923c01bd //以查詢得到的CONTAINER ID號(hào)為準(zhǔn)
Host# sudo docker push 192.168.13.51:5000/led_flash:v1.0
圖 19
通過瀏覽器訪問"http://192.168.13.51:5000/v2/_catalog",即可看到當(dāng)前倉庫里已有的鏡像。
圖 20
構(gòu)建多個(gè)鏡像
請(qǐng)先參考“構(gòu)建單個(gè)鏡像”小節(jié)完成單個(gè)鏡像led_flash的構(gòu)建。將產(chǎn)品資料“4-軟件資料DebianFilesystemdocker”目錄下的所有腳本文件拷貝至Ubuntu共享目錄下,再執(zhí)行如下命令拷貝至Docker工作目錄。
Host# cp /mnt/hgfs/SharedFolders/docker_container_1_echo.sh /home/tronlong/docker/dockerfile/
Host# cp /mnt/hgfs/SharedFolders/docker_container_2_echo.sh/home/tronlong/docker/dockerfile/
Host# cp /mnt/hgfs/SharedFolders/docker_container_3_echo.sh /home/tronlong/docker/dockerfile/
圖 21
圖 22
在"/home/tronlong/docker/dockerfile/"目錄下,修改Dockerfile文件。
Host# cd /home/tronlong/docker/dockerfile
Host# gedit Dockerfile
圖 23
圖 24
修改內(nèi)容如下:
COPY docker_container_1_echo.sh . #拷貝腳本文件至鏡像的"/home/root/"目錄下
# CMD ["./led_flash", "-n 2"] #添加注釋符"#"
在Dockerfile文件所在的目錄下執(zhí)行如下命令,進(jìn)行構(gòu)建鏡像。
Host# sudo docker build -t 192.168.13.51:5000/docker_container_1_echo.sh:v1.0 . //注意命令最后含有"."
Host# sudo docker images //查看已構(gòu)建的鏡像
參數(shù)說明:
192.168.13.51:Ubuntu的IP地址;
-t:指定鏡像的名字及標(biāo)簽(name:tag)。
圖 25
請(qǐng)執(zhí)行如下命令,將鏡像推送至本地倉庫Registry。
Host# sudo docker push 192.168.13.51:5000/docker_container_1_echo.sh:v1.0
備注:由于構(gòu)建Docker鏡像使用的是同一個(gè)文件系統(tǒng),相同的內(nèi)容將會(huì)重疊,因此將會(huì)繼承第一個(gè)led_flash鏡像已經(jīng)上傳的內(nèi)容(文件系統(tǒng))。
圖 26
通過瀏覽器訪問"http://192.168.13.51:5000/v2/_catalog",即可看到當(dāng)前倉庫里已有的鏡像。
圖 27
"docker_container_2_echo.sh"、"docker_container_3_echo.sh"文件參考以上類似步驟構(gòu)建鏡像。
重新通過瀏覽器訪問"http://192.168.13.51:5000/v2/_catalog",即可看到當(dāng)前倉庫里已有多個(gè)鏡像。
圖 28
審核編輯 黃宇
?
-
開發(fā)板
+關(guān)注
關(guān)注
26文章
6433瀏覽量
121207 -
RK3588
+關(guān)注
關(guān)注
8文章
592瀏覽量
7591
發(fā)布評(píng)論請(qǐng)先 登錄
創(chuàng)龍 瑞芯微 RK3588 國(guó)產(chǎn)2.4GHz八核 工業(yè)開發(fā)板—ROS2系統(tǒng)使用說明
創(chuàng)龍 瑞芯微 RK3588 國(guó)產(chǎn)2.4GHz八核 工業(yè)開發(fā)板—ISP圖像處理開發(fā)案例
創(chuàng)龍 瑞芯微 RK3588 國(guó)產(chǎn)2.4GHz八核 工業(yè)開發(fā)板—視頻圖像處理框架
創(chuàng)龍 瑞芯微 RK3588 國(guó)產(chǎn)2.4GHz八核 工業(yè)開發(fā)板—物聯(lián)網(wǎng)模塊開發(fā)案例
創(chuàng)龍 瑞芯微 RK3588 國(guó)產(chǎn)2.4GHz八核 工業(yè)開發(fā)板—調(diào)試工具安裝
迅為RK3588開發(fā)板Linux安卓麒麟瑞芯微國(guó)產(chǎn)工業(yè)AI人工智能
創(chuàng)龍 瑞芯微 RK3562 國(guó)產(chǎn) 2GHz 四核A53 工業(yè)開發(fā)板—IRIG-B碼對(duì)時(shí)案例
創(chuàng)龍 瑞芯微 RK3562 國(guó)產(chǎn) 2GHz 四核A53 工業(yè)開發(fā)板—Docker容器部署方法說明
創(chuàng)龍瑞芯微 RK3562 國(guó)產(chǎn) 2GHz 四核A53 工業(yè)開發(fā)板—調(diào)試工具安裝
干貨分享 | RK3588 Ubuntu系統(tǒng)Docker容器使用指南
全國(guó)產(chǎn)!瑞芯微 RK3576 ARM 八核 2.2GHz 工業(yè)開發(fā)板—LVGL應(yīng)用開發(fā)案例
創(chuàng)龍 瑞芯微 RK3588 國(guó)產(chǎn)2.4GHz八核 工業(yè)開發(fā)板—Docker容器部署方法說明
評(píng)論