什么是Docker? (1)Docker的架構 Docker使用客戶端——服務器(C/S)體系結構。Docker客戶端與Docker守護進程進行通信,后者執行構建、運行和分發Docker容器的繁重工作。Docker客戶端和守護進程可在同一個系統上運行,亦可將Docker客戶端連接至遠程Docker守護進程。Docker客戶端和守護進程使用REST API、UNIX套接字或網絡接口進行通信。 [color=rgba(0, 0, 0, 0.9)]
[color=rgba(0, 0, 0, 0.9)]
圖1
(2)Docker的作用更快速的啟動時間:傳統的虛擬機技術啟動應用服務往往需要數分鐘,而Docker容器應用,由于直接運行于宿主內核,無需啟動完整的操作系統,因此可以做到秒級,甚至毫秒級的啟動時間,大大的節約了開發測試,部署的時間。 持續支付和部署:對開發和運維人員來說,最希望就是一次創建和部署,可以在任意的地方運行。(定制應用鏡像來實現集成、持續支付、部署。開發人員可以通過dockerfile來進行鏡像構建,并結合持續集成系統進行集成測試,而運維人員則可直接在生產環境中快速部署該鏡像,甚至結合持續部署系統進行自動部署)。而且使用dockerfile使鏡像構建透明化,不僅僅開發團隊可理解應用運行環境,也方便運維團隊理解應用運行所需條件,幫助更好的生產環境中部署該鏡像。 更輕松的維護和拓展:Docker使用的分層存儲以及鏡像的技術,使得應用重復部分的復用更為容易,也使得應用的維護更新更加簡單,基于基礎鏡像進一步擴展鏡像也變得十分簡單。此外,Docker團隊同各個開源項目團隊一起維護了一大批高質量的官網鏡像,既可直接在生產環境使用,又可作為基礎進一步定制,大大的降低了應用服務的鏡像制作成本。 Docker容器技術應用場景 圖2
基于T113-i平臺實現Docker容器技術 1.1 安裝方法打開Ubuntu,確保Ubuntu可正常訪問互聯網,執行如下命令安裝Docker依賴包。 圖3
Host#curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg [color=rgba(0, 0, 0, 0.9)]
(4)安裝DockerHost#sudo apt-get install docker-ce docker-ce-cli containerd.io
[color=rgba(0, 0, 0, 0.9)]
圖7
[color=rgba(0, 0, 0, 0.9)]
圖8
執行如下命令,通過運行Docker自帶的hello-world鏡像來驗證是否已安裝成功。程序運行后,輸出如下內容則表示Docker安裝成功。 圖9
https://docs.docker.com/engine/install/ubuntu。 Docker用Registry來保存用戶構建的鏡像。Registry分為公共和私有兩種。Docker公司運營的公共Registry叫做Docker Hub,用戶可在Docker Hub注冊賬號,分享并保存自己的鏡像。Docker公司的公共鏡像倉庫提供了龐大的鏡像集合供用戶使用。一個Docker Registry中可包含多個倉庫,每個倉庫可包含多個標簽(Tag),每個標簽對應一個鏡像。通常,一個倉庫會包含同一個軟件不同版本的鏡像,而標簽對應該軟件的各個版本。用戶可通過“[<倉庫名>:<標簽>]”的格式來指定具體是某個軟件某個版本的鏡像。如未給出標簽,將以[latest]作為默認標簽。Host#mkdir -p /home/tronlong/docker/myregistry
-d:后臺啟動容器。-v:將容器"/var/lib/registry"目錄映射至Ubuntu的"/home/tronlong/docker/myregistry",用于存放鏡像數據。 [color=rgba(0, 0, 0, 0.9)]
圖10
[color=rgba(0, 0, 0, 0.9)]
[color=rgba(0, 0, 0, 0.9)]
圖11
請在Ubuntu上新建工作目錄"/home/tronlong/docker/dockerfile/",并將產品資料“4-軟件資料\Linux\Filesystem\docker\”目錄下的文件系統壓縮包和產品資料“4-軟件資料\Demo\base-demos\led_flash\bin\”目錄下的可執行文件拷貝至Ubuntu共享目錄下,再執行如下命令拷貝至Docker工作目錄。 Host#mkdir /home/tronlong/docker/dockerfile Host#cp /mnt/hgfs/SharedFolders/rootfs.tar /home/tronlong/docker/dockerfile/ 在"/home/tronlong/docker/dockerfile/"目錄下,創建Dockerfile文件,并編寫如下內容。 Host#cd /home/tronlong/docker/dockerfile 圖14
[color=rgba(0, 0, 0, 0.9)]
FROM scratch #基于空的基礎鏡像構建新的鏡像 WORKDIR /root #為CMD、COPY和AND設置工作目錄 ADD rootfs.tar / #解壓文件系統 COPY led_flash . #拷貝可執行文件至鏡像的"/home/root/"目錄下 # CMD ["executable","param1","param2"] 在Dockerfile文件所在的目錄下執行如下命令,進行構建鏡像。 Host#sudo docker build -t 192.168.10.101:5000/led_flash:v1.0 .//注意命令最后含有"."
192.168.10.101:Ubuntu的IP地址;
[color=rgba(0, 0, 0, 0.9)]
圖16 圖17 Docker版本從1.3.X之后,與Docker Registry交互默認使用https,然而前面搭建的私有倉庫僅提供http服務,因此當與私有倉庫交互時將出現上面的錯誤提示。可通過修改"/etc/docker/daemon.json"文件來解決該問題,請執行如下命令,192.168.10.101為Ubuntu的IP。 Host#sudovi /etc/docker/daemon.json
{}Host#sudo /etc/init.d/docker restartHost#sudo docker start 0833de1304d9//以查詢得到的CONTAINER ID號為準Host#sudo docker push 192.168.10.101:5000/led_flash:v1.0[color=rgba(0, 0, 0, 0.9)]
通過瀏覽器訪問"http://192.168.10.101:5000/v2/_catalog",即可看到當前倉庫里已有的鏡像。[color=rgba(0, 0, 0, 0.9)]
3 下載鏡像并運行容器Target#docker pull 192.168.10.101:5000/led_flash:v1.0 //下載鏡像 若出現如下錯誤,請執行如下命令,通過修改"/etc/docker/daemon.json"文件來解決此問題,修改保存后,重新啟動dockerd守護進程。
圖22 圖23
|