docker 鏡像生成

一、由container建立鏡像(修改已有鏡像):docker

修改container後,commit:json

docker commit -m "Added json gem" -a "Docker Newbee" 0b2616b0e5a8 ouruser/sinatra:v2

-m 來指定提交的說明信息,跟咱們使用的版本控制工具同樣;-a 能夠指定更新的用戶信息;以後是用來建立鏡像的容器的 ID;最後指定目標鏡像的倉庫名和 tag 信息。建立成功後會返回這個鏡像的 ID 信息。 使用 docker images 來查看新建立的鏡像ubuntu

二、利用 Dockerfile 來建立鏡像 vi Dockerfileruby

# This is a comment
FROM ubuntu:14.04
MAINTAINER Docker Newbee <newbee@docker.com>
RUN apt-get -qq update
RUN apt-get -qqy install ruby ruby-dev
RUN gem install sinatra

Dockerfile 基本的語法是 使用#來註釋 FROM 指令告訴 Docker 使用哪一個鏡像做爲基礎 接着是維護者的信息 RUN開頭的指令會在建立中運行,好比安裝一個軟件包,在這裏使用 apt-get 來安裝了一些軟件 編寫完成 Dockerfile 後可使用 docker build 來生成鏡像。工具

docker build -t="ouruser/sinatra:v2" .

其中 -t 標記來添加 tag,指定新的鏡像的用戶信息。 「.」 是 Dockerfile 所在的路徑(當前目錄),也能夠替換爲一個具體的 Dockerfile 的路徑。 能夠看到 build 進程在執行操做。它要作的第一件事情就是上傳這個 Dockerfile 內容,由於全部的操做都要依據 Dockerfile 來進行。 而後,Dockfile 中的指令被一條一條的執行。每一步都建立了一個新的容器,在容器中執行指令並提交修改(就跟以前介紹過的 docker commit 同樣)。當全部的指令都執行完畢以後,返回了最終的鏡像 id。全部的中間步驟所產生的容器都被刪除和清理了。 *注意一個鏡像不能超過 127 層 利用 ADD 命令複製本地文件到鏡像;用 EXPOSE 命令來向外部開放端口;用 CMD 命令來描述容器啓動後運行的程序等ui

三、從本地文件系統導入版本控制

cat ubuntu-14.04-x86_64-minimal.tar.gz  |docker import - ubuntu:14.04

存出鏡像: 若是要導出鏡像到本地文件,可使用 docker save 命令。 docker save -o ubuntu_14.04.tar ubuntu:14.04 載入鏡像 可使用 docker load 從導出的本地文件中再導入到本地鏡像庫 docker load --input ubuntu_14.04.tar 或: docker load < ubuntu_14.04.tarcode

四、導出容器快照到本地文件進程

docker export 7691a814370e > ubuntu.tar

五、導入容器快照get

cat ubuntu.tar | sudo docker import - test/ubuntu:v1.0

六、清理全部未打過標籤的本地鏡像 docker images 能夠列出本地全部的鏡像,其中極可能會包含有不少中間狀態的未打過標籤的鏡像,大量佔據着磁盤空間。 使用下面的命令能夠清理全部未打過標籤的本地鏡像 $ sudo docker rmi $(docker images -q -f "dangling=true") 其中 -q 和 -f 是縮寫, 完整的命令其實能夠寫着下面這樣,是否是更容易理解一點? $ sudo docker rmi $(docker images --quiet --filter "dangling=true")

相關文章
相關標籤/搜索