前 言
本文適用開發環境:
Windows開發環境:Windows 7 64bit、Windows 10 64bit
Linux開發環境:VMware16.2.5、Ubuntu22.04.5 64bit
U-Boot:U-Boot-2017.09
Kernel:Linux-6.1.115
LinuxSDK:LinuxSDK-[版本號](基于rk3576_linux6.1_release_v1.1.0)
Docker是一個開源的應用容器引擎,讓開發者可打包他們的應用以及依賴包至一個可移植的鏡像中,然后發布至任何流行的Linux或Windows機器上,亦可實現虛擬化。容器是完全使用沙箱機制,相互之間不會有任何接口。使用Docker,可像管理應用程序一樣管理基礎結構。通過利用Docker的快速發布、測試和部署代碼的方法,可顯著減少產品開發時間。
評估板簡介
創龍科技TL3576-MiniEVM是一款基于瑞芯微RK3576J/RK3576高性能處理器設計的4核ARM Cortex-A72+ 4核ARM Cortex-A53 + ARM Cortex-M0國產工業評估板,Cortex-A72核心主頻高達2.2GHz,Cortex-A53核心主頻高達2.0GHz。評估板由核心板和評估底板組成,核心板CPU、ROM、RAM、電源、晶振等所有元器件以及評估底板元器件均采用國產工業級方案,國產化率100%。同時,評估底板大部分元器件亦采用國產工業級方案,國產化率約為99%(按元器件數量占比,數據僅供參考)。核心板經過專業的PCB Layout和高低溫測試驗證,支持選配屏蔽罩,質量穩定可靠,可滿足各種工業應用環境要求。
評估板引出2路Ethernet、2路USB、Micro SD、UART等通信接口,同時引出2路MIPI CSI、MIPI DSI、DPDisplay、HDMI OUT、MIC IN/HP OUT等音視頻多媒體接口,支持4K@60fps H.265/H.264視頻編碼、8K@30fps H.265/4K@60fps H.264視頻解碼。
評估板體積小巧,尺寸為80mm*130mm,可作為卡片式電腦使用,且便于產品集成,方便用戶快速進行產品方案評估與技術預研。
評估板硬件資源圖解1
評估板硬件資源圖解2
Docker架構
Docker使用客戶端——服務器(C/S)體系結構。Docker客戶端與Docker守護進程進行通信,后者執行構建、運行和分發Docker容器的繁重工作。Docker客戶端和守護進程可在同一個系統上運行,亦可將Docker客戶端連接至遠程Docker守護進程。Docker客戶端和守護進程使用REST API、UNIX套接字或網絡接口進行通信。
圖 1
更多詳情請可參考Docker官網鏈接:https://docs.docker.com/get-started/overview。
Docker安裝
安裝方法
(1) 安裝依賴包
打開Ubuntu,確保Ubuntu可正常訪問互聯網,執行如下命令進行安裝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 http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
圖 4
(3) 設置Docker Stable存儲庫
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
(4) 安裝Docker
Host# sudo apt-get update
Host# sudo apt-get install docker-ce docker-ce-cli containerd.io
圖 6
圖 7
搭建本地鏡像倉庫
Docker用Registry來保存用戶構建的鏡像。Registry分為公共和私有兩種。Docker公司運營的公共Registry叫做Docker Hub,用戶可在Docker Hub注冊賬號,分享并保存自己的鏡像。Docker公司的公共鏡像倉庫(https://hub.docker.com)提供了龐大的鏡像集合供用戶使用。一個Docker Registry中可包含多個倉庫,每個倉庫可包含多個標簽(Tag),每個標簽對應一個鏡像。通常,一個倉庫會包含同一個軟件不同版本的鏡像,而標簽對應該軟件的各個版本。用戶可通過“[<倉庫名>:<標簽>]”的格式來指定具體是某個軟件某個版本的鏡像。如未給出標簽,將以[latest]作為默認標簽。
由于現階段無法從官方獲取Docker鏡像,因此需使用一個完整的Docker鏡像進行離線部署。請按照如下步驟移植Registry鏡像并加載Docker鏡像到本地倉庫。
執行如下命令創建myregistry目錄。
Host# mkdir -p /home/tronlong/docker/myregistry
圖 8
將產品資料“4-軟件資料Demoplatform-demosdockerimage”目錄下的Docker鏡像壓縮包文件registry_image.tar拷貝至Ubuntu的"/home/tronlong/docker/myregistry/"目錄下,并執行如下命令將其加載至本地倉庫。
Host# sudo docker load -i /home/tronlong/docker/myregistry/registry_image.tar
圖 9
執行如下命令,查看加載的Registry鏡像。
Host# sudo docker images
圖 10
本次使用的鏡像是registry:2,請執行如下命令啟動容器。
Host# sudo docker run -d -p 5000:5000 -v /home/tronlong/docker/myregistry:/var/lib/registry registry:2
參數說明:
-d:后臺啟動容器。
-p:將容器的5000端口映射至Ubuntu的5000端口(5000是registry服務端口)。
-v:將容器"/var/lib/registry"目錄映射至Ubuntu的"/home/tronlong/docker/myregistry",用于存放鏡像數據。
圖 11
請執行如下命令,查看容器是否已啟動,出現如下內容說明容器已正常啟動。
Host# sudo docker ps
圖 12
請通過瀏覽器訪問"http://192.168.13.76:5000/v2/_catalog",如返回如下內容則說明registry已經成功啟動,192.168.13.76為Ubuntu的IP。
圖 13
因為Docker剛建立運行,所以里面無任何鏡像內容。至此,Docker環境安裝完成。
構建鏡像
構建單個鏡像
請在Ubuntu上新建工作目錄"/home/tronlong/docker/dockerfile/",并將產品資料“4-軟件資料Demoplatform-demosdockerimage”目錄下的文件系統壓縮包和產品資料“4-軟件資料Demobase-demosled_flashbin”目錄下的可執行文件拷貝至Ubuntu共享目錄下,再執行如下命令拷貝至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.0-g95489ea.tar /home/tronlong/docker/dockerfile/
圖 14
在"/home/tronlong/docker/dockerfile/"目錄下,創建Dockerfile文件,并編寫如下內容。
Host# cd /home/tronlong/docker/dockerfile
Host# gedit Dockerfile
圖 15
圖 16
Dockerfile文件內容如下:
FROM scratch #基于空的基礎鏡像構建新的鏡像
# Set work directory
WORKDIR /root #為CMD、COPY和AND設置工作目錄
# Decompress the file system
ADD rootfs-v1.0-g95489ea.tar / #解壓文件系統
# Copy file to image
COPY led_flash . #拷貝可執行文件至鏡像的"/home/root/"目錄下
# Shell command executed when the container is started
# CMD ["executable","param1","param2"]
CMD ["./led_flash", "-n 2"] #容器啟動時執行的shell命令,此處為執行LED閃爍程序的命令
在Dockerfile文件所在的目錄下執行如下命令,進行構建鏡像。
Host# sudo docker build -t 192.168.13.76:5000/led_flash:v1.0 . //注意命令最后含有"."
Host# sudo docker images //查看已構建的鏡像
參數說明:
192.168.13.76:Ubuntu的IP地址;
-t:指定鏡像的名字及標簽(name:tag)。
圖 17
請執行如下命令,將鏡像推送至本地倉庫Registry。
Host# sudo docker push 192.168.13.76:5000/led_flash:v1.0
圖18
Docker版本從1.3.X之后,與Docker Registry交互默認使用https。由于前面搭建的私有倉庫僅提供http服務,因此當與私有倉庫交互時將出現上面的錯誤提示。可通過修改"/etc/docker/daemon.json"文件來解決該問題,請執行如下命令,192.168.13.87為Ubuntu的IP。
Host# sudo vi /etc/docker/daemon.json
圖 19
圖 20
請在daemon.json中添加如下配置內容:
{
"insecure-registries": ["192.168.13.76:5000"]
}
執行如下命令,重新啟動Docker、Registry容器(通過指定ID),并重新推送鏡像至本地Registry。
Host# sudo /etc/init.d/docker restart
Host# sudo docker ps -a
Host# sudo docker start 4170d7490c61 //以查詢得到的CONTAINER ID號為準
Host# sudo docker push 192.168.13.76:5000/led_flash:v1.0
圖 21
通過瀏覽器訪問"http://192.168.13.76:5000/v2/_catalog",即可看到當前倉庫里已有的鏡像。
圖 22
構建多個鏡像
請先參考“構建單個鏡像”小節完成單個鏡像led_flash的構建。將產品資料“4-軟件資料Demoplatform-demosdockershell”目錄下的所有腳本文件拷貝至Ubuntu共享目錄下,再執行如下命令拷貝至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/
圖 23
在"/home/tronlong/docker/dockerfile/"目錄下,修改Dockerfile文件。
Host# cd /home/tronlong/docker/dockerfile
Host# gedit Dockerfile
圖 24
圖 25
修改內容如下:
COPY docker_container_1_echo.sh . #拷貝腳本文件至鏡像的"/root/"目錄下
# CMD ["./led_flash", "-n 2"] #添加注釋符"#"
在Dockerfile文件所在的目錄下執行如下命令,進行構建鏡像。
Host# sudo docker build -t 192.168.13.76:5000/docker_container_1_echo.sh:v1.0 . //注意命令最后含有"."
Host# sudo docker images //查看已構建的鏡像
參數說明:
192.168.13.76:Ubuntu的IP地址;
-t:指定鏡像的名字及標簽(name:tag)。
圖 26
請執行如下命令,將鏡像推送至本地倉庫Registry。
Host# sudo docker push 192.168.13.76:5000/docker_container_1_echo.sh:v1.0
備注:由于構建Docker鏡像使用的是同一個文件系統,相同的內容將會重疊,因此將會繼承第一個led_flash鏡像已經上傳的內容(文件系統)。
圖 27
通過瀏覽器訪問"http://192.168.13.76:5000/v2/_catalog",即可看到當前倉庫里已有的鏡像。
圖 28
"docker_container_2_echo.sh"、"docker_container_3_echo.sh"文件參考以上類似步驟構建鏡像。
重新通過瀏覽器訪問"http://192.168.13.76:5000/v2/_catalog",即可看到當前倉庫里已有多個鏡像。
圖 29
下載鏡像并運行容器
下載單個鏡像并運行容器
請使用網線將評估板ETH1 RGMII網口連接至路由器,并確保和Ubuntu處于同一網絡下,執行如下命令安裝docker容器。
Target# apt update
Target# apt install docker.io -y
圖 30
圖 31
(1) 執行如下命令下載鏡像并列舉出下載后的鏡像。
Target# docker pull 192.168.13.76:5000/led_flash:v1.0 //下載鏡像
Target# docker images //列舉已下載的鏡像
圖 32
若出現如下錯誤,請執行如下命令,通過修改"/etc/docker/daemon.json"文件來解決此問題,修改保存后,重啟Docker服務后重新下載鏡像。
圖 33
Target# cd /etc
Target# mkdir -p docker
Target# cd docker
Target# vim daemon.json
圖 34
請在daemon.json中添加如下配置內容:
{
"insecure-registries": ["192.168.13.76:5000"]
}
圖 35
Target# systemctl restart docker
圖 36
(2) 修改標簽名稱。
Target# docker tag 192.168.13.76:5000/led_flash:v1.0 led_flash
Target# docker images
圖 37
(3) 刪除舊標簽名稱。
Target# docker rmi 192.168.13.76:5000/led_flash:v1.0
Target# docker images
圖 38
(4) 創建并啟動容器。
Target# docker run -itd --name led_flash --platform linux/amd64 -v /sys/:/sys led_flash
參數說明:
-itd:以交互模式運行容器,并將容器的標準輸入連接到交互終端,以守護進程模式運行容器;
--name:為容器指定一個名稱;
--platform:指定容器運行的平臺;
-v:映射卷(將主機的目錄"/sys"映射至容器的"/sys");
led_flash:鏡像名稱。
圖 39
容器啟動完成后,評估底板的2個用戶可編程指示燈同時閃爍。執行如下命令,可查看當前容器占用資源情況。"MEM USAGE"表示容器占用內存;"LIMIT"表示容器可使用的最大內存。
備注:此指令會不斷打印內存占用信息,進行下一步需要按"Ctrl + C"退出。
Target# docker stats
圖 40
圖 41
(5) 容器的基本操作
執行如下命令,查看正在運行的容器并進入容器。
Target# docker ps
Target# docker exec -it led_flash/bin/bash
參數說明:
-i:以交互模式運行容器,通常與-t同時使用;
-t:為容器重新分配一個偽輸入終端,通常與-i同時使用;
led_flash:容器ID,以實際"CONTAINER ID"為準;
/bin/bash:在容器內執行"/bin/bash"命令。
圖 42
執行如下命令,退出容器。
Bash# exit
圖 43
執行如下命令,停止容器。此時,評估底板的2個用戶可編程指示燈不再閃爍。
Target# docker stop led_flash
圖 44
執行如下命令,啟動容器。此時,評估底板的2個用戶可編程指示燈同時閃爍。
Target# docker start led_flash
圖 45
下載多個鏡像并運行容器
(1) 請使用網線將評估板ETH1 RGMII網口連接至路由器,并確保和Ubuntu處于同一網絡下,評估板上電啟動,執行如下命令下載鏡像并列舉出下載后的鏡像。
Target# docker pull 192.168.13.76:5000/docker_container_1_echo.sh:v1.0 //下載鏡像
Target# docker pull 192.168.13.76:5000/docker_container_2_echo.sh:v1.0
Target# docker pull 192.168.13.76:5000/docker_container_3_echo.sh:v1.0
Target# docker images //列舉已下載的鏡像
備注:由于led_flash鏡像已在“下載單個鏡像并運行容器”小節中下載、創建并啟動容器,因此本小節不再演示。
圖 46
(2) 執行如下命令,修改標簽名稱。
Target# docker tag 192.168.13.76:5000/docker_container_1_echo.sh:v1.0 container_1_echo
Target# docker tag 192.168.13.76:5000/docker_container_2_echo.sh:v1.0 container_2_echo
Target# docker tag 192.168.13.76:5000/docker_container_3_echo.sh:v1.0 container_3_echo
圖 47
執行如下命令,刪除舊標簽名稱。
Target# docker rmi 192.168.13.76:5000/docker_container_1_echo.sh:v1.0
Target# docker rmi 192.168.13.76:5000/docker_container_2_echo.sh:v1.0
Target# docker rmi 192.168.13.76:5000/docker_container_3_echo.sh:v1.0
Target# docker images
圖 48
(3) 執行如下命令,創建并啟動容器。
Target# docker run -itd --platform linux/amd64 --name docker_container_1_echo container_1_echo/bin/bash
Target# docker run -itd --platform linux/amd64 --name docker_container_2_echo container_2_echo /bin/bash
Target# docker run -itd --platform linux/amd64 --name docker_container_3_echo container_3_echo /bin/bash
參數說明:
-itd:以交互模式運行容器,允許用戶與容器進行交互,后臺運行容器;
--platform:指定容器運行的平臺;
--name:為容器指定一個名稱;
container_1_echo、container_2_echo、container_3_echo:鏡像名稱。
/bin/bash:執行/bin/bash命令阻塞docker容器,防止容器自動退出,以便能進入容器運行腳本。
圖 49
容器啟動完成后,可執行如下命令查看當前容器占用資源情況。
Target# docker stats
圖 50
圖 51
(4) 容器的基本操作
執行如下命令,查看正在運行的容器,并進入"name docker_container_2_echo"容器。
備注:"name docker_container_1_echo"、"name docker_container_3_echo"容器可參考該操作進行測試。
Target# docker ps -a
Target# docker exec -it docker_container_2_echo /bin/bash
參數說明:
-i:以交互模式運行容器,通常與-t同時使用;
-t:為容器重新分配一個偽輸入終端,通常與-i同時使用;
docker_container_2_echo:容器ID,以實際"CONTAINER ID"為準;
/bin/bash:在容器內執行"/bin/bash"命令。
圖 52
執行如下命令,可查看腳本打印信息。
Target# ./docker_container_2_echo.sh
圖 53
執行如下命令,退出該容器。
Bash# exit
圖 54
查看磁盤占用資源情況
未下載Docker鏡像
進入評估板文件系統,執行如下命令,查看當前系統未下載Docker鏡像時的磁盤使用情況。
Target# df-lh
圖 55
已下載Docker鏡像
執行如下命令,查看系統已下載4個Docker鏡像時的磁盤使用情況以及Docker磁盤空間使用情況。
Target# df-lh
Target# docker system df //查看Docker磁盤空間使用情況
圖 56
圖 57
可以查看到4個Docker鏡像與容器占用內存的總大小約為1.22GByte。由于構建Docker鏡像的文件系統是同一個,而Docker鏡像中相同的內容會重疊在一起,不需重新占用內存,因此4個Docker鏡像和容器占用的內存總大小約為1.22GByte。
想了解更多資料,可前往創龍科技官網或微信公眾號。
審核編輯 黃宇
-
瑞芯微
+關注
關注
25文章
528瀏覽量
52141 -
評估板
+關注
關注
1文章
595瀏覽量
29913 -
rk3576
+關注
關注
1文章
143瀏覽量
534
發布評論請先 登錄
瑞芯微第二代8nm高性能AIOT平臺 RK3576 詳細介紹
國產!瑞芯微RK3576(八核@2.2GHz+6T NPU)工業開發板規格書
國產!瑞芯微RK3576(八核@2.2GHz+6T NPU)工業核心板規格書
【米爾RK3576開發板評測】+項目名稱【米爾RK3576開發板評測】一個視頻和你共同認識一下米爾RK3576開發板
國產高性能CPU--米爾瑞芯微RK3576賦能AIoT、工業、智能顯示終端
國產開發板的端側AI測評-基于米爾瑞芯微RK3576
米爾瑞芯微RK3576核心板上新!8核6T高算力,革新AIoT設備

電魚智能EFISH-RK3576-SBC工控板的五大優勢詳解

評論