Docker实战(一)之使用Docker镜像
鏡像是Docker三大核心概念中最為重要的,自Docker誕生之日起“鏡像”就是相關(guān)社區(qū)最為熱門的關(guān)鍵字。
Docker運行容器前需要本地存在對應(yīng)的鏡像,如果鏡像沒有保存至本地,Docker會嘗試先從默認鏡像倉庫中下載,用戶也可以通過配置,使用自定義的鏡像倉庫。
1.獲取鏡像
docker pull ubuntu 獲取ubuntu最新鏡像
如果要獲得指定的ubuntu鏡像可以寫成這樣 docker pull ubuntu:14.04
注意:
一般來說,鏡像的latest標簽意味著該鏡像的內(nèi)容會跟蹤最新的非穩(wěn)定版本而發(fā)布,內(nèi)容是不穩(wěn)定的。當前Ubuntu最新的發(fā)行版本為16.04,latest鏡像實際上就是16.04鏡像,用戶可以下載ubuntu:16.04鏡像并查看,兩者的數(shù)字摘要值是否一致的。從穩(wěn)定性上考慮,不要在生產(chǎn)環(huán)境中忽略鏡像標簽信息或使用默認的latest標記的鏡像。
?
2.查看鏡像信息
(1)使用image命令查看鏡像信息
docker images 該命令可以查看docker容器所有的鏡像
在列出的信息中,可以看到以下幾個字段的信息:
來自哪個倉庫,比如ubuntu倉庫用來保存ubuntu的鏡像;
鏡像的標簽信息,比如latest標注不同的版本信息.標簽只是標記,并不能標識鏡像內(nèi)容;
鏡像的ID,如nginx的ID為cd5239a0906a,當兩個鏡像的ID相同時,說明它們目前實際上指向同一個鏡像;
創(chuàng)建時間,說明鏡像最后的更新時間;
鏡像大小,優(yōu)秀的鏡像往往體積都比較小;
其中鏡像ID非常重要,它唯一標識鏡像,在使用鏡像ID的時候,一般可以使用該ID的前很多個字符組成的可區(qū)分串來代替完整的ID。'
?
(2)使用tag命令添加鏡像標簽
為了方便在后續(xù)工作中使用特定的鏡像,還可以使用docker tag命令來為本地鏡像任意添加新的標簽。例如添加一個新的myubuntu:latest鏡像標簽:
docker tag ubuntu:latest myubuntu:latest
docker images
?
(3).使用inspect命令查看詳細信息
使用docker inspect命令可以獲取該鏡像的詳細信息,包括制作者,適應(yīng)架構(gòu),各層數(shù)字摘要等:
docker inspect ubuntu:14.04
?
返回的是一個JSON格式的消息,如果我們只要其中一項內(nèi)容時,可以使用參數(shù)-f來指定,例如,獲取鏡像的Os:
docker inspect -f {{.Os}}
?
(4).使用history命令查看鏡像歷史
例如,查看ubuntu:14.04鏡像的創(chuàng)建過程,可以使用如下命令:
docker history ubuntu:14.04
注意過長的命令被自動截斷了,可以使用前面提到的--no-trunc選項來輸出完整命令
?
3.搜尋鏡像
使用docker search命令可以搜索遠端倉庫中共享的鏡像,默認搜索官方倉庫中的鏡像。用法為docker search 鏡像名
例如搜尋tomcat的鏡像
可以看到返回了很多包含關(guān)鍵字的鏡像,其中包括鏡像名字,描述,星級(表示該鏡像受歡迎程度)、是否官方創(chuàng)建、是否自動創(chuàng)建等。
默認的輸出結(jié)果將按照星級評價進行排序。
4.刪除鏡像
(1)使用標簽刪除鏡像
例如我要刪除之前定義的mybuntu:latest鏡像,可以使用下面的命令:
docker rmi myubuntu:latest
?
當鏡像只剩下一個標簽的時候就要特別小心,此時再使用docker rmi命令會徹底刪除鏡像。
例如刪除的標簽為ubuntu:14.04的鏡像,由于該鏡像沒有額外的標簽指向它,執(zhí)行docker rmi命令,可以看出它會刪除這個鏡像文件的所有層:
?
?
(2)使用id刪除鏡像
注意:當有該鏡像創(chuàng)建的容器存在時,鏡像文件默認是無法被刪除的,例如,先利用ubuntu:14.04鏡像創(chuàng)建一個簡單的容器并輸出一句話
示例如下:
?
docker ps -a 命令可以看到本機上存在的所有容器:
?
可以看出,后臺存在一個退出狀態(tài)的容器,是剛基于ubuntu:14.04鏡像創(chuàng)建的。
試圖刪除該鏡像,Docker會提示有容器正在運行,無法刪除:
?
如果想要強行刪除鏡像,可以使用-f參數(shù)。
?注意:通常并不推薦使用-f參數(shù)來強制刪除一個存在容器依賴的鏡像。正確的做法是先刪除依賴該鏡像的所有容器,再來刪除鏡像。
比如我要刪除nginx
我通過docker ps -a命令查看所有容器
找到ID
執(zhí)行如下命令即可刪除依賴容器最后再刪除nginx鏡像
docker rm e69099851e18
刪除容器成功后再執(zhí)行如下刪除鏡像命令
?
5.創(chuàng)建鏡像
創(chuàng)建鏡像的方法主要有三種:基于已有的鏡像的容器創(chuàng)建、基于本地模板導(dǎo)入、基于Dockerfile創(chuàng)建。
(1)基于容器創(chuàng)建
該方法主要是使用docker commit命令。命令格式為docker commit 主要選項有:
-a,? --author--"":作者信息
-c,? --change--[]:提交的時候執(zhí)行Dockerfile指令,包括CMD|ENTRYPOINT|ENV|EXPOSE|LABLE|ONBUILD|USER|VOLUME|WORKDIR等;
-m, --message="" 提交的信息
-p, --pause=true:提交時暫停容器運行。
下面演示如何使用命令創(chuàng)建一個新鏡像。首先啟動一個鏡像,并在其中進行修改操作,例如創(chuàng)建一個test文件,之后退出:
docker run -it ubuntu:14.04 /bin/bash
touch test
exit
退出后執(zhí)行docker ps -a命令獲得容器ID
記住這個ID:471e0c7a7176
此時該容器跟原ubuntu:14.04鏡像相比,已經(jīng)發(fā)送了改變,可以使用docker commit 命令來提交一個新的鏡像。提交時可以使用ID或名稱來指定容器。
docker commit -m "Added a new file" -a "Docker Newbee" 471e0c7a7176 test:0.1
順利的話,會返回新創(chuàng)建的鏡像ID信息,例如7273577e3795e15cf04d715c29283acaf8d61de8be0409ec2eb03f2d776b883b
此時查看本地鏡像列表,會發(fā)現(xiàn)新創(chuàng)建的鏡像已經(jīng)存在了。
?
(2)基于本地模板導(dǎo)入
用戶可以直接從一個操作系統(tǒng)模板文件導(dǎo)入一個鏡像,主要使用docker import 命令。
模板網(wǎng)址:https://openvz.org/Download/template/precreated
wget http://download.openvz.org/template/precreated/ubuntu-14.04-x86_64-minimal.tar.gz 遠程下載模板
?
下載成功后執(zhí)行該命令即可實現(xiàn)基于本地模板導(dǎo)入鏡像:
cat ubuntu-14.04-x86_64-minimal.tar.gz | docker import - ubuntu:14.04
?
查看鏡像:
docker images
?
?6.存入鏡像和載入鏡像
用戶可以使用docker save和docker load命令來存入和載入鏡像。
1.存出鏡像
如果要導(dǎo)出鏡像到本地文件,可以使用docker save命令。例如,導(dǎo)出本地的ubuntu:14.04鏡像為文件ubuntu_14.04.tar,如下所示:
?docker save -o ubuntu_14.04.tar ubuntu:14.04
?
?2.載入鏡像
可以使用docker load將導(dǎo)出的tar文件再導(dǎo)入到本地鏡像庫,例如從文件ubuntu_14.04.tar導(dǎo)入鏡像到本地鏡像列表,如下所示:
docker load --input ubuntu_14.04.tar 或docker load < ubuntu_14.04.tar
?
這將導(dǎo)入鏡像及其相關(guān)的元數(shù)據(jù)信息(包括標簽等)。導(dǎo)入成功后,可以使用docker images命令進行查看。
?
7.上傳鏡像
可以使用docker push命令進行鏡像上傳,默認上傳到Docker Hub官方倉庫(需要登錄)。命令格式為:
docker push NAME[:TAG] | [REGISTRY_HOST[:REGISTRY_PORT]/]NAME[:TAG]
用戶在Docker Hub網(wǎng)站注冊后可以上傳自制的鏡像。例如用戶user上傳本地的test:latest鏡像,可以先添加user/test:latest,然后用docker push命令上傳鏡像:
docker tag test:latest user/test:latest
第一次上傳時,會提示輸入登錄信息或進行注冊。
轉(zhuǎn)載于:https://www.cnblogs.com/youcong/p/9191294.html
總結(jié)
以上是生活随笔為你收集整理的Docker实战(一)之使用Docker镜像的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 图解反向代理和正向代理。
- 下一篇: cd命令