Docker容器技術之Docker Image

鏡像是Docker容器的基石,容器是鏡像的運行實例,有了鏡像才能啟動容器。

本節索引:

一、Docker image介紹

二、BusyBox

三、示例:推送鏡像到鏡像倉庫

四、示例:搭建docker鏡像私有倉庫

五、Harbor™ by VMware?

 

 

 

一、Docker image介紹

Docker鏡像含有啟動容器所需要的文件系統及其內容,因此,

其用于創建并啟動docker容器

采用分層構建機制,最底層為bootfs,其之為rootfs

bootfs:用于系統引導的文件系統,包括bootloader和kernel,容器啟動完

成后會被卸載以節約內存資源;

rootfs:位于bootfs之上,表現為docker容器的根文件系統;

傳統模式中,系統啟動之時,內核掛載rotfs時會首先將其掛載為“只讀”模式,

完整性自檢完成后將其重新掛載為讀寫模式;

docker中,rootfs由內核掛載為“只讀”模式,而后通過“聯合掛載 ”技術額外掛

載一個“可寫”層;

1

位于下層的鏡像稱為父鏡像(parent image),最底層的稱為基礎鏡像(base image)

最上層為“可讀寫”層,其下的均為“只讀”層

2

 

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

 

3

Docker Registry中的鏡像通常由開發人員制作,而后推送至“公共”或“私有”Registry上保存,

供其他人員使用,例如“部署”到生產環境;

 

 

示例:利用docker image安裝redis容器

以下是docker hub官方庫支持的redis鏡像版本

4

若要指定版本下載,例如下載redis-4-alpne版本

docker run –name kvstor1 -d redis:4-alpine

5

以/bin/sh運行redis鏡像

docker exec -it kvstor1 /bin/sh

6

 

二、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

1-1

/ # 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

1-2

 

docker ps??? #查看當前運行的容器狀態信息

由于未對b1容器做網絡轉發,只能在本機訪問web服務

1-3

 

三、示例:推送鏡像到鏡像倉庫

示例:推送鏡像到docker hub

說明:docker hub允許匿名用戶下載鏡像,但當用戶需要將鏡像上傳至docker hub時,必須在

docker hub創建用戶,這里我們創建了一個ms03560355的用戶

首先先在docker hub創建一個項目;一個項目中,可以包含多個tags版本

7

查看本地庫中的鏡像,我們以上傳busybox為例

8

要將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

再次查看本地鏡像

9

上傳鏡像到docker hub

docker push ms03560355/busybox

docker push ms03560355/busybox:v1.0

10

此時,取docker官網查看:

11

12

 

示例:推送鏡像到阿里云

鑒于訪問docker hub境外網站速度緩慢,國內用戶可選用其他互聯網廠商提供的鏡像庫服務,

我們以阿里云鏡像庫服務位例介紹如何使用

首頁 –> 產品 –> 云計算基礎 –> 容器鏡像服務

13

創建鏡像倉庫,按照要求填寫,點擊下一步

14

這里選擇本地倉庫,下一步

15

登錄阿里云鏡像庫

docker login –username=ms03560355 registry.cn-hangzhou.aliyuncs.com16

給鏡像打tag標簽

docker tag registry.cn-hangzhou.aliyuncs.com/wxlinux/hello-world:v1.0

17

推送鏡像到阿里云倉庫

docker push registry.cn-hangzhou.aliyuncs.com/wxlinux/hello-world

18

此時我們回到阿里云倉庫管理控制臺,可以看到鏡像已上傳成功

19

 

四、示例:搭建docker鏡像私有倉庫

安裝docker-regsitry(extras源)

yum install docker-registry.x86_64

實際安裝的是docker-distribution包

20

開啟服務

systemctl start docker-distribution.service

默認監聽5000端口

21

docker tag busybox:latest 192.168.30.10:5000/busybox:v1

22

推送鏡像到鏡像庫,提示錯誤,必須使用https

23

修改配置可以使用不安全的倉庫連接

vim /etc/docker/daemon.json

“insecure-registries”: [“192.168.30.10:5000”]

24

重啟docker-distribution與docker服務,再次推送,成功!

systemctl restart docker-distribution.service docker

25

 

 

五、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

26

特性:

支持多租戶內容簽署和校驗

支持安全及風險掃描分析

支持審計日志

支持標識、集成,基于角色的訪問控制

支持可擴展的API

支持圖形用戶界面

國際化支持(目前只支持英文和中文)

 

系統要求:

docker 1.10.0+docker-compose 1.6.0+。

 

主要配置文件:

/etc/harbor/harbor.cfg

 

27

28

 

客戶端若想訪問harbor,也許配置非安全端口

vim /etc/docker/daemon.json

29

登錄

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

30

 

暫停/停止harbor服務

docker-compose pause/stop

暫停后再次開啟harbor服務

docker-compose unpause

 

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/104444

(0)
wangxczwangxcz
上一篇 2018-08-01 19:21
下一篇 2018-08-03 20:30

相關推薦

  • N31-4

    用戶管理相關命令演示

    Linux筆記 2018-07-09
  • 手把手系列(三)教你自制簡單Linux系統

    CentOS啟動相關最重要的幾個文件有:內核vmlinuz文件、虛擬文件系統initramfs文件、grub文件以

    及init啟動程序,圍繞這幾個文件,我們來制作一個能夠簡單啟動的自制Linux系統

    2018-05-14
  • 硬連接和軟連接

    多情自古傷離別

    2018-04-04
  • 第十次筆記

    自動化運維之自動化安裝系統

    2018-05-24
  • 第五周

    1、簡述rpm與yum命令的常見選項,并舉例 (1)什么是rpm? RPM?是RPM Package Manager(RPM軟件包管理器)的縮寫,可以實現安裝、升級、卸載、查詢和校驗、數據庫維護。 CentOS系統上的rpm命令管理程序: rpm –I 安裝 -U 升級 -e 卸載 -q 查詢 –builddb 數據庫維護 (2)rmp的安裝: …

    Linux筆記 2018-07-15
  • Linux運維學習的常用命令總結以及需要注意的地方(1)

    逆水行舟,不進則退 ,大家共勉之!
    1.在linux安裝階段可能會用到的命令
    2.設置網絡相關的命令
    3.用戶頻道的切換以及用戶相關信息的查看
    4.系統當前的shell信息以及別名、內部命令、外部命令相關

    2018-04-02
欧美性久久久久