docker鏡像使用方法-創(chuàng)新互聯(lián)

Docker鏡像

鏡像是Docker三個(gè)核心概念中最重要的,運(yùn)行流程為
Docker運(yùn)行——本地是否存在對(duì)應(yīng)鏡像——若不存在Docker嘗試從默認(rèn)鏡像倉(cāng)庫(kù)下載,用戶也可以自定義配置鏡像倉(cāng)庫(kù)

創(chuàng)新互聯(lián)公司長(zhǎng)期為1000多家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為伊川企業(yè)提供專業(yè)的網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)伊川網(wǎng)站改版等技術(shù)服務(wù)。擁有十載豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。

獲取鏡像

格式為docker [image] pull NAME[:TAG]
其中NAME是鏡像倉(cāng)庫(kù)名稱,TAG是鏡像的標(biāo)簽(往往用來代表版本),通常情況下描述一個(gè)鏡像需要包括“名稱+標(biāo)簽”信息
測(cè)試獲取一個(gè)ubuntu 18.04的系統(tǒng)

[root@docker01 ~]# docker pull ubuntu:18.04
18.04: Pulling from library/ubuntu
423ae2b273f4: Downloading  15.25MB/26.69MB
de83a2304fa1: Download complete 
f9a83bce3af0: Download complete 
423ae2b273f4: Pull complete 
de83a2304fa1: Pull complete 
f9a83bce3af0: Pull complete 
b6b53be908de: Pull complete 
Digest: sha256:04d48df82c938587820d7b6006f5071dbbffceb7ca01d2814f81857c631d44df
Status: Downloaded newer image for ubuntu:18.04
docker.io/library/ubuntu:18.04

如果不定制TAG,則默認(rèn)會(huì)選擇latest標(biāo)簽

[root@docker01 ~]# docker pull centos
Using default tag: latest
latest: Pulling from library/centos
8a29a15cefae: Pull complete 
Digest: sha256:fe8d824220415eed5477b63addf40fb06c3b049404242b31982106ac204f6700
Status: Downloaded newer image for centos:latest
docker.io/library/centos:latest

注:一般來說,鏡像latest標(biāo)簽是會(huì)跟著鏡像內(nèi)容的最新版本而變化,內(nèi)容是不穩(wěn)定的,因此從穩(wěn)定性考慮,不要在生產(chǎn)環(huán)境使用latest標(biāo)簽。
使用官方的Docker Hub前綴可以忽略,補(bǔ)全就是

docker pull registry.hub.docker.com/ubuntu:18.04

使用非官方如網(wǎng)易豐巢

docker pull hub.c.163.com/public/ubuntu:18.04

測(cè)試運(yùn)行一個(gè)bash應(yīng)用

[root@docker01 ~]# docker run -it centos:latest bash
[root@894350cbee44 /]# cat /etc/redhat-release 
CentOS Linux release 8.1.1911 (Core) 
[root@894350cbee44 /]# echo "hello world"
hello world
[root@894350cbee44 /]# exit

查看鏡像信息

列出鏡像

[root@docker01 ~]# docker images
REPOSITORY      TAG         IMAGE ID       CREATED       SIZE
ubuntu        18.04        72300a873c2c     11 days ago     64.2MB
centos        latest        470671670cac     6 weeks ago     237MB

從以上信息可以看出
來自哪個(gè)倉(cāng)庫(kù)——centos
鏡像標(biāo)簽——latest
鏡像ID
創(chuàng)建時(shí)間
鏡像大小

添加鏡像標(biāo)簽

為方便后續(xù)工作中使用特點(diǎn)鏡像,為本地鏡像添加一個(gè)新的標(biāo)簽。docker tag命令起的是鏈接作用,鏈接后ID號(hào)是一樣的。

[root@docker01 ~]# docker tag centos:latest mycentos:latest
[root@docker01 ~]# docker images
REPOSITORY      TAG         IMAGE ID       CREATED       SIZE
ubuntu        18.04        72300a873c2c     11 days ago     64.2MB
centos        latest        470671670cac     6 weeks ago     237MB
mycentos       latest        470671670cac     6 weeks ago     237MB

查看鏡像詳細(xì)信息

[root@docker01 ~]# docker  inspect centos:latest

查看鏡像歷史,過長(zhǎng)命令會(huì)被截?cái)啵?-no-trunc選項(xiàng)輸出完整命令

[root@docker01 ~]# docker history centos:latest
IMAGE        CREATED       CREATED BY                    SIZE         COMMENT
470671670cac     6 weeks ago     /bin/sh -c #(nop)  CMD ["/bin/bash"]       0B          
<missing>      6 weeks ago     /bin/sh -c #(nop)  LABEL org.label-schema.sc…  0B          
<missing>      7 weeks ago     /bin/sh -c #(nop) ADD file:aa54047c80ba30064…  237MB

搜尋鏡像

搜索官方提供帶nginx關(guān)鍵字的鏡像

[root@docker01 ~]# docker search --filter=is-official=true nginx
NAME         DESCRIPTION         STARS        OFFICIAL       AUTOMATED
nginx        Official build of Nginx.  12745        [OK]

搜索收藏?cái)?shù)超過4個(gè)的關(guān)鍵詞為tensorflow的鏡像

[root@docker01 ~]# docker search --filter=stars=4 tensorflow
NAME               DESCRIPTION                   STARS        OFFICIAL       AUTOMATED
tensorflow/tensorflow       Official Docker images for the machine learn…  1631                   
jupyter/tensorflow-notebook    Jupyter Notebook Scientific Python Stack w/ …  201                   
tensorflow/serving        Official images for TensorFlow Serving (http…  77                    
xblaster/tensorflow-jupyter    Dockerized Jupyter with tensorflow        52                    [OK]

包含鏡像名字、描述、收藏?cái)?shù)、是否官方創(chuàng)建等

刪除鏡像

使用標(biāo)簽刪除鏡像

[root@docker01 ~]# docker rmi mycentos:latest
Untagged: mycentos:latest

強(qiáng)制刪除鏡像,即使有容器依賴他

[root@docker01 ~]# docker rmi -f mycentos:latest
Untagged: mycentos:latest

使用鏡像ID來刪除鏡像

[root@docker01 ~]# docker rmi 72300a873c2c

當(dāng)有鏡像創(chuàng)建的容器存在時(shí),鏡像文件默認(rèn)是無法被刪除的

[root@docker01 ~]# docker run myubuntu:18.04 echo 'hello~'
hello~
[root@docker01 ~]# docker ps -a
CONTAINER ID     IMAGE        COMMAND       CREATED        STATUS              PORTS        NAMES
8029f804939ff     centos:latest    "echo hello~"    About a minute ago  Exited (0) About a minute ago            compassionate_wescoff
[root@docker01 ~]# docker rmi centos:latest
Error response from daemon: conflict: unable to remove repository reference "centos:latest" (must force) - container 029f804939ff is using its referenced image 470671670cac

此時(shí)可以用-f參數(shù)強(qiáng)制刪除,但通常不推薦這么做,正確做法為
刪除容器

[root@docker01 ~]# docker rm 029f804939ff
029f804939ff

刪除鏡像

[root@docker01 ~]# docker rmi 470671670cac
Untagged: centos:latest
Untagged: centos@sha256:fe8d824220415eed5477b63addf40fb06c3b049404242b31982106ac204f6700
Deleted: sha256:470671670cac686c7cf0081e0b37da2e9f4f768ddc5f6a26102ccd1c6954c1ee
Deleted: sha256:0683de2821778aa9546bf3d3e6944df779daba1582631b7ea3517bb36f9e4007

清理鏡像

使用docker一段時(shí)間后,系統(tǒng)可能會(huì)遺留一些臨時(shí)鏡像文件,和一些沒有被使用的鏡像
自動(dòng)清理臨時(shí)的遺留鏡像文件層

[root@docker01 ~]# docker image prune -f
Total reclaimed space: 0B

創(chuàng)建鏡像

創(chuàng)建鏡像的方法主要有3種:基于已有的鏡像容器創(chuàng)建、基于本地模版導(dǎo)入、基于Dockerfile創(chuàng)建。
1、基于已有容器創(chuàng)建 docker [container] commit 命令
常用參數(shù)
-a,--author=" "    #作者信息
-c,--change=" "   #提交的時(shí)候執(zhí)行Dockerfile命令,包括CMD|ENTRYPOINT|ENV|EXPOSE|LABEL|ONBUILD|USER|VOLUME|WORKDIR等
-m,--message=" " #提交信息
-p,--pause=true   #提交時(shí)暫停容器運(yùn)行
啟動(dòng)一個(gè)鏡像,在里面創(chuàng)建一個(gè)文件

[root@docker01 ~]# docker run -it ubuntu:18.04 /bin/bash
root@734364a15c55:/# touch test
root@734364a15c55:/# exit

記住容器的ID號(hào)為734364a15c55,與原來的鏡像相比已經(jīng)發(fā)生了改變,這時(shí)提交一個(gè)新的鏡像

[root@docker01 ~]# docker commit -m "add a file" -a "tcw" 734364a15c55 testfile:0.1
sha256:f14661e2c5eeaf03d14ce4ec0d9e963daeddc3c93a85de959029acf0b1278b4d

此時(shí)返回了新創(chuàng)建的鏡像ID信息:sha256:f14661e2c5eeaf03d14ce4ec0d9e963daeddc3c93a85de959029acf0b1278b4d

[root@docker01 ~]# docker images
REPOSITORY      TAG         IMAGE ID       CREATED       SIZE
testfile       0.1         f14661e2c5ee     5 minutes ago    64.2MB
myubuntu       18.04        72300a873c2c     11 days ago     64.2MB
ubuntu        18.04        72300a873c2c     11 days ago     64.2MB

2、基于本地模版導(dǎo)入
我們也可以直接從一個(gè)操作系統(tǒng)模版文件導(dǎo)入一個(gè)鏡像 docker [image] import [OPTIONS] file|URL| -[REPOSITORY [:TAG]]
這里直接使用OpenVZ提供的模版來創(chuàng)建
https://wiki.openvz.org/Download/template/precreated

[root@docker01 ~]# wget http://download.openvz.org/template/precreated/ubuntu-14.04-x86_64-minimal.tar.gz
[root@docker01 ~]# cat ubuntu-14.04-x86_64-minimal.tar.gz |docker import - ubuntu:14.04
[root@docker01 oglab]# docker images
REPOSITORY      TAG         IMAGE ID       CREATED       SIZE
ubuntu        14.04        8fc8ce69135d     36 seconds ago    215MB

3、基于Dockerfile創(chuàng)建
基于Dockerfile是最常見的方式,Dockerfile是一個(gè)文本文件,利用給的的指令描述基于某個(gè)父鏡像創(chuàng)建新鏡像的過程。
建一個(gè)python的鏡像

[root@docker01 ~]# vim Dockerfile 

   FROM debian:stretch-slim
   LABEL version="1.0" maintainer="docker user <docker_user@github>"
   RUN apt-get update && \
   apt-get install -y python3 && \
   apt-get clean && \
   rm -rf /var/lib/apt/lists/*
[root@docker01 ~]# docker build . -t python:3

存入和載入鏡像

Docker鏡像的save和load命令docker [image] save | docker [image] load來存出和載入鏡像。
1、存入鏡像

[root@docker01 ~]# docker save -o ubuntu_18.04.tar ubuntu:18.04

2、載入鏡像

[root@docker01 ~]# docker load -i ubuntu_18.04.tar 
Loaded image: ubuntu:18.04
[root@docker01 ~]# docker load < ubuntu_18.04.tar
Loaded image: ubuntu:18.04

上傳鏡像

Docker鏡像的push命令,docker [image] push上傳到鏡像倉(cāng)庫(kù),默認(rèn)上傳到Docker Hub官方倉(cāng)庫(kù)

docker tag testfile:0.1 user/test:latest
[root@docker01 ~]# docker push user/test:latest 
The push refers to repository [docker.io/user/test]

user是自己的用戶名,第一次上傳時(shí)會(huì)輸入登錄信息,之后登錄就會(huì)保存在本地的~/.docker目錄下

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

網(wǎng)站名稱:docker鏡像使用方法-創(chuàng)新互聯(lián)
分享鏈接:http://muchs.cn/article32/cedcsc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、Google、網(wǎng)站設(shè)計(jì)、企業(yè)建站、服務(wù)器托管、網(wǎng)站策劃

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

綿陽(yáng)服務(wù)器托管