Docker之鏡像
1、鏡像
鏡像是一種輕量級、可執(zhí)行的獨(dú)立軟件包,用來打包軟件運(yùn)行環(huán)境和基于運(yùn)行環(huán)境開發(fā)的軟件,它包含運(yùn)行某個軟件所需的所有內(nèi)容包括代碼、運(yùn)行時、庫、環(huán)境變量和配置文件。
鏡像由多個層組成,每層疊加之后,從外部看來就如一個獨(dú)立的對象。鏡像內(nèi)部是一個精簡的操作系統(tǒng)(OS),同時還包含應(yīng)用運(yùn)行所必須的文件和依賴包。
2、鏡像相關(guān)命令
2.1、查看鏡像列表(docker images)
docker images 命令列出本地主機(jī)上的鏡像:

上面可以看到只有一個 hello-world 的鏡像。
上面的各個選項(xiàng)說明:
-
REPOSITORY:表示鏡像的倉庫源
-
TAG:鏡像的標(biāo)簽
-
IMAGE ID:鏡像ID
-
CREATED:鏡像創(chuàng)建時間
-
SIZE:鏡像大小
同一倉庫源可以有多個 TAG,代表這個倉庫源的不同個版本,如 ubuntu 倉庫源里,有 12.10、14.04 等多個不同的版本,我們使用 REPOSITORY:TAG(比如:tomcat:3.2 )來定義不同的鏡像。如果不指定一個鏡像的版本標(biāo)簽,docker 將默認(rèn)使用該鏡像的 latest ,即最新鏡像。
也可以通過直接查看某個鏡像:docker images 鏡像名,示例:

2.2、搜索鏡像(docker search)
我們可以通過瀏覽 Docker Hub 網(wǎng)站來搜索鏡像,也可以使用 docker search 命令來搜索鏡像。
比如我們搜索 tomcat 鏡像:

可以發(fā)現(xiàn),第一個就是我們想要找的 tomcat 鏡像。
2.3、獲取鏡像(docker pull)
當(dāng)我們在本地主機(jī)上直接通過 run 來使用一個不存在的鏡像時,Docker 會自動下載這個鏡像。當(dāng)然,我們也可以通過 docker pull 命令來手動下載它。
docker pull tomcat #默認(rèn)下載最新版本,等價于 docker pull tomcat:latest
如果我們在下載或者使用時不指定版本,則默認(rèn)使用的是最新版本。
當(dāng)然,我們也可以下載指定版本的鏡像,直接在冒號后面加上版本號即可:
docker pull tomcat:3.2
2.4、刪除鏡像(docker rmi)
鏡像刪除使用 docker rmi 命令,比如我們刪除 hello-world 鏡像:
docker rmi hello-world
docker rmi -f hello-world #強(qiáng)制刪除
docker rmi hello-world tomcat #要想同時刪除多個只需用空格分開鏡像名稱即可
docker rmi $(docker images -qa) #刪除全部鏡像
2.5、創(chuàng)建鏡像
2.5.1、基于原有的鏡像創(chuàng)建新鏡像(docker commit)
我們可以基于現(xiàn)有的在運(yùn)行的容器來做些修改,然后通過 docker commit 命令來將修改后的容器構(gòu)建成一個鏡像。語法如下:
docker commit -m="描述信息" -a="作者名" 容器ID 鏡像名:標(biāo)簽 #示例 docker commit -m="mytomcat" -a="wen" 85f874987777 wen/wentomcat:1.0 # wen/是命名空間,不用命名空間也行。鏡像名不能有大寫字母
比如我們先運(yùn)行一個 tomcat 容器,然后將該容器的 webapps.dist 文件夾內(nèi)容復(fù)制到 webapps 下,修改過后通過 docker commit 命令將修改過后的容器構(gòu)建成一個新的鏡像:

由此我們就可以看到在本地已經(jīng)有我們新創(chuàng)建的鏡像了:

下面運(yùn)行該鏡像:

上面我們通過將宿主機(jī)的 7777 端口映射到新的 tomcat 鏡像的 8080 端口上運(yùn)行,我們可以通過訪問宿主機(jī)的 ip:7777 來訪問 tomcat 的默認(rèn)項(xiàng)目的首頁:

2.5.2、通過dockerfile創(chuàng)建鏡像
docker build 命令可用于從Dockerfile構(gòu)建映像。
語法結(jié)構(gòu)如下:
docker build -f 本地dockerfile文件絕對路徑 -t 鏡像名 . #最后的 . 不要漏掉,表示Dockerfile 文件所在目錄,可以指定Dockerfile 的絕對路徑 #示例 docker build -f /usr/data/Dockerfile -t mycentos:1.0 .

浙公網(wǎng)安備 33010602011771號