導航:首頁 > 文件處理 > docker壓縮

docker壓縮

發布時間:2023-05-16 15:15:52

『壹』 06-Docker資源限制

默認情況下,容器沒有資源限制,可以使用主機內核調度程序允許的盡可能多的給定資源,Docker 提供了控制容器可以限制容器使用多少內存或CPU 的方法,設置 docker run 命令的運行時配置標志。
其中許多功能都要求宿主機的內核支持linux 功能,要檢查支持,可以使用 docker info 命令,如果內核中禁用了某項功能,可能會在輸出結尾處看到警告,如下所示:

對於Linux 主機,如果沒有足夠的內存來執行其他重要的系統任務,將會拋出OOM (Out of Memory Exception,內存溢出、內存泄漏、內存異常), 隨後系統會開始殺死進程以釋放內存,凡是運行在宿主機的進程都有可能被kill,包括Dockerd和其它的應用程序,如果重要的系統進程被Kill,會導致和該進程相關的服務全部宕機。

linux 會為每個進程算一個分數,最終它會將分數最高的進程kill。

Docker 可以強制執行硬性內存限制,即只允許容器使用給定的內存大小。
Docker 也可以執行非硬性內存限制,即容器可以使用盡可能多的內存,除非內核檢測到主機上的內存不夠用了。
這些選項中的大多數採用正整數,後跟 b、k、m、g 後綴,螞姿棚以表示位元組、千位元組、兆位元組或千兆位元組。

--memory-swap , 只有在設置了 --memory 後才會有意義。使用Swap,可以讓容器將超出限制部分的內存置換到磁碟上,

不同悶則的 --memory-swap 設置會產生不同的效果:

假如一個容器未做內存使用限制,則該容器可以利用到系統內存最大空間,默認創建的容器沒有做內存資源冊散限制。

啟動兩個工作進程,每個工作進程最大允許使用內存256M,且宿主機不限制當前容器最大內存:

接著宿主機限制容器最大內存使用:

宿主機cgroup 驗證:

--memory-reservation

宿主機cgroup 驗證:

一個宿主機,有幾十個核的CPU,但是宿主機上可以同時運行成百上千個不同的進程用以處理不同的任務,多進程共用一個CPU 的核心依賴計數就是為可壓縮資源,即一個核心的CPU 可以通過調度而運行多個進程,但是同一個單位時間內只能有一個進程在CPU 上運行,那麼這么多的進程怎麼在CPU 上執行和調度的呢?

Linux kernel 進程的調度基於CFS(Completely Fair Scheler),完全公平調度

默認情況下,每個容器對主機CPU 周期的訪問許可權是不受限制的,但是我們可以設置各種約束來限制給定容器訪問主機的CPU周期,大多數用戶使用的是默認的CFS 調度方式,在Docker 1.13 及更高版本中,還可以配置實時優先順序。
參數

對於一台2核的伺服器,如果不做限制,容器會把宿主機的CPU 全部占完:

在宿主機使用 dokcer stats 命令查看容器運行狀態:

在宿主機查看CPU 限制參數:

宿主機CPU 利用率:

只給容器分配最多1核宿主機CPU 利用率

宿主機cgroup 驗證:

當前容器狀態:

宿主機CPU利用率:

容器運行狀態:

宿主機CPU利用率:

啟動兩個容器,stress1 的 --cpu-shares 值為1000 , stress2 的 --cpu-shares 為500,觀察最終效果, --cpu-shares 值為1000 的 stress1的CPU 利用率基本是 --cpu-shares 為500 的 stress1的 2 倍:

驗證容器運行狀態:

宿主機cgroups驗證:

動態修改CPU shares的值
--cpu-shares 的值可以在宿主機cgroup 動態修改,修改完成後立即生效,其值可以調大也可以減小。

驗證修改後的容器運行狀態:

『貳』 詳解Docker——你需要知道的Docker進階知識五

Dockerfile 是一個文本文件,其中包含了構建 Docker 鏡像需要執行的命令序列。使用 docker build 命令從 Dockerfile 中讀取指令來構建鏡像。

構建鏡像時,該過程的第一件事是將 Dockerfile 文件所在目錄下的所有內容發送給 Docker 守護進程。所以大多數情況下,最好創建一個新的目錄,在其中保存 Dockerfile ,以及構建鏡像所需的其它文件。Dockerfile 文件所在目錄也被稱為構建上下文(context)。

使用 FROM 指令指定一個基礎鏡像,後續指令將在此鏡像基礎上運行:

在 Dockerfile 中可以指定一個用戶,後續的 RUN , CMD 以及 ENTRYPOINT 指令都會使用該用戶身份去執行,該用戶必須已存在。

除了指定用戶之外,還可以使用 WORKDIR 指定當前工作目錄(CWD), RUN , CMD , COPY , ADD 指令將在指定的工作目錄中執行。

RUN 指令用於執行命令,該指令有兩種形式:

例如我們執行更新命令:

CMD 的使用方式跟 RUN 類似,不過在一個 Dockerfile 文件中只能有一個 CMD 指令,如果有多個,則只有最後一個會生效。該指令指定了啟動容器時要執行的命令,例如:

可以在 docker run 時指定命令來覆蓋默認的 CMD 命令,比如 docker run image echo"hello shiyanlou" 。

CMD 指令還有一種特殊用法。在 Dockerfile 中,如果使用 ENTRYPOINT 指令指定了入口命令,則 CMD 指令的內容會作為 ENTRYPOINT 指令的參數:

ENTRYPOINT 指令會覆蓋 CMD 指令作為容器運行時的默認指令,並且該指令不會被 docker run 時指定的指令覆蓋,如下示例:

上述文件構建出來的鏡像,使用 docker run image 等同於 docker run image ls-a-l 。使用 docker run image-i-s 等同於 docker run image ls-a-i-s 。即 CMD 指令的值會被當作 ENTRYPOINT 指令的參數附加到 ENTRYPOINT 指令的後面,只有 CMD 指令可以被覆蓋。

COPY 和 ADD 都用於將構建上下文中的文件,目錄等復制到鏡像中。使用方式如下:

`` 可以指定多個,但是其路徑不能超出構建上下文范圍,即必須在 Dockerfile 同級或子目錄中。

不需要預先存在,不存在時會自動創建,如果使用相對路徑,則 為相對於工作目錄的路徑。塌陪

COPY 和 ADD 的不同之處在於,ADD 可伏衫或以添加遠程文件,並且 `` 可以是 gzip 或 tar 等格式的壓縮文件,添加時會自動進行解壓

ENV 指令用於設置環境變數:

VOLUME 指令指定要創建的掛載路徑,在容器運行時,將為每個掛載路徑創建一個匿名卷並掛載上去:

上述指令將會在容器運行時,創建兩個匿名卷,並分別掛載到容器中的 /data1 和 /data2 路徑。

學習了上面這些常見的 Dockerfile 指令之後,可以使用這些指令來構建一個鏡像。如下所示,構建一個提供 ssh 服務的鏡像:

構建鏡像

查看鏡像

啟動容器

查看已經啟動的容器

測試遠程登錄

Compose 是運行由多個容器組成的 Docker 應用的工具,使用 Compose 可以一次啟動一組有關聯的服務,每個服務由來自同一鏡像的單個或多個容器組成。

在復雜應用中,應用一般由多個服務(service)組成,例如一個網站後台通常包含 Web 服務、資料庫服務、緩存缺伍服務、消息隊列服務等。

使用 Compose 的步驟如下:

目前有三種版本的 Compose 文件格式:

下載 docker-compose-Linux-x86_64

下載成功後,為了方便使用,可以將其添加到 PATH 路徑下

執行完成後,就能夠在終端下直接使用 docker-compose 命令了:

接下來我們將創建一個 Web 應用,該應用包含兩個容器:

項目目錄結構如下:

首先編輯 app/web/web.py 文件,寫入下面的內容:

上述代碼創建了一個簡單的 Web 應用。該應用會連接 redis 服務,在訪問 / 頁面時,自動將變數 number 加 1。

編輯 app/web/requirements.txt 文件,輸入如下內容:

requirements.txt 文件存放了 Web 應用依賴的第三方庫包的名稱和版本信息。

編輯 app/web/Dockerfile 文件,添加如下內容

上述 Dockerfile 定義了 Web 應用鏡像,該鏡像基於 python:2.7 基礎鏡像,在其基礎上安裝了應用依賴的庫包,並通過 CMD 指令指定了應用的啟動命令。

編輯 app/docker-compose.yml 文件:

該 docker-compose.yml 文件定義了兩個服務,分別為 web 和 redis 服務,並且配置了 web 服務的埠映射和掛載目錄。 depends_on 定義了依賴關系,被依賴的服會先啟動。

進入 app 目錄,執行 docker-compose up 命令來啟動應用:

啟動成功後,就可以打開網址 127.0.0.1:8001 來訪問 Web 應用了。

另外一些命令:

『叄』 容器docker的作用是什麼 這四個好處你知道幾個

1、作用:提到容器技術,我們就不可避免的會想到docker。Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的鏡像中。在用Docker的情況下,大家可以直接把項目發布在DocKer容器上面進行測試,當項目需要正式上線的時候,直接可以把做好的DocKer 鏡像部署上大族早去就行了,如果測試的好,就不必擔心項目上正式版本的時候再出現什麼問題。

2、好處:

(1)輕量、消耗少:使用Docker能合並多個服務以降低費用,不多的操作系統內存占穗腔用,跨實例共享多個空閑的內存,這些技術讓Docker能以更加緊密的資源提供更有效的服務合並。基於LXC輕量級特點,啟動快,而且docker能夠只滾雀載入每個container變化的部分,這樣資源佔用小,在單機環境下與KVM之類的虛擬化方案相比,能夠更加快速和佔用更少資源。

(2)高利用率與隔離:容器服務沒有管理程序的額外開銷,與底層共享操作系統,性能更加優良,系統負載更低,在同等條件下可以運行更多的實例,充分利用系統資源。同時,容器擁有不錯的資源隔離與限制能力,可以精確地對應用分配CPU、內存等資源,保證了應用間不會相互影響。

(3)快速部署與微服務:Docker通過創建流程的容器,不必重新啟動操作系統,幾秒內能關閉,你可以在數據中心創建或銷毀資源,不用擔心額外消耗。Docker 提供輕量的虛擬化,你能夠從Docker獲得一個額外抽象層,能夠在單台機器上運行多個Docker微容器,而每個微容器里都有一個微服務或獨立應用。

(4)標准化環境和控制:基於容器提供的環境一致性和標准化,你可以使用Gt等工具對容器鏡像進行版本控制。相比基於代碼的版本控制來說,還能夠對整個應用運行環境實現版本控制,一旦出現故障可以快速回滾。相比虛擬機鏡像,容器壓縮和備份速度更快,鏡像啟動也像啟動一個普通進程一樣快速。

『肆』 docker怎麼把tar壓縮包跑成容器

啟動目標鏡像並查看,docker ps

將digapiss/axis鏡穗敗告像下載下來

默認保存在猜明當前路徑下

我們將保存的鏡像文件進行恢復,首先先將我們一開始有的鏡像刪除,如果是別的機器就不要刪除。

1. 先將運行的容器關閉,然後查看枯塵鏡像,docker images,接著刪除鏡像

我們將保存的鏡像文件進行恢復,首先先將我們一開始有的鏡像刪除,如果是別的機器就不要刪除

已經刪除了,導入保存的鏡像

查看是否倒入成功 ,可見已經成功倒入

啟動倒入的鏡像

可見,容器已經啟動

『伍』 docker save怎麼解壓縮

# docker export [OPTIONS] CONTAINER 操作對象是容器。與之相橘搜對的命令是docker import # docker save [OPTIONS] IMAGE [IMAGE...] 操作對象是鏡像。與之相對的命絕裂令是docker load 導出後再導入(export-import)的會丟失所有的歷圓宏歷史, 而保存後再加...

『陸』 超值一篇分享,Docker:從入門到實戰過程全記錄

作者 | 天元浪子

來源 | CSDN博客

想要真正理解Docker,就不得不從虛擬化技術的發展歷程說起。普遍認為虛擬化技術經歷了物理機時代、虛擬機時代,目前已經進入到了容器化時代。可以說,Docker是虛擬化技術不斷發展的必然結果。

那麼,什麼是容器呢?容器和虛擬機有什麼不同?Docker和容器又是什麼關系呢?搞明白這幾個問題,Docker的概念就清晰了。

1.1 虛擬機和容器

藉助於VMWare等軟體,可以在一台計算機上創建多個虛擬機,每個虛擬機都擁有獨立的操作系統,可以各自獨立的運行程序。這種分身術雖然隔離度高(操作系統級),使用方便(類似物理機),但佔用存儲資源多(GB級)、啟動速度慢(分鍾級)的缺點也是顯而易見的。

相較於虛擬機,容器(Container)是一種輕量型的虛擬化技術,它虛擬的是最簡運行環境(類似於沙盒)而非操作系統,啟動速度快(秒級)、佔用存儲資源少(KB級或MB級),容器間隔離度為進程級。在一台計算機上可以運行上千個容器,這是容器技術對虛擬機的碾壓式優勢。

1.2 容器、鏡像和Docker

Docker是一個開源的應用容器引擎,可以創建容器以及基於容器運行的程序。Docker可以讓開發者打包他們的應用和依賴包到一個輕量級、可移植的容器中,然後發布到任何流行的Linux機器上,也可以實現虛擬化。

聽起來很簡單,但是在Docker和容器之間,還隱藏著一個鏡像的概念,令初學者頗感困惑。本質上,Docker鏡像是一個特殊的文件系統,它提供容器運行時所需的程序、庫、資源、配置等文件。Docker鏡像類似於一個py文件,它需要Docker的運行時(類似於Python解釋器)運行。鏡像被運行時,即創建了一個鏡像的實例,一個實例就是一個容器。

1.3 Docker 和 k8s

作為容器引擎,Docker為容器化的應用程序提供了開放的標准,使得開發者可以用管理應用程序的方式來管理基礎架構,實現快速交付、測試和部署代碼。隨著容器的大量使用,又產生了如何協調、調度和管理容器的問題,Docker的容器編排應運而生。

k8s是Google開源的一個容器編排引擎,它支持自動化部署、大規模可伸縮、應用容器化管理,是一個開源的,用於管理雲平台中多個主機上的容器化的應用,k8s的目標是讓部署容器化的應用簡單並且高效,k8s提供了應用部署、規劃、更新、維護的一種機制。

Docker和k8sr都是以containerd(容器化標准)作為運行時,因此使用Docker創建的鏡像完全可以在k8s中無障礙的使用。


2.1 在ubuntu中安裝

在linux系統中安裝Docker非常簡單,官方為我們提供了一鍵安裝腳本。這個方法也適用於Debian或CentOS等發行版。

安裝過程如果出現超時,不要灰心,多試幾次,總會成功的。安裝完成後,Docker只能被root用戶使用,可以使用下面的命令取消許可權限制:

然後,重啟docker服務:

最後,關閉當前的命令行,重新打開新的命令行就可以了。

順便提一下,如果在CentOS下安裝,可能會出現一堆類似於下面的錯誤:

這是由於docker和Podman沖突造成的,需要先卸載Podman:

2.2 在Win10中安裝

Docker的運行,依賴linux的環境,官方提供了Docker Desktop for Windows,但是它需要安裝Hyper-V,Hyper-V是微軟開發的虛擬機,類似於 VMWare 或 VirtualBox,僅適用於 Windows 10。這個虛擬機一旦啟用,QEMU、VirtualBox 或 VMWare Workstation 15 及以下版本將無法使用!如果你必須在電腦上使用其他虛擬機(例如開發 Android 應用必須使用的模擬器),請不要使用 Hyper-V!

我的電腦是win10家庭版,不能直接安裝hyper-v,需要將下面的命令保存到cmd文件中:

然後在cmd文件上點擊右鍵,選擇使用管理員運行。執行完畢後會重啟,在重啟的過程中進行安裝。

2.3 Hello world

docker服務啟動的情況下,運行下面的命令:

此命令的含義是:

第一次運行時,因為本地沒有ubuntu:20.04鏡像,docker會自動從鏡像伺服器下載。下載過程可能需要多試幾次,只要成功一次,以後執行就不再需要下載了。

docker官方還提供了一個hello-world鏡像,可以直接運行:

此命令省略了鏡像版本和運行參數,docker使用latest作為版本,即最新版本。

從hello world的例子中,也可以體驗到,docker實例的運行是非常快的。


docker官方的鏡像庫比較慢,在進行鏡像操作之前,需要將鏡像源設置為國內的站點。

新建文件/etc/docker/daemon.json,輸入如下內容:

然後重啟docker的服務:

3.1 列出本地所有鏡像

執行命令 docker images 可以查看

當前我本地只有剛才安裝的兩個鏡像。

3.2 從鏡像庫中查找鏡像

執行命令 docker search 鏡像名稱可以從docker鏡像庫中查找鏡像。

最好選擇官方(OFFICIAL)的鏡像,這樣的鏡像最穩定一些。

3.3 下載新的鏡像

執行命令docker pull 鏡像名稱:版本號即可下載新的鏡像。

鏡像下載後,就可以使用鏡像來創建容器了。


4.1 啟動容器

執行命令docker run即可啟動容器,也就是創建某個鏡像的實例。docker run命令非常復雜,可以先執行一個docker run --help來查看幫助:

比如我們要執行python的shell,需要添加-it參數,即:docker run -it python:3.8

4.2 將宿主機的文件掛載到容器

docker容器與宿主機是隔離的,要想讓容器內的程序能訪問宿主機上的文件,需要通過-v參數將宿主機的文件掛載到容器中。

比如我們在宿主機上有一個hello.py,可以列印hello,想要在python容器中執行,就需要進行掛載。-v後還需要接兩個參數,分別是宿主機的目錄和容器內的目錄,兩者使用:分隔,路徑必須都是絕對路徑。

我的hello.py保存在主目錄的/docker_test目錄中,將這個目錄掛載到容器的/docker_test目錄,然後在容器內執行python /docker_test/hello.py:

4.3 容器的埠映射

我們修改一下hello.py,創建一個socket服務端,並監聽5000埠,當有客戶端連接時,列印客戶端的地址,先客戶端發送hello,然後關閉連接:

在容器內執行:

接下來,嘗試用telnet命令連接,結果卻是失敗的。原因是,127.0.0.1是宿主機的ip地址,5000是容器的埠,這與我們的習慣稍微有些不同。事實上,docker的容器是非常輕量的,它並沒有自己的網路,要想訪問容器的埠,需要進行埠映射,將容器的某埠映射到宿主機的埠,客戶端連接時,只要與宿主機的埠進行連接就可以了。

需要注意的是,上面的代碼創建的伺服器,無論如何也不可能被客戶端連接,因為代碼中綁定了127.0.0.1的ip,在容器中運行時,需要綁定所有ip,即0.0.0.0。

然後,再使用-p參數,-p還需要三個參數,即宿主機的ip地址、宿主機的埠、容器的埠,三者之間使用:分隔。一般的,可以將宿主機的ip地址省略,只寫宿主機的埠:容器的埠即可。

這樣,就將容器的5000埠映射到了宿主機的5001埠,使用:

即可與容器中的伺服器進行連接。

4.4 容器管理

上面的服務運行之後,可以使用docker ps命令,查看運行中的容器:

顯示的內容有下面幾列:

要想結束容器,可以使用docker kill 容器ID命令。


一般而言,當我們的程序開發完成後,會連同程序文件與運行環境一起製作成一個新的鏡像。

要製作鏡像,需要編寫Dockerfile。DockeFile由多個命令組成,常用的命令有:

注意,Docker鏡像中有一個層的概念,每執行一個RUN命令,就會創建一個層,層過多會導致鏡像文件體積增大。盡量在RUN命令中使用&&連接多條shell命令,減少RUN命令的個數,可以有效減小鏡像文件的體積。

5.1 自製顯示文本文件內容鏡像

編寫cat.py,接收一個文件名,由python讀取文件並顯示文件的內容:

這個例子比較簡單,縮寫Dockerfile如下:

這個Dockerfile的含義是:

需要說明的是,ENTRYPOINT有兩種寫法:

這里採用第二種寫法,是因為我們要在外部給容器傳遞參數。執行命令編譯Docker鏡像:

這個命令中,-t的含義是目標,即生成的鏡像名為hello,版本號為1.0,別忘了最後那個.,這叫到上下文路徑,是指 docker 在構建鏡像,有時候想要使用到本機的文件(比如復制),docker build 命令得知這個路徑後,會將路徑下的所有內容打包。

這樣,我們的第一個鏡像就製作完成了,使用下面的命令執行它:

即可看到~/docker_test/cat/files/test.txt的內容。

5.2 自製web伺服器鏡像

我們使用tornado開發一個網站,而python的官方鏡像是沒有tornado庫的,這就需要在製作鏡像時進行安裝。

測試的ws.py如下:

編寫Dockerfile文件如下:

在此我們驗證一下CMD與ENTRYPOINT的區別。在Dockerfile所在有目錄下執行如下命令:

執行完成後,再使用docker images使用就可以看到生成的鏡像了,然後使用下面的命令運行:

在瀏覽器中輸入宿主機的ip和8000埠,就可以看到頁面了。

在這個例子中,我使用的運行命令是CMD,如果在docker run中指定的其他的命令,此命令就不會被執行,如:

此時,容器中被執行的是python命令,而不是我們的服務。在更多情況下,我們希望在docker run命令中為我們的服務傳參,而不是覆蓋執行命令,那麼,我們應該使用ENTRYPOINT而不是CMD:

上面這種寫法,是不支持傳遞參數的,ENTRYPOINT和CMD還支持另一種寫法:

使用這種寫法,docker run命令中的參數才可以傳遞給hello.py:

這個命令中,--port=9000被作為參數傳遞到hello.py中,因此容器內的埠就成了9000。

在生產環境中運行時,不會使用-it選項,而是使用-d選項,讓容器在後台運行:

這種方式下,即使當前的控制台被關閉,該容器也不會停止。

5.3 自製apscheler服務鏡像

接下來,製作一個使用apscheler編寫的服務鏡像,代碼如下:

Dockerfile也是信手拈來:

生成鏡像:

應該可以運行了,文件復制需要兩個目錄,在運行時,可以使用兩次-v來掛載不同的目錄:


前面用到的官方python鏡像大小足足882MB,在這個基礎上,再安裝用到的第三方庫,添加項目需要的圖片等資源,大小很容易就超過1個G,這么大的鏡像,網路傳給客戶非常的不方便,因此,減小鏡像的體積是非常必要的工作。


docker hub上有個一python:3.8-alpine鏡像,大小隻有44.5MB。之所以小,是因為alpine是一個採用了busybox架構的操作系統,一般用於嵌入式應用。我嘗試使用這個鏡像,發現安裝一般的庫還好,但如果想安裝numpy等就會困難重重,甚至網上都找不到解決方案。

還是很回到基本的路線上來,主流的操作系統鏡像,ubuntu的大小為72.9MB,centos的大小為209MB——這也算是我更喜歡使用ubuntu的一個重要原因吧!使用ubuntu作為基礎鏡像,安裝python後的大小為139MB,再安裝pip後的大小一下子上升到了407MB,要是再安裝點其他東西,很容易就趕上或超過python官方鏡像的大小了。

看來,尋常路線是很難壓縮鏡像文件體積了。幸好,還有一條曲線救國的路可走,這就是多階段構建法。

多階段構建的思想其實很簡單,先構建一個大而全的鏡像,然後只把鏡像中有用的部分拿出來,放在一個新的鏡像里。在我們的場景下,pip只在構建鏡像的過程中需要,而對運行我們的程序卻一點用處也沒有。我們只需要安裝pip,再用pip安裝第三方庫,然後將第三方庫從這個鏡像中復制到一個只有python,沒有pip的鏡像中,這樣,pip佔用的268MB空間就可以被節省出來了。

1、在ubuntu鏡像的基礎上安裝python:

然後運行:

這樣,就生成了python:3.8-ubuntu鏡像。

2、在python:3.8-ubuntu的基礎上安裝pip:

然後運行:

這樣,就生成了python:3.8-ubuntu-pip鏡像。

3、多階段構建目標鏡像:

這個dockerfile需要解釋一下了,因為它有兩個FROM命令。

第一個是以python:3.8-ubuntu-pip鏡像為基礎,安裝numpy,當然,在實際應用中,把所有用到的第三方庫出寫在這里。

第二個FROM是以FROM python:3.8-ubuntu鏡像為基礎,將第三方庫統統復制過來,COPY命令後的–from=0的意思是從第0階段進行復制。實際應用中再從上下文中復製程序代碼,添加需要的ENTRYPOINT等。

最後,再運行:

這然,用於我們項目的鏡像就做好了。比使用官方python鏡像構建的版本,小了大約750MB。


到此,我們的鏡像已經製作好了,可是,鏡像文件在哪,如何在生產環境下運行呢?

剛才使用docker images命令時,已經看到了生成的鏡像:

我們可以使用docker save命令將鏡像保存到指定的文件中,保存的文件是一個.tar格式的壓縮文件:

將hello.tar復制到生產環境的機器上,然後執行導入命令:

就可以使用了。

閱讀全文

與docker壓縮相關的資料

熱點內容
java修改ip 瀏覽:149
php不需要編譯嗎 瀏覽:134
特斯拉新車如何用app控制 瀏覽:185
文檔拖到文件夾就不見了 瀏覽:814
標致308壓縮比是多少 瀏覽:749
伺服器和備用伺服器地址 瀏覽:926
程序員加班跳槽 瀏覽:706
青年員工在工作中如何化解壓力 瀏覽:602
包子解壓神器怎麼玩才爽 瀏覽:733
聯想加密電腦怎麼做系統 瀏覽:881
解壓最近的壓力 瀏覽:709
如何知道王牌戰爭新出來的伺服器 瀏覽:591
程序員建的房子 瀏覽:419
navicatlinux破解版 瀏覽:454
找個輔警或者程序員 瀏覽:452
軍團td預言命令 瀏覽:114
營指揮員下達作戰命令 瀏覽:258
exe打開指定文件夾 瀏覽:266
pdf裡面怎麼去水印 瀏覽:847
appleid賬號加密碼 瀏覽:222