Docker 建立本地映象

2021-10-01 23:43:43 字數 2455 閱讀 1001

所謂的容器實際上就是父映象的基礎上建立了乙個可讀寫的檔案系統層級,所有的修改操作都在這個檔案層級上進行,而父映象並未受影響。

建立本地映象有兩種不同的方式,commit和dockerfile

根據本地映象建立乙個容器

命令解釋:

我這裡通過virtualbox 設定了自動掛載我win的d:\docker\dockershare詳細可以檢視docker——virtualbox設定docker

首先執行docker images檢視本地映象。

根據本地映象 nginx 建立乙個名為 nginx 的容器,並啟動。

將宿主機中的乙個名為index.html的檔案拷貝到容器中。

訪問容器,發現改變已經生效。

接下來在重新建立乙個容器,名為nginx2,並啟動。

訪問nginx2容器,發現其預設頁面並未發生改變。

根據剛剛建立的第乙個容器,建立乙個本地映象,如下:

命令解釋

-m 是對建立該映象的乙個簡單描述。

-author 表示該映象的作者。

b1d04bcf4f74 表示建立映象所依據容器的id。

jacob_yu/nignx 表示倉庫名, jacob_yu 是命名空間,nginx 是映象名。

v1 表示映象的tag

建立完成後,通過docker images命令檢視映象可以看到剛剛建立的映象

通過剛剛建立映象執行容器,發現nginx預設首頁已經更改。

dockerfile就是乙個普通的文字檔案,其內包含了一條條指令,每條指令都會構建一層。先來看乙個簡單的例子。

建立乙個dockerfile 和 hello.html:touch dockerfile

編輯dockerfile:vi dockerfile

命令解釋

from nginx 表示該映象的構建,以已有的nginx映象為基礎,在該映象基礎上構建。

maintainer 用來宣告建立映象的作者資訊以及郵箱資訊

run 指令用來修改映象。該指令可以用來安裝程式、安裝庫以及配置應用程式等,乙個run指令會在當前映象的基礎上建立乙個新的映象層,接下來的指令將在這個新的映象層上執行,run語句有兩種不同的形式:shell和exec格式。本案例採用的是shell格式,shell格式就像linux命令一樣,exec格式則是乙個json陣列,將命令放在陣列中即可。在使用run命令時,適當的時候可以將多個run命令合併成乙個,以避免建立映象時建立過多的層。

copy語句則是將映象上下文中的hello.html檔案拷貝到映象中。

檔案建立完,執行如下命令進行構建:

命令解釋

-t 用來指定映象的命名空間,倉庫名以及tag等資訊

最後面的 . 是用來指定映象構建的上下文

小貼士docker採用了c/s構架,分為docker客戶端(docker可執行程式)與docker守護程序,docker客戶端通過命令列和api形式與docker守護程序通訊,docker守護程序則提供docker服務。因此,我們操作的各種docker命令實際上都是由docker客戶端傳送到docker守護程序上去執行的。我們在構建乙個映象時,不可避免的需要將一些本地檔案拷貝到映象中去,例如上文提到的copy命令,使用者在構建映象時需要制定構建映象的上下文路徑(前文中的 . ),docker build 獲得這個路徑後,會將改路徑下的所有內容打包,然後上傳給docker引擎。

映象構建成功後,可以通過docker images命令檢視,如下:

然後建立並啟動容器,就可以看到之前的建立映象時的預設index.html和copy的hello.html都生效了

建立使用本地Docker映象倉庫

首先在伺服器端拉取registry映象 docker pull registry啟動 docker run itd v data registry var lib registry p 5000 5000 restart always name registry registry latest這裡映...

Docker建立本地映象實現方法解析

所謂的容器程式設計客棧實際上是在父映象的基礎上建立了乙個可etbmw讀寫的檔案層級,所有的修改操作都在這個檔案層級上進行,而父映象並未受影響,如果讀者需要根據這種修改建立乙個新的本地映象,有兩種不同的方式,本文先來看第一種方式 commit。建立容器 首先,根據本地映象執行乙個容器,如下 命令解釋 ...

建立本地映象

通過前面文章閱讀,讀者已經了解到所謂的容器實際上是在父映象的基礎上建立了乙個可讀寫的檔案層級,所有的修改操作都在這個檔案層級上進行,而父映象並未受影響,如果讀者需要根據這種修改建立乙個新的本地映象,有兩種不同的方式,本文先來看第一種方式 commit。首先,根據本地映象執行乙個容器,如下 命令解釋 ...