前 言
本指導(dǎo)文檔適用開(kāi)發(fā)環(huán)境:
Windows開(kāi)發(fā)環(huán)境:Windows 7 64bit、Windows 10 64bit
虛擬機(jī):VMware16.2.5
開(kāi)發(fā)環(huán)境:Ubuntu20.04.6 64bit
U-Boot:U-Boot-2017.09
Kernel:Linux-5.10.209
LinuxSDK:rk3562-buildroot-2021.11-sdk-[版本號(hào)](基于rk3562_linux_release_v1.2.0_20240620)
Docker是一個(gè)開(kāi)源的應(yīng)用容器引擎,讓開(kāi)發(fā)者可打包他們的應(yīng)用以及依賴(lài)包至一個(gè)可移植的鏡像中,然后發(fā)布至任何流行的Linux或Windows機(jī)器上,亦可實(shí)現(xiàn)虛擬化。容器是完全使用沙箱機(jī)制,相互之間不會(huì)有任何接口。使用Docker,可像管理應(yīng)用程序一樣管理基礎(chǔ)結(jié)構(gòu)。通過(guò)利用Docker的快速發(fā)布、測(cè)試和部署代碼的方法,可顯著減少產(chǎn)品開(kāi)發(fā)時(shí)間。
開(kāi)發(fā)板簡(jiǎn)介
創(chuàng)龍科技 TL3562-EVM-B 是一款基于瑞芯微 RK3562J/RK3562 處理器設(shè)計(jì)的四核 ARMCortex-A53 +單核 ARM Cortex-M0 國(guó)產(chǎn)工業(yè)評(píng)估板,主頻高達(dá) 2.0GHz。評(píng)估板由核心板和評(píng)估底板組成,核心板 CPU、ROM、RAM、電源、晶振、連接器等所有元器件均采用國(guó)產(chǎn)工業(yè)級(jí)方案,國(guó)產(chǎn)化率 100%。評(píng)估底板大部分元器件亦采用國(guó)產(chǎn)工業(yè)級(jí)方案,國(guó)產(chǎn)化率約 99%(按元器件數(shù)量占比,數(shù)據(jù)僅供參考)。核心板經(jīng)過(guò)專(zhuān)業(yè)的PCBLayout 和高低溫測(cè)試驗(yàn)證,質(zhì)量穩(wěn)定可靠,可滿(mǎn)足各種工業(yè)應(yīng)用環(huán)境要求。
評(píng)估板硬件資源圖解1
評(píng)估板硬件資源圖解2
Docker架構(gòu)
Docker使用客戶(hù)端——服務(wù)器(C/S)體系結(jié)構(gòu)。Docker客戶(hù)端與Docker守護(hù)進(jìn)程進(jìn)行通信,后者執(zhí)行構(gòu)建、運(yùn)行和分發(fā)Docker容器的繁重工作。Docker客戶(hù)端和守護(hù)進(jìn)程可在同一個(gè)系統(tǒng)上運(yùn)行,亦可將Docker客戶(hù)端連接至遠(yuǎn)程Docker守護(hù)進(jìn)程。Docker客戶(hù)端和守護(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安裝
安裝方法
安裝依賴(lài)包
打開(kāi)Ubuntu,確保Ubuntu可正常訪(fǎng)問(wèn)互聯(lián)網(wǎng),執(zhí)行如下命令進(jìn)行安裝Docker依賴(lài)包。
Host# sudo apt-get update
圖 2
Host# sudo apt-get install
ca-certificates
curl
gnupg
lsb-release
圖 3
創(chuàng)建目錄,添加Docker官方GPG密鑰
Host# sudo mkdir -m 0755 -p /etc/apt/keyrings
Host# curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
圖 4
設(shè)置Docker Stable存儲(chǔ)庫(kù)
Host# echo
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] http://mirrors.aliyun.com/docker-ce/linux/ubuntu
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
圖 5
安裝Docker
Host# sudo apt-get update
Host# sudo apt-get install docker-ce docker-ce-cli containerd.io
圖 6
圖 7
更多參考信息,請(qǐng)查閱官方手冊(cè):https://docs.docker.com/engine/install/ubuntu。
搭建本地鏡像倉(cāng)庫(kù)
Docker用Registry來(lái)保存用戶(hù)構(gòu)建的鏡像。Registry分為公共和私有兩種。Docker公司運(yùn)營(yíng)的公共Registry叫做Docker Hub,用戶(hù)可在Docker Hub注冊(cè)賬號(hào),分享并保存自己的鏡像。Docker公司的公共鏡像倉(cāng)庫(kù)(https://hub.docker.com)提供了龐大的鏡像集合供用戶(hù)使用。一個(gè)Docker Registry中可包含多個(gè)倉(cāng)庫(kù),每個(gè)倉(cāng)庫(kù)可包含多個(gè)標(biāo)簽(Tag),每個(gè)標(biāo)簽對(duì)應(yīng)一個(gè)鏡像。通常,一個(gè)倉(cāng)庫(kù)會(huì)包含同一個(gè)軟件不同版本的鏡像,而標(biāo)簽對(duì)應(yīng)該軟件的各個(gè)版本。用戶(hù)可通過(guò)“[<倉(cāng)庫(kù)名>:<標(biāo)簽>]”的格式來(lái)指定具體是某個(gè)軟件某個(gè)版本的鏡像。如未給出標(biāo)簽,將以[latest]作為默認(rèn)標(biāo)簽。
由于現(xiàn)階段無(wú)法從官方獲取Docker鏡像,因此需使用一個(gè)完整的Docker鏡像進(jìn)行離線(xiàn)部署。請(qǐng)按照如下步驟移植Registry鏡像并加載Docker鏡像到本地倉(cāng)庫(kù)。
執(zhí)行如下命令,創(chuàng)建Docker工作目錄后,將產(chǎn)品資料“4-軟件資料LinuxFilesystemdocker”目錄下registry_image.tar文件拷貝至該目錄,然后導(dǎo)入Registry鏡像并查看該鏡像。
Host# mkdir -p /home/tronlong/docker
Host# sudo docker load -i /home/tronlong/docker/registry_image.tar
Host# sudodocker images
圖 8
本次使用的鏡像是registry:2,請(qǐng)執(zhí)行如下命令啟動(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ù)說(shuō)明:
-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)容說(shuō)明容器已正常啟動(dòng)。
Host# sudo docker ps
圖 10
請(qǐng)通過(guò)瀏覽器訪(fǎng)問(wèn)"http://192.168.13.71:5000/v2/_catalog",若返回如下內(nèi)容則說(shuō)明registry已經(jīng)成功啟動(dòng),192.168.13.71為Ubuntu的IP。
圖 11
因?yàn)镈ocker剛建立運(yùn)行,所以里面無(wú)任何鏡像內(nèi)容。至此,Docker環(huán)境安裝完成。
構(gòu)建鏡像
構(gòu)建單個(gè)鏡像
請(qǐng)?jiān)赨buntu上新建工作目錄"/home/tronlong/docker/dockerfile/",并將產(chǎn)品資料“4-軟件資料LinuxFilesystemdocker”目錄下的文件系統(tǒng)壓縮包和產(chǎn)品資料“4-軟件資料Demobase-demosled_flashbin”目錄下的可執(zhí)行文件拷貝至Ubuntu共享目錄下,再執(zhí)行如下命令拷貝至Docker工作目錄。
Host# mkdir /home/tronlong/docker/dockerfile
Host# cp /mnt/hgfs/ShareFolder/rootfs-v1.0-ga752851.tar /home/tronlong/docker/dockerfile/
Host# cp /mnt/hgfs/ShareFolder/led_flash /home/tronlong/docker/dockerfile/
圖 12
在"/home/tronlong/docker/dockerfile/"目錄下,創(chuàng)建Dockerfile文件,并編寫(xiě)如下內(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.0-ga752851.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.71:5000/led_flash:v1.0 . //注意命令最后含有"."
Host# sudo docker images //查看已構(gòu)建的鏡像
參數(shù)說(shuō)明:
192.168.13.71:Ubuntu的IP地址;
-t:指定鏡像的名字及標(biāo)簽(name:tag)。
圖 15
請(qǐng)執(zhí)行如下命令,將鏡像推送至本地倉(cāng)庫(kù)Registry。
Host# sudo docker push 192.168.13.71:5000/led_flash:v1.0
圖 16
Docker版本從1.3.X之后,與Docker Registry交互默認(rèn)使用https。由于前面搭建的私有倉(cāng)庫(kù)僅提供http服務(wù),因此當(dāng)與私有倉(cāng)庫(kù)交互時(shí)將出現(xiàn)上面的錯(cuò)誤提示。可通過(guò)修改"/etc/docker/daemon.json"文件來(lái)解決該問(wèn)題,請(qǐng)執(zhí)行如下命令,192.168.13.71為Ubuntu的IP。
Host# sudovi/etc/docker/daemon.json
圖 17
圖 18
請(qǐng)?jiān)赿aemon.json中添加如下配置內(nèi)容:
{
"insecure-registries": ["192.168.13.71:5000"]
}
執(zhí)行如下命令,重新啟動(dòng)Docker、Registry容器(通過(guò)指定ID),并重新推送鏡像至本地Registry。
Host# sudo /etc/init.d/docker restart
Host# sudo docker ps -a
Host# sudo docker start 5b6112fa4046 //以查詢(xún)得到的CONTAINER ID號(hào)為準(zhǔn)
Host# sudo docker push 192.168.13.71:5000/led_flash:v1.0
圖 19
通過(guò)瀏覽器訪(fǎng)問(wèn)"http://192.168.13.71:5000/v2/_catalog",即可看到當(dāng)前倉(cāng)庫(kù)里已有的鏡像。
圖 20
構(gòu)建多個(gè)鏡像
請(qǐng)先參考“構(gòu)建單個(gè)鏡像”小節(jié)完成單個(gè)鏡像led_flash的構(gòu)建。將產(chǎn)品資料“4-軟件資料LinuxFilesystemdocker”目錄下的所有腳本文件拷貝至Ubuntu共享目錄下,再執(zhí)行如下命令拷貝至Docker工作目錄。
Host# cp /mnt/hgfs/ShareFolder/docker_container_1_echo.sh /home/tronlong/docker/dockerfile/
Host# cp /mnt/hgfs/ShareFolder/docker_container_2_echo.sh/home/tronlong/docker/dockerfile/
Host# cp /mnt/hgfs/ShareFolder/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.71:5000/docker_container_1_echo.sh:v1.0 . //注意命令最后含有"."
Host# sudo docker images //查看已構(gòu)建的鏡像
參數(shù)說(shuō)明:
192.168.13.71:Ubuntu的IP地址;
-t:指定鏡像的名字及標(biāo)簽(name:tag)。
圖 25
請(qǐng)執(zhí)行如下命令,將鏡像推送至本地倉(cāng)庫(kù)Registry。
Host# sudo docker push 192.168.13.71: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
通過(guò)瀏覽器訪(fǎng)問(wèn)"http://192.168.13.71:5000/v2/_catalog",即可看到當(dāng)前倉(cāng)庫(kù)里已有的鏡像。
圖 27
"docker_container_2_echo.sh"、"docker_container_3_echo.sh"文件參考以上類(lèi)似步驟構(gòu)建鏡像。
重新通過(guò)瀏覽器訪(fǎng)問(wèn)"http://192.168.13.71:5000/v2/_catalog",即可看到當(dāng)前倉(cāng)庫(kù)里已有多個(gè)鏡像。
圖 28
由于篇幅過(guò)長(zhǎng)等原因,部分內(nèi)容均不逐一展示,如需獲取完整版詳細(xì)資料,請(qǐng)關(guān)注創(chuàng)龍科技微信公眾號(hào)或官網(wǎng),或者評(píng)論區(qū)留言,感謝您的支持!
審核編輯 黃宇
-
開(kāi)發(fā)板
+關(guān)注
關(guān)注
26文章
6289瀏覽量
118048 -
瑞芯微
+關(guān)注
關(guān)注
27文章
792瀏覽量
54284 -
RK3562
+關(guān)注
關(guān)注
0文章
99瀏覽量
689
發(fā)布評(píng)論請(qǐng)先 登錄
iTOP-3562開(kāi)發(fā)板/核心板采用RK3562,集成四核A53+Mali G52架構(gòu)
瑞芯微米爾RK3562國(guó)產(chǎn)核心板,ARM中量級(jí)多面手
迅為RK3562開(kāi)發(fā)板2900頁(yè)+資料_多種系統(tǒng)適配全開(kāi)源
迅為國(guó)產(chǎn)四核RK3562開(kāi)發(fā)板底板硬件接口原理說(shuō)明
新一代低價(jià)開(kāi)發(fā)板芯片RK3562來(lái)啦! — 觸覺(jué)智能RK3562開(kāi)發(fā)板
瑞芯微主板/開(kāi)發(fā)板Linux系統(tǒng)播放音頻方法,觸覺(jué)智能RK3562開(kāi)發(fā)板演示
瑞芯微平臺(tái)Android系統(tǒng)串口測(cè)試方法,觸覺(jué)智能RK3562開(kāi)發(fā)板演示
4核CPU,ARM中量級(jí)多面手,米爾瑞芯微RK3562核心板上市
全國(guó)產(chǎn)!瑞芯微3562(2GHz四核A53 NPU)工業(yè)核心板規(guī)格書(shū)
全國(guó)產(chǎn)!瑞芯微3562(2GHz四核A53 NPU)工業(yè)核心板規(guī)格書(shū)
全國(guó)產(chǎn)!瑞芯微3562Mini(2GHz四核A53 NPU)工業(yè)開(kāi)發(fā)板規(guī)格書(shū)
性?xún)r(jià)比不錯(cuò)的工業(yè)級(jí)開(kāi)發(fā)板 — 米爾RK3562
創(chuàng)龍瑞芯微 RK3562 國(guó)產(chǎn) 2GHz 四核A53 工業(yè)開(kāi)發(fā)板—調(diào)試工具安裝
創(chuàng)龍 瑞芯微 RK3562 國(guó)產(chǎn) 2GHz 四核A53 工業(yè)開(kāi)發(fā)板—IRIG-B碼對(duì)時(shí)案例
創(chuàng)龍 瑞芯微 RK3562 國(guó)產(chǎn) 2GHz 四核A53 工業(yè)開(kāi)發(fā)板—Docker容器部署方法說(shuō)明
評(píng)論