Docker 創建鏡像

文章首發自個人網站:https://www.exception.site/docker/docker-create-image

本文中,您將學習 Docker 如何創建鏡像?Docker 創建鏡像主要有三種:

  1. 基于已有的鏡像創建;
  2. 基于 Dockerfile 來創建;
  3. 基于本地模板來導入;

我們將主要介紹常用的 1,2 兩種。

一、基于已有的鏡像創建

通過如下命令來創建:

docker container commit

支持的子命令如下:

  • -a, --author="": 作者信息;
  • -c, --change=[]: 可以在提交的時候執行 Dockerfile 指令,如 CMD、ENTRYPOINT、ENV、EXPOSE、LABEL、ONBUILD、USER、VOLUME、WORIR 等;
  • -m, --message="": 提交信息;
  • -p, --pause=true: 提交時,暫停容器運行。

接下來,基于本地已有的 Ubuntu 鏡像,創建一個新的鏡像:

Docker 創建鏡像

首先,讓我將它運行起來,并在其中創建一個 test.txt 文件:

Docker 創建鏡像

命令如下:

docker run -it docker.io/ubuntu:latest /bin/bash
root@a0a0c8cfec3a:/# touch test.txt
root@a0a0c8cfec3a:/# exit

創建完 test.txt 文件后,需要記住標注的容器 ID: a0a0c8cfec3a, 用它來提交一個新的鏡像(PS: 你也可以通過名稱來提交鏡像,這里只演示通過 ID 的方式)。

執行命令:

docker container commit -m "Added test.txt file" -a "Allen" a0a0c8cfec3a test:0.1

提交成功后,會返回新創建的鏡像 ID 信息,如下圖所示:

Docker 提交新創建的鏡像

再次查看本地鏡像信息,可以看到新創建的 test:0.1 鏡像了:

Docker 查看鏡像信息

二、基于 Dockerfile 來創建鏡像

通過 Dockerfile 的方式來創建鏡像,是最常見的一種方式了,也是比較推薦的方式。Dockerfile 是一個文本指令文件,它描述了是如何基于一個父鏡像,來創建一個新鏡像的過程。

下面讓我們來編寫一個簡單的 Dockerfile 文件,它描述了基于 Ubuntu 父鏡像,安裝 Python3 環境的鏡像:

FROM docker.io/ubuntu:latestLABEL version="1.0" maintainer="Allen <weiwosuo@github>"RUN apt-get update && \apt-get install -y python3 && \apt-get clean && \rm -rf /var/lib/apt/lists/*

創建完成后,通過這個 Dockerfile 文件,來構建新的鏡像,執行命令:

docker image build -t python:3 .

注意:命令的最后有個點,如果不加的話,會構建不成功 !

Docker 通過 Dockerfile 構建鏡像

編譯成功后,再次查看本地鏡像信息,就可以看到新構建的 python:3 鏡像了。

Docker 查看鏡像信息

三、總結

本文中,我們學習了 Docker 中如何基于本地已有的鏡像,來創建鏡像,以及如何通過 Dockerfile 來創建新的鏡像。祝您學習愉快!

轉載于:https://www.cnblogs.com/quanxiaoha/p/10623538.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/278070.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/278070.shtml
英文地址,請注明出處:http://en.pswp.cn/news/278070.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

hdfoo站點開發筆記

為了安全,也要兼顧編輯器切換管理 開發時不必管目錄名稱的事, 只是在部署的時候,才修改應用目錄和tp目錄的名字就行了. 為了提高tp的加載效率, 始終給app和tp以絕對路徑.就是以 realpath來定位 realpath返回的就是 一個絕對路徑, 在lx中是以 斜杠 根樹開始的. 參數可以是文件名…

論文致謝

這篇致謝語&#xff0c;是我論文的最后一節&#xff0c;也是我放在最后的最后寫的內容。之所以拖到最后&#xff0c;是因為我不知道該用怎么的方式來結束我的論文。我想&#xff0c;要結束的不只是文章&#xff0c;還是研究生生涯&#xff0c;是我在廈門大學三年來的一切&#…

使用Azure Pipelines來實現Teams App的CI

我在之前的文章里介紹了如何一步步配置CI/CD來部署Teams App( 之前的文章 )&#xff0c;隨著Azure DevOps的發展&#xff0c;微軟推出了Azure Pipelines。在這篇文章中&#xff0c;主要介紹什么是Azure Pipelines&#xff0c;以及如何使用Azure Pipelines來進行Teams App的構建…

004-React入門概述

一、概述 參考地址&#xff1a;https://reactjs.org/docs/try-react.html 1.1、本地快速體驗 <!DOCTYPE html> <html><head><meta charset"UTF-8" /><title>Hello World</title><script src"https://unpkg.com/react16/…

Python --- 卸載

python的卸載 1、? rpm -qa|grep python3.6|xargs rpm -ev --allmatches --nodeps ##強制刪除已安裝程序及其關聯 2、? whereis python3.6 |xargs rm -frv 允許你對輸出執行其他某些命令 3、? whereis python ##驗證刪除&#xff0c;返回無結果轉載于:https://www.…

開發Teams Tabs應用程序

什么是Teams Tabs Tabs是微軟Teams的一種十分有用的擴展方式。可以非常方便的和現有的網站或者網頁應用進行整合。具體的說明不在這里展開了。可以閱讀微軟官方的詳細說明&#xff1a; https://docs.microsoft.com/en-gb/microsoftteams/platform/concepts/tabs/tabs-overvie…

(轉)關于SimpleDateFormat安全的時間格式化線程安全問題

想必大家對SimpleDateFormat并不陌生。SimpleDateFormat 是 Java 中一個非常常用的類&#xff0c;該類用來對日期字符串進行解析和格式化輸出&#xff0c;但如果使用不小心會導致非常微妙和難以調試的問題&#xff0c;因為 DateFormat 和 SimpleDateFormat 類不都是線程安全的&…

IDEA開發工具的學習

1.設置jdk的版本 &#xff0c;快捷鍵&#xff1a;ctrl shirt alt s 打開項目的設置&#xff0c;選擇Project 進行 jdk版本的設置。 2.鼠標移到項目上&#xff0c;右鍵&#xff0c;Show in Explorer 定位到當前項目對應的文件夾中 3.每次關閉項目時&#xff0c;需要手動選擇Fi…

順利達成微軟HacktoberFest 2018

昨天收到郵件&#xff0c;我的HacktoberFest 2018獎品終于從美國寄出來了&#xff0c;不知道飄洋過海多久可以寄到。 今年的HacktoberFest 2018除了微軟官方博客的宣傳&#xff0c;連Channel 9的美女主播也在TWC上大肆宣傳。 活動內容是在整個10月份需要給微軟的開源代碼貢獻5…

【轉載】Swift屬性Property

本文系轉載 原文鏈接 Swift的屬性與Objective-C中的屬性是一樣的&#xff0c;不同的是Swift細化了屬性的類型&#xff0c;另外除了類之外&#xff0c;結構體和枚舉也可以有屬性。 Swift中有這么幾種屬性&#xff1a; 存儲屬性(Stored properties)&#xff1a;存儲實例的常量和變…

leetcode13

題目&#xff1a; 阿拉伯數字轉化為羅馬數字 解題思路&#xff1a; 設置兩個vector&#xff0c;一個放羅馬數字&#xff0c;一個放羅馬數字所對應的阿拉伯數字&#xff1b; 從給定數字num的最高位開始&#xff0c;逐位轉化&#xff1b;n-2; 如果該位數字是1-3&#xff0c;則在結…

更新!在線狀態和用戶的共存模式保持一致

根據用戶反饋&#xff0c;我們正在改進&#xff1a;當組織同時使用Microsoft Teams和Skype for Business時的用戶在線狀態。通過此更新&#xff0c;路由和在線狀態將完全保持一致。為確保路由能跟隨用戶的在線狀態&#xff0c;所以在線狀態的更新現在會基于用戶的共存模式。 如…

centos上安裝supervisor來管理dotnetcore等應用程序

supervisor 介紹&#xff1a;這是一款用python編寫的進程管理工具&#xff0c;可以守護他管理的所有進程&#xff0c;防止異常退出&#xff0c;以及提供一個可視化的web界面來手動管理&#xff0c;打開關閉重啟各種應用&#xff0c;界面如下&#xff1a;關于在centos上安裝supe…

MyBatis Generator 生成器把其他數據庫的同名表生成下來的問題

MyBatis Generator 生成器把其他數據庫的同名表生成下來的問題2018年10月23日 20:47:48 莫彈彈 閱讀數&#xff1a;603MyBatis Generator : Table Configuration scheme.table matched more than one table在使用生成器生成代碼的時候遇到了這個錯誤, 現象就是某個類中出來了數…

新增功能!Trello個人應用程序登陸 Microsoft Teams

從初創企業到《財富》500強公司, Trello是團隊在任何項目上進行合作的視覺方式。在Microsoft Teams中, 我們發現圍繞項目進行大量對話和協作的方式。因此, 一個首屈一指的項目管理工具應該與團隊協作的終極樞紐進行合作, 以便讓員工更好地一起工作。 如你所知, 我們已經為Micr…

Linux bc 命令簡單學習

1. bash里面能夠實現比較簡單的四則運算 echo $((10*20)) 注意是 雙括號 $ 地址符號. 2. 但是比較復雜的 可能就難以為繼了 比如不支持精度 3. 所以這里面需要使用 bc 命令來執行相關的操作. man 內容: usage: bc [options] [file ...] -h --help print this usage and exit…

深入理解AbstractQueuedSynchronizer(AQS)

1. AQS簡介 在上一篇文章中我們對lock和AbstractQueuedSynchronizer(AQS)有了初步的認識。在同步組件的實現中&#xff0c;AQS是核心部分&#xff0c;同步組件的實現者通過使用AQS提供的模板方法實現同步組件語義&#xff0c;AQS則實現了對同步狀態的管理&#xff0c;以及對阻塞…

終于收到HacktoberFest的獎品啦

去年10月份給微軟repo提交了5個PR&#xff0c;達成了HacktoberFest 2018&#xff0c;今天終于收到了從美國到澳洲&#xff0c;飄洋過海&#xff0c;姍姍來遲的T-shirt&#xff0c;不過大小正好。算是新年禮物了&#xff0c;哈哈

三、SpringBoot-application.properties配置文件和application.yml配置文件

其實SpringBoot的配置文件有.properties和.yml兩種形式&#xff0c;兩種配置文件的效果類似&#xff0c;只不過是格式不同而已&#xff0c;孩兒們可以根據下面這幾種張截圖&#xff0c;通過對比端口號的配置&#xff0c;以及連接SQLServer數據庫的配置的書寫格式來自己體會兩者…

Teams中的快捷鍵讓溝通協作更加高效

使用Teams的快捷鍵可以幫助我們提高日常溝通協作的效率。 一、快捷鍵分類 1.常規2.導航3.聊天輸入界面4.團隊和會議 1.常規 功能桌面版本快捷鍵WebApp版本快捷鍵搜索CtrlECtrlE顯示命令CtrlSlash (/)CtrlSlash (/)gotoCtrlGCtrlShiftG開始新聊天CtrlNAltN打開設置CtrlComma …