日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Docker系列06—基于容器制作镜像并上传到Docker Registry

發布時間:2024/4/17 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Docker系列06—基于容器制作镜像并上传到Docker Registry 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Docker系列06—基于容器制作鏡像并上傳到Docker Registry

1、制作鏡像

1.1 鏡像的生成途徑

  • 基于容器制作?
  • dockerfile,docker build

  本篇主要詳細講解基于容器制作鏡像;基于dockerfile 制作鏡像在后一張文章Docker系列07—Dockerfile 詳解中詳細介紹;

?

1.2 基于容器制作

?docker commit

(1)格式

?
1 Usage: docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

?

(2)Options 參數

  • ?-a,作者(例如,“along <along@along.com>”)
  • ?-c,修改Dockerfile指令應用于創建的鏡像
  • ?-m,提交消息
  • ?-p,在提交期間暫停容器(默認為true)

?

(3)示例1:簡單的基于容器創建一個新的鏡像

① 先運行一個容器

?
1 2 3 4 5 6 7 [root@along ~]# docker run --name b1 -it busybox / # ls / bin?? dev?? etc?? home? proc? root? sys?? tmp?? usr?? var / # mkdir -p /date/html / # echo "<h1>busybox httpd server</h1>" > /date/html/index.html / # cat /date/html/index.html <h1>busybox httpd server</h1>

  

② 不用退出這個容器,另起終端在b1容器基礎上,制作新鏡像

?
1 2 3 4 5 [root@along ~]# docker commit -p b1 sha256:3a6523b08bea7eb339ae04cc8a98caabfd46fbd27ccf31409cc3e8a764effdc1 [root@along ~]# docker image ls REPOSITORY?????????????? TAG???????????????? IMAGE ID??????????? CREATED???????????? SIZE <none>?????????????????? <none>????????????? bf29b97ba38d??????? 7 seconds ago?????? 1.15 MB

  

③ 給新制作的鏡像打標簽

?
1 2 3 4 [root@along ~]# docker tag bf29b97ba38d along/httpd:v0.1 [root@along ~]# docker image ls REPOSITORY?????????????? TAG???????????????? IMAGE ID??????????? CREATED???????????? SIZE along/httpd????????????? v0.1??????????????? bf29b97ba38d??????? 39 seconds ago????? 1.15 MB

  

④ 可以對同一個鏡像,再打標簽

?
1 2 3 4 5 [root@along ~]# docker tag along/httpd:v0.1 along/httpd:latest [root@along ~]# docker image ls REPOSITORY?????????????? TAG???????????????? IMAGE ID??????????? CREATED????????????? SIZE along/httpd????????????? latest????????????? bf29b97ba38d??????? About a minute ago?? 1.15 MB along/httpd????????????? v0.1??????????????? bf29b97ba38d??????? About a minute ago?? 1.15 MB

  

⑤ 刪除同一鏡像的標簽,只是把這個鏡像的標簽去掉,只到刪除這個鏡像的最后一個標簽,此鏡像才會被刪除

?
1 2 3 4 5 [root@along ~]# docker image rmi along/httpd:latest Untagged: along/httpd:latest [root@along ~]# docker image ls REPOSITORY?????????????? TAG???????????????? IMAGE ID??????????? CREATED????????????? SIZE along/httpd????????????? v0.1??????????????? bf29b97ba38d??????? About a minute ago?? 1.15 MB

  

⑥ 基于新的鏡像運行一個容器,驗證是否是基于b1創建成功的

?
1 2 3 4 [root@along ~]# docker run --name b2 -it along/httpd:v0.1 / # cat /date/html/index.html <h1>busybox httpd server</h1> / # exit

  

(4)示例2:基于容器創建新的鏡像,并修改執行命令CMD

① 基于容器b1創建新的鏡像,并修改命令為執行httpd服務

?
1 2 [root@along ~]# docker commit -a "Along <along@along.com>" -c 'CMD ["/bin/httpd","-f","-h","/date/html"]' -p b1 along/httpd:v0.2 sha256:2291d0e5800e53e120fad58043e97cbf8197f7db2aa1111508603fa3c16982f2

注解:busybox 中httpd 語法

  • ?-f:不運行為守護進程,在前臺運行
  • ?-h:指定httpd運行的主目錄

?

② 運行新的鏡像v0.2

?
1 2 [root@along ~]# docker run --name b3 -d along/httpd:v0.2 43e8731be7abd34a9b332c84bc622a1ef8707dc94465d3639db194c0b504cc42

  

③ 驗證成功

?
1 2 3 4 5 6 [root@along ~]# docker inspect b3 |grep "IPAddress" ????????????"SecondaryIPAddresses": null, ????????????"IPAddress": "172.17.0.3", ????????????????????"IPAddress": "172.17.0.3" [root@along ~]# curl 172.17.0.3 <h1>busybox httpd server</h1>

  

2、了解Docker Registry

2.1 介紹

  • ?registry 用于保存docker 鏡像,包括鏡像的層次結構和元數據。
  • ?啟動容器時,docker daemon會試圖從本地獲取相關的鏡像;本地鏡像不存在時,其將從registry中下載該鏡像并保存到本地;
  • ?拉取鏡像時,如果不知道registry倉庫地址,默認從Docker Hub搜索拉取鏡像

?

2.2 分類

  • Sponsor Registry第三方的registry,供客戶和docker社區使用;
  • mirror Registry第三方的registry,只讓客戶使用;如docker cn和阿里云的鏡像加速器;
  • vendor Registry服務商的registry,由發布docker鏡像的供應商提供的registry;如紅帽提供的專有的,收費提供;
  • private Registry通過設有防火墻和額外的安全層的私有實體提供的registry;自建的registry,在本地搭建registry,節省帶寬

?

2.3 registry組成(repository和index)

(1)Repository

  • 由特定的docker鏡像的所有迭代版本組成的鏡像倉庫;
  • 一個registry中可以存在多個repository:
    • repository可分為“頂層倉庫”和“用戶倉庫”
    • 用戶倉庫名稱格式為“用戶名/倉庫名”
  • 每個倉庫可以包含多個Tag(標簽),每個標簽對應一個鏡像

?

(2)Index

  • 維護用戶賬戶、鏡像的校驗以及公共命名空間的信息
  • 相當于為registry提供了一個完成用戶認證等功能的檢索接口

?

2.4 拉取倉庫鏡像的格式

?
1 docker pull <registry>[:<port>]/[<namespace>/]<name>:<tag>
  • ?registry:倉庫服務器地址:不指定默認是docker hub
  • ?port:端口;默認是443,因為是https協議
  • ?namespace:名稱空間,指是哪個用戶的倉庫,如果是頂層倉庫,可省
  • ?name:倉庫名
  • ?tag:標簽名;默認是latest版本

?

?

2.5 知名docker倉庫

  • ?https://hub.docker.com/
  • ?https://quay.io/

  例:docker pull quay.io/coreos/flannel:v0.10.0-amd64

?

3、將制作的鏡像上傳到自己的私有registry倉庫中

3.1 創建自己的docker registry

(1)可以在docker hub上創建;但注冊docker hub需要***;

?

?

(2)也可以在阿里云上https://cr.console.aliyun.com/cn-hangzhou/repositories創建自己的docker倉庫

① 創建鏡像倉庫

② 選擇創建本地倉庫

③ 點擊管理,會有操作指南,大家跟著操作即可,這里我就不再演示了

本文用的是docker hub

?

3.2 登錄docker倉庫

?
1 2 3 [root@along ~]# docker login -u alongedu Password: Login Succeeded

  

3.3 將鏡像打標簽,對應自己的registry

?
1 [root@along ~]# docker tag busybox:latest alongedu/httpd:v0.1

  

3.4 push上傳自己的鏡像

?
1 2 3 4 [root@along ~]# docker push alongedu/httpd:v0.1 The push refers to a repository [docker.io/alongedu/httpd] 23bc2b70b201: Pushed v0.1: digest: sha256:cbcde3595079b1f7a6b046e96e7547fe786d5c2c8eba678bc260161bc01b8dbe size: 527

  

3.5 在自己的私有倉庫驗證

?

轉載于:https://www.cnblogs.com/dengbingbing/p/10399251.html

總結

以上是生活随笔為你收集整理的Docker系列06—基于容器制作镜像并上传到Docker Registry的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。