我們可以使用docker build
來建立乙個新的映象。為此,首先需要建立乙個 dockerfile,包含一些如何建立映象的指令。
新建乙個目錄和乙個 dockerfile
dockerfile 中每一條指令都建立映象的一層,例如:$ mkdir sinatra
$ cd sinatra
$ touch dockerfile
dockerfile 基本的語法是# this is a comment
from ubuntu:14.04
maintainer docker newbee run apt-get -qq update
run apt-get -qqy install ruby ruby-dev
run gem install sinatra
編寫完成 dockerfile 後可以使用docker build
來生成映象。
其中$ sudo docker build -t="ouruser/sinatra:v2" .
uploading context 2.56 kb
uploading context
step 0 : from ubuntu:14.04
---> 99ec81b80c55
step 1 : maintainer newbee ---> running in 7c5664a8a0c1
---> 2fa8ca4e2a13
removing intermediate container 7c5664a8a0c1
step 2 : run apt-get -qq update
---> running in b07cc3fb4256
---> 50d21070ec0c
removing intermediate container b07cc3fb4256
step 3 : run apt-get -qqy install ruby ruby-dev
---> running in a5b038dd127e
selecting previously unselected package libasan0:amd64.
(reading database ... 11518 files and directories currently installed.)
preparing to unpack .../libasan0_4.8.2-19ubuntu1_amd64.deb ...
setting up ruby (1:1.9.3.4) ...
setting up ruby1.9.1 (1.9.3.484-2ubuntu1) ...
processing triggers for libc-bin (2.19-0ubuntu6) ...
---> 2acb20f17878
removing intermediate container a5b038dd127e
step 4 : run gem install sinatra
---> running in 5e9d0065c1f7
. . .
successfully installed rack-protection-1.5.3
successfully installed sinatra-1.4.5
4 gems installed
---> 324104cde6ad
removing intermediate container 5e9d0065c1f7
successfully built 324104cde6ad
-t
標記來新增 tag,指定新的映象的使用者資訊。 「.」 是 dockerfile 所在的路徑(當前目錄),也可以替換為乙個具體的 dockerfile 的路徑。
可以看到 build 程序在執行操作。它要做的第一件事情就是上傳這個 dockerfile 內容,因為所有的操作都要依據 dockerfile 來進行。 然後,dockfile 中的指令被一條一條的執行。每一步都建立了乙個新的容器,在容器中執行指令並提交修改(就跟之前介紹過的docker commit
一樣)。當所有的指令都執行完畢之後,返回了最終的映象 id。所有的中間步驟所產生的容器都被刪除和清理了。
注意乙個映象不能超過 127 層
此外,還可以利用add
命令複製本地檔案到映象;用expose
命令來向外部開放埠;用cmd
命令來描述容器啟動後執行的程式等。例如
現在可以利用新建立的映象來啟動乙個容器。
還可以用$ sudo docker run -t -i ouruser/sinatra:v2 /bin/bash
root@8196968dac35:/#
docker tag
命令來修改映象的標籤。
使用者可以通過$ sudo docker tag 5db5f8471261 ouruser/sinatra:devel
$ sudo docker images ouruser/sinatra
repository tag image id created virtual size
ouruser/sinatra latest 5db5f8471261 11 hours ago 446.7 mb
ouruser/sinatra devel 5db5f8471261 11 hours ago 446.7 mb
ouruser/sinatra v2 5db5f8471261 11 hours ago 446.7 mb
docker push
命令,把自己建立的映象上傳到倉庫中來共享。例如,使用者在 docker hub 上完成註冊後,可以推送自己的映象到倉庫中。
$ sudo docker push ouruser/sinatra
the push refers to a repository [ouruser/sinatra] (len: 1)
sending image list
pushing repository ouruser/sinatra (3 tags)
利用Dockerfile構建映象
dockerfile 是乙個文字檔案,其內包含了一條條的指 instruction 每一條指令構建一層,因此每一條指令的內容,就是描述該層應當如何構建。還以之前定製 nginx 映象為例,這次我們使用 dockerfile 來定製。first dockerfile from ubuntu 14.04...
dockerfile建立映象
dockerfile用來快速建立自定義映象 dockerfile分為部分 基礎映象資訊,維護者資訊,映象操作指令,容器啟動時執行指令 一開始必須指明所基於的映象名稱 維護者資訊 映象操作指令 run 執行容器時的操作命令 cmd from 功能為指定基礎映象,並且必須是第一條指令。如果不以任何映象為...
Dockerfile建立Wordpress論壇
在root目錄下 mkdir docker cd docker mkdire nginx mkdire mysql cd nginx 上傳nginx 1.12.2.tar.gz wordpress 4.9.4 zh cn.tar libmcrypt 2.5.7.tar.gz nginx.conf w...