Docker系列06—基於容器製作鏡像並上傳到Docker Registry

来源:https://www.cnblogs.com/along21/archive/2019/01/11/10253725.html
-Advertisement-
Play Games

本文收錄在容器技術學習系列文章總目錄 1、製作鏡像 1.1 鏡像的生成途徑 基於容器製作 dockerfile,docker build 本篇主要詳細講解基於容器製作鏡像;基於dockerfile 製作鏡像在後一張文章Docker系列07—Dockerfile 詳解中詳細介紹; 1.2 基於容器製作 ...


本文收錄在容器技術學習系列文章總目錄

1、製作鏡像

1.1 鏡像的生成途徑

  • 基於容器製作 
  • dockerfiledocker build

  本篇主要詳細講解基於容器製作鏡像;基於dockerfile 製作鏡像在後一張文Docker系列07—Dockerfile 詳解詳細介紹;

 

1.2 基於容器製作

 docker commit

1)格式

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

 

2Options 參數

  •  -a,作者(例如,“along <[email protected]>”
  •  -c,修改Dockerfile指令應用於創建的鏡像
  •  -m,提交消息
  •  -p,在提交期間暫停容器(預設為true

 

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

先運行一個容器

[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容器基礎上,製作新鏡像

[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

  

給新製作的鏡像打標簽

[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

  

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

[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

  

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

[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創建成功的

[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服務

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

註解:busybox httpd 語法

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

 

運行新的鏡像v0.2

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

  

驗證成功

[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組成(repositoryindex

(1)Repository

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

 

(2)Index

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

 

2.4 拉取倉庫鏡像的格式

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

 

 

2.5 知名docker倉庫

  例: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倉庫

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

  

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

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

  

3.4 push上傳自己的鏡像

[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 在自己的私有倉庫驗證

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 原文鏈接:http://www.oschina.net/translate/20-advanced-commands-for-middle-level-linux-users?from=20130811 ...
  • iostat(1)是在Linux系統上查看I/O性能最基本的工具,然而對於那些熟悉其它UNIX系統的人來說它是很容易被誤讀的。比如在HP-UX上 avserv(相當於Linux上的 svctm)是最重要的I/O指標,反映了硬碟設備的性能,它是指I/O請求從SCSI層發出、到I/O完成之後返回SCSI ...
  • 內核很多重要子系統均通過proc文件的方式,將自身的一些統計信息輸出,方便最終用戶查看各子系統的運行狀態,這些統計信息被稱為metrics。 直接查看metrics並不能獲取到有用的信息,一般都是由特定的應用程式(htop/sar/iostat等)每隔一段時間讀取相關metrics,併進行相應計算, ...
  • 狂神聲明 : 文章均為自己的學習筆記 , 轉載一定註明出處 ; 編輯不易 , 防君子不防小人~共勉 ! linux學習:【第1篇】初識Linux及安裝 寫在前面 學習之初看了一段文章,很有感觸,所以也想把這些分享給大家,認真讀完,明確自己的方向 很多同學接觸Linux不多,對Linux平臺的開發更是 ...
  • 執行如下命令: 儘量按以下順序執行,否則可能會發生意向不到的問題(坑) 1.更新數據源 2.更新安裝包 3.安裝lxde桌面 4.安裝xrdp 5.開放伺服器3389埠 6.Windows遠程桌面連接,輸入root賬號密碼即可連接: 7.進入lxde安裝語言包 8.安裝完後重啟系統或者直接在命令行 ...
  • 一 Kubernetes概述 Kubernetes是一個全新的基於容器技術的分散式架構領先方案。Kubernetes(k8s)是Google開源的容器集群管理系統(谷歌內部:Borg)。在Docker技術的基礎上,為容器化的應用提供部署運行、資源調度、服務發現和動態伸縮等一系列完整功能,提高了大規模 ...
  • 使用hostname 進行修改。 創建用戶,修改密碼 ...
  • 一、背景 在平時開發過程當中需要針對 MySQL 資料庫進行監控,這裡我們可以使用 Grafana 和 Prometheus 來實現監控功能。Grafana 是一款功能強大的儀錶盤面板,支持多種數據源,可以自定義圖表進行監控。而 Prometheus 就是 Grafana 支持的數據源之一,Prom ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...