前言:Docker是一個開源的應用容器引擎,讓開發(fā)者可打包他們的應用以及依賴包到一個可移植的鏡像中,然后發(fā)布到任何流行的Linux或Windows機器上,亦可實現(xiàn)虛擬化。容器是完全使用沙箱機制,相互之間不會有任何接口。使用Docker,可像管理應用程序一樣管理基礎結構。通過利用Docker的快速發(fā)布、測試和部署代碼的方法,可顯著減少產(chǎn)品開發(fā)時間。
Docker容器適用于TI AM335x、AM437x、AM570x、AM5728等平臺,本文基于TI AM3352/54/59平臺為您講解Docker的安裝及運行測試。
點擊圖片/圖注即可查看該產(chǎn)品資料↓↓↓

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

圖 2
更多詳情請可參考Docker官網(wǎng)鏈接:https://docs.docker.com/get-started/overview。
02
Docker安裝
2.1安裝方法
(1)安裝依賴包
打開Ubuntu,確保Ubuntu可正常訪問互聯(lián)網(wǎng),執(zhí)行如下命令進行安裝Docker依賴包。
Host# sudo apt-get update

圖 3
Host# sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release

圖 4
(2)添加Docker官方GPG密鑰
Host# curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

圖 5
(3)設置Docker Stable存儲庫
Host# echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

圖 6
(4)安裝Docker
Host# sudo apt-get update
Host# sudo apt-get install docker-ce

圖 7

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

圖 9
更多參考信息,請查閱官方手冊:https://docs.docker.com/engine/install/ubuntu。
2.2搭建本地鏡像倉庫
Docker用Registry來保存用戶構建的鏡像。Registry分為公共和私有兩種。Docker公司運營的公共Registry叫做Docker Hub,用戶可在Docker Hub注冊賬號,分享并保存自己的鏡像。Docker公司的公共鏡像倉庫(https://hub.docker.com)提供了龐大的鏡像集合供用戶使用。一個Docker Registry中可包含多個倉庫,每個倉庫可包含多個標簽(Tag),每個標簽對應一個鏡像。通常,一個倉庫會包含同一個軟件不同版本的鏡像,而標簽對應該軟件的各個版本。用戶可通過“[<倉庫名>:<標簽>]”的格式來指定具體是某個軟件某個版本的鏡像。如未給出標簽,將以[latest]作為默認標簽。
本次使用的鏡像是registry:2,請執(zhí)行如下命令自動下載并啟動。
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:后臺啟動容器。
-p:將容器的5000端口映射至Ubuntu的5000端口(5000是registry服務端口)。
-v:將容器“/var/lib/registry”目錄映射至Ubuntu的“/home/tronlong/docker/myregistry”,用于存放鏡像數(shù)據(jù)。

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

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

圖 12
由于剛建立運行,故里面無任何鏡像內(nèi)容。至此,Docker環(huán)境安裝完成。
03
構建鏡像
請在Ubuntu上新建工作目錄“/home/tronlong/docker/dockerfile/”,并將產(chǎn)品資料“4-軟件資料\Linux\Filesystem\”目錄下的文件系統(tǒng)壓縮包rootfs-processor-sdk-04.03.00.05-54428dd3-v2.1-docker.tar.gz和產(chǎn)品資料“4-軟件資料\Demo\tl-linux-application\base-demos\tl_led_flash\bin\”目錄下的可執(zhí)行文件拷貝至Ubuntu共享目錄下,再執(zhí)行如下命令拷貝至工作目錄。
Host# mkdir /home/tronlong/docker/dockerfile
Host# cp /mnt/hgfs/SharedFolders/tl_led_flash /home/tronlong/docker/dockerfile/
Host# cp /mnt/hgfs/SharedFolders/rootfs-processor-sdk-04.03.00.05-54428dd3-v2.1-docker.tar.gz /home/tronlong/docker/dockerfile/

圖 13
在工作目錄“/home/tronlong/docker/dockerfile/”下,新建Dockerfile文件。
Host# gedit Dockerfile

圖 14

圖 15
Dockerfile文件內(nèi)容如下:
FROM scratch#基于空的基礎鏡像構建新的鏡像
# Set work directory
WORKDIR /home/root#為CMD、COPY和AND設置工作目錄
# Decompress the file system
ADD rootfs-processor-sdk-04.03.00.05-54428dd3-v2.1-docker.tar.gz /#解壓文件系統(tǒng)
# Copy file to image
COPY tl_led_flash .#拷貝可執(zhí)行文件至鏡像的"/home/root/"目錄下
# Shell command executed when the container is started
# CMD ["executable","param1","param2"]
CMD ["./tl_led_flash", "-n 3"]#容器啟動時執(zhí)行的shell命令,此處為執(zhí)行LED閃爍程序的命令
在Dockerfile文件所在的目錄下執(zhí)行如下命令,進行構建鏡像。
Host# sudo docker build -t192.168.0.84:5000/tl_led_flash:v1.0 .//注意命令最后含有“.”
Host# sudo docker images//查看已構建的鏡像
參數(shù)說明:
192.168.0.84:Ubuntu的IP地址;
-t:指定鏡像的名字及標簽(name:tag)。

圖 16
請執(zhí)行如下命令,將鏡像推送至本地倉庫Registry。
Host# sudo docker push 192.168.0.84:5000/tl_led_flash:v1.0

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

圖 18
請在daemon.json中添加如下配置內(nèi)容:
{
"insecure-registries": ["192.168.0.84:5000"]
}
執(zhí)行如下命令,重新啟動Docker、Registry容器(通過指定ID),并重新推送鏡像至本地Registry。
Host# sudo /etc/init.d/docker restart
Host# sudo docker ps -a
Host# sudo docker start 4b0a821ec816//以查詢得到的ID號為準
Host# sudo docker push 192.168.0.84:5000/tl_led_flash:v1.0

圖 19
備注:若出現(xiàn)如下錯誤,可執(zhí)行"sudo service docker restart"重啟Docker。

圖 20
通過瀏覽器訪問“http://192.168.0.84:5000/v2/_catalog”,即可看到當前倉庫里已有的鏡像。

圖 21
04
下載鏡像并運行容器
(1)下載鏡像。
請使用網(wǎng)線將評估板網(wǎng)口連接至路由器,并確保和Ubuntu處于同一網(wǎng)絡下,評估板上電啟動,執(zhí)行如下命令下載鏡像。
Target# docker pull 192.168.0.84:5000/tl_led_flash:v1.0
Target# docker images

圖 22
若出現(xiàn)如下錯誤,可通過修改“/etc/docker/daemon.json”文件來解決此問題,請執(zhí)行如下命令。

圖 23
Target# vi /etc/docker/daemon.json
Target# systemctl restart docker.socket//重啟Docker服務

圖24
請在daemon.json中添加如下配置內(nèi)容:
{
"insecure-registries": ["192.168.0.84:5000"]
}
(2)創(chuàng)建并啟動容器。
Target# docker run -d --name tl_led_flash -v /sys/:/sys0a4ece7276bb
參數(shù)說明:
-d: 后臺運行容器;
--name: 為容器指定一個名稱;
-v: 映射卷(將主機的目錄"/sys"映射至容器的"/sys");
0a4ece7276bb:鏡像ID,以實際"IMAGE ID"為準。

圖 25
容器啟動完成后,評估底板的3個用戶LED燈同時閃爍。
備注:若出現(xiàn)如下錯誤,需先創(chuàng)建“/etc/resolv.conf”文件,再進行創(chuàng)建容器操作。

圖 26
(3)容器的基本操作
執(zhí)行如下命令,查看正在運行的容器并進入容器。
Target# dockerps -a
Target# docker exec -it085b59f6c76e/bin/bash
參數(shù)說明:
-i:以交互模式運行容器,通常與-t同時使用;
-t:為容器重新分配一個偽輸入終端,通常與-i同時使用;
085b59f6c76e:容器ID,以實際“CONTAINER ID”為準;
/bin/bash:在容器內(nèi)執(zhí)行“/bin/bash”命令。

圖 27
執(zhí)行如下命令,退出容器。
Bash# exit

圖 28
執(zhí)行如下命令,停止容器。此時,評估底板的3個用戶LED燈不再閃爍。
Target# docker stop 085b59f6c76e

圖 29
執(zhí)行如下命令,啟動容器。此時,評估底板的3個用戶LED燈同時閃爍。
Target# docker start085b59f6c76e

圖 30
-
嵌入式
+關注
關注
5103文章
19268瀏覽量
310016 -
Linux
+關注
關注
87文章
11373瀏覽量
211293 -
硬件開發(fā)
+關注
關注
3文章
160瀏覽量
24442
發(fā)布評論請先 登錄
相關推薦
am335x開發(fā)板能否支持Vxworks操作系統(tǒng)的移植?
基于 Docker 與 Jenkins 實現(xiàn)自動化部署

AM335x和AMIC110 Sitara?處理器技術參考手冊

am335x evm板音頻播放正常,但是無法錄音,怎么解決?
適用于AM335x TRF7970A的neard(Linux NFC)構建說明

AM335x和AM43xx Sitara處理器USB布局指南

AM335x Sitara?處理器數(shù)據(jù)表

ARM平臺實現(xiàn)Docker容器技術
ARM平臺實現(xiàn)Docker容器技術
GPMC并口多通道AD采集案例,基于TI AM62x四核處理器平臺!

沒搶到?米爾AM62x開發(fā)板限量5折又來了

評論