本節索引:
一、Docker image介紹
二、BusyBox
三、示例:推送鏡像到鏡像倉庫
四、示例:搭建docker鏡像私有倉庫
五、Harbor™ by VMware?
一、Docker image介紹
Docker鏡像含有啟動容器所需要的文件系統及其內容,因此,
其用于創建并啟動docker容器
采用分層構建機制,最底層為bootfs,其之為rootfs
bootfs:用于系統引導的文件系統,包括bootloader和kernel,容器啟動完
成后會被卸載以節約內存資源;
rootfs:位于bootfs之上,表現為docker容器的根文件系統;
傳統模式中,系統啟動之時,內核掛載rotfs時會首先將其掛載為“只讀”模式,
完整性自檢完成后將其重新掛載為讀寫模式;
docker中,rootfs由內核掛載為“只讀”模式,而后通過“聯合掛載 ”技術額外掛
載一個“可寫”層;
位于下層的鏡像稱為父鏡像(parent image),最底層的稱為基礎鏡像(base image)
最上層為“可讀寫”層,其下的均為“只讀”層
Repositry
由某特定的docker鏡像的所有迭代版本組成的鏡像倉庫
一個 Registry中可以存在多個Repositry
Repositry可分為“頂層倉庫”和“用戶倉庫”
用戶倉庫名稱格式為“用戶名/倉庫名”
每個倉庫可以包含多個Tag(標簽) ,每個標簽對應一個鏡像
Index
維護用戶帳戶、鏡像的校驗以及公共命名空間的信息
相當于為Registry提供了一個完成用戶認證等功能的檢索接口
Registry用于保存docker鏡像,包括鏡像的層次結構和元數據
用戶可自建Registry,也可使用官方的Docker Hub
Sponsr Registry:第三方的registry,供客戶和Docker社區使用
Miro Registry:第三方的registry,只讓客戶使用
Vendor Registry:由發布Docker鏡像的供應商提供的registry
Private Rgistry:通過設有防火墻和額外的安全層的私有實體提供的registry
Docker Registry中的鏡像通常由開發人員制作,而后推送至“公共”或“私有”Registry上保存,
供其他人員使用,例如“部署”到生產環境;
示例:利用docker image安裝redis容器
以下是docker hub官方庫支持的redis鏡像版本
若要指定版本下載,例如下載redis-4-alpne版本
docker run –name kvstor1 -d redis:4-alpine
以/bin/sh運行redis鏡像
docker exec -it kvstor1 /bin/sh
二、BusyBox
BusyBox 是一個集成了三百多個最常用Linux命令和工具的軟件。BusyBox 包含了一些簡單
的工具,例如ls、cat和echo等等,還包含了一些更大、更復雜的工具,例grep、find、mount
以及telnet。有些人將 BusyBox 稱為 Linux 工具里的瑞士軍刀。簡單的說BusyBox就好像是個
大工具箱,它集成壓縮了 Linux 的許多工具和命令,也包含了 Android 系統的自帶的shell。
示例:運行busybox開啟一個http服務
以b1為name運行busybox鏡像
docker run –name b1 -it busybox
/ # mkdir /data/html -p
/ # http -f -h /data/html/
/ # echo test > /data/html/index.html
-f表示以前臺工作運行httpd服務,-b則表示后臺運行
/ # httpd -f -h /data/html/
開啟另外一個tty終端
查看容器網絡信息可使用docker inspect命令
docker inspect b1
docker ps??? #查看當前運行的容器狀態信息
由于未對b1容器做網絡轉發,只能在本機訪問web服務
三、示例:推送鏡像到鏡像倉庫
示例:推送鏡像到docker hub
說明:docker hub允許匿名用戶下載鏡像,但當用戶需要將鏡像上傳至docker hub時,必須在
docker hub創建用戶,這里我們創建了一個ms03560355的用戶
首先先在docker hub創建一個項目;一個項目中,可以包含多個tags版本
查看本地庫中的鏡像,我們以上傳busybox為例
要將image上傳至docker hub,image名稱格式必須為 用戶名/項目名:tag
鏡像打標簽規則:
1、不加tag默認tag為:lastest
2、同一鏡像可添加多個tags
docker tag busybox:latest ms03560355/busybox
docker tag busybox:latest ms03560355/busybox:v1.0
再次查看本地鏡像
上傳鏡像到docker hub
docker push ms03560355/busybox
docker push ms03560355/busybox:v1.0
此時,取docker官網查看:
示例:推送鏡像到阿里云
鑒于訪問docker hub境外網站速度緩慢,國內用戶可選用其他互聯網廠商提供的鏡像庫服務,
我們以阿里云鏡像庫服務位例介紹如何使用
首頁 –> 產品 –> 云計算基礎 –> 容器鏡像服務
創建鏡像倉庫,按照要求填寫,點擊下一步
這里選擇本地倉庫,下一步
登錄阿里云鏡像庫
docker login –username=ms03560355 registry.cn-hangzhou.aliyuncs.com
給鏡像打tag標簽
docker tag registry.cn-hangzhou.aliyuncs.com/wxlinux/hello-world:v1.0
推送鏡像到阿里云倉庫
docker push registry.cn-hangzhou.aliyuncs.com/wxlinux/hello-world
此時我們回到阿里云倉庫管理控制臺,可以看到鏡像已上傳成功
四、示例:搭建docker鏡像私有倉庫
安裝docker-regsitry(extras源)
yum install docker-registry.x86_64
實際安裝的是docker-distribution包
開啟服務
systemctl start docker-distribution.service
默認監聽5000端口
docker tag busybox:latest 192.168.30.10:5000/busybox:v1
推送鏡像到鏡像庫,提示錯誤,必須使用https
修改配置可以使用不安全的倉庫連接
vim /etc/docker/daemon.json
“insecure-registries”: [“192.168.30.10:5000”]
重啟docker-distribution與docker服務,再次推送,成功!
systemctl restart docker-distribution.service docker
五、Harbor™ by VMware?
harbor,基于docker-registry進行二次開發,為私有鏡像庫提供友好的web訪問界面
官方網站:http://vmware.github.io/harbor/
參考文檔:https://github.com/vmware/harbor/tree/master/docs
Git下載地址:https://github.com/vmware/harbor/releases
特性:
支持多租戶內容簽署和校驗
支持安全及風險掃描分析
支持審計日志
支持標識、集成,基于角色的訪問控制
支持可擴展的API
支持圖形用戶界面
國際化支持(目前只支持英文和中文)
系統要求:
docker 1.10.0+和docker-compose 1.6.0+。
主要配置文件:
/etc/harbor/harbor.cfg
客戶端若想訪問harbor,也許配置非安全端口
vim /etc/docker/daemon.json
登錄
docker login
打標鏡像
docker tag myweb:v0.3-1 192.168.30.10/devel/myweb:v0.3-1
推送鏡像
docker push 192.168.30.10/devel/myweb
暫停/停止harbor服務
docker-compose pause/stop
暫停后再次開啟harbor服務
docker-compose unpause
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/104444