這篇文章將為大家詳細(xì)講解有關(guān)Docker鏡像的使用方法,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。
成都創(chuàng)新互聯(lián)公司服務(wù)項目包括中方網(wǎng)站建設(shè)、中方網(wǎng)站制作、中方網(wǎng)頁制作以及中方網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,中方網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到中方省份的部分城市,未來相信會繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
當(dāng)運(yùn)行容器時,使用的鏡像如果在本地中不存在,docker 就會自動從 docker 鏡像倉庫中下載,默認(rèn)是從 Docker Hub 公共鏡像源下載。
下面我們來學(xué)習(xí):
1、管理和使用本地 Docker 主機(jī)鏡像
2、創(chuàng)建鏡像
列出鏡像列表
我們可以使用 docker images 來列出本地主機(jī)上的鏡像。
[root@huixuan ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/hello-world latest e38bc07ac18e 2 weeks ago 1.85 kB
docker.io/ubuntu 15.10 9b9cb95443b5 21 months ago 137 MB
docker.io/training/webapp latest 6fae60ef3446 2 years ago 349 MB
[root@huixuan ~]#
各個選項說明:
REPOSITORY:表示鏡像的倉庫源
TAG:鏡像的標(biāo)簽
IMAGE ID:鏡像ID
CREATED:鏡像創(chuàng)建時間
SIZE:鏡像大小
同一倉庫源可以有多個 TAG,代表這個倉庫源的不同個版本,如ubuntu倉庫源里,有15.10、14.04等多個不同的版本,我們使用 REPOSITORY:TAG 來定義不同的鏡像。
所以,我們?nèi)绻褂冒姹緸?5.10的ubuntu系統(tǒng)鏡像來運(yùn)行容器時,命令如下:
[root@huixuan ~]# docker run -t -i ubuntu:15.10 /bin/bash
root@38a4ad967a4a:/#
如果要使用版本為14.04的ubuntu系統(tǒng)鏡像來運(yùn)行容器時,命令如下:
[root@huixuan ~]# docker run -t -i ubuntu:14.04 /bin/bash
如果你不指定一個鏡像的版本標(biāo)簽,例如你只使用 ubuntu,docker 將默認(rèn)使用 ubuntu:latest 鏡像。
獲取一個新的鏡像
當(dāng)我們在本地主機(jī)上使用一個不存在的鏡像時 Docker 就會自動下載這個鏡像。如果我們想預(yù)先下載這個鏡像,我們可以使用 docker pull 命令來下載它。
[root@huixuan ~]# docker pull ubuntu:13.10
下載完成后,我們可以直接使用這個鏡像來運(yùn)行容器。
查找鏡像
我們可以從 Docker Hub 網(wǎng)站來搜索鏡像,Docker Hub 網(wǎng)址為: https://hub.docker.com/
我們也可以使用 docker search 命令來搜索鏡像。比如我們需要一個httpd的鏡像來作為我們的web服務(wù)。我們可以通過 docker search 命令搜索 httpd 來尋找適合我們的鏡像。
[root@huixuan ~]# docker search httpd
INDEX NAME DESCRIPTION STARS OFFICIAL AUTOMATED
docker.io docker.io/httpd The Apache HTTP Server Project 1668 [OK]
docker.io docker.io/hypriot/rpi-busybox-httpd Raspberry Pi compatible Docker Image with ... 40
docker.io docker.io/centos/httpd 17 [OK]
docker.io docker.io/centos/httpd-24-centos7 Platform for running Apache httpd 2.4 or b... 12
docker.io docker.io/armhf/httpd The Apache HTTP Server Project 8
docker.io docker.io/macadmins/netboot-httpd use in combination with bruienne/bsdpy 5 [OK]
docker.io docker.io/lolhens/httpd Apache httpd 2 Server 2 [OK]
docker.io docker.io/salim1983hoop/httpd24 Dockerfile running apache config 2 [OK]
docker.io docker.io/epflidevelop/os-wp-httpd WP httpd 1 [OK]
docker.io docker.io/fboaventura/dckr-httpd Small footprint http server to use with ot... 1 [OK]
docker.io docker.io/lead4good/httpd-fpm httpd server which connects via fcgi proxy... 1 [OK]
docker.io docker.io/rgielen/httpd-image-simple Docker image for simple Apache httpd based... 1 [OK]
docker.io docker.io/tplatform/aws-linux-httpd24-php71-fpm aws-linux-httpd24-php71-fpm 1 [OK]
docker.io docker.io/buzzardev/httpd Based on the official httpd image 0 [OK]
docker.io docker.io/cilium/demo-httpd 0
docker.io docker.io/dockerpinata/httpd 0
docker.io docker.io/fintaffy/fintaffy-httpd 0
docker.io docker.io/interlutions/httpd httpd docker image with debian-based confi... 0 [OK]
docker.io docker.io/manageiq/httpd Container with httpd, built on CentOS for ... 0 [OK]
docker.io docker.io/manasip/httpd 0
docker.io docker.io/ppc64le/httpd The Apache HTTP Server Project 0
docker.io docker.io/publici/httpd httpd:latest 0 [OK]
docker.io docker.io/tplatform/aws-linux-httpd24-php70 aws-linux-httpd24-php70 0 [OK]
docker.io docker.io/tplatform/aws-linux-httpd24-php71 aws-linux-httpd24-php71 0 [OK]
docker.io docker.io/trollin/httpd 0
[root@huixuan ~]#
NAME:鏡像倉庫源的名稱
DESCRIPTION:鏡像的描述
OFFICIAL:是否docker官方發(fā)布
拖取鏡像
我們決定使用上圖中的httpd 官方版本的鏡像,使用命令 docker pull 來下載鏡像。
[root@huixuan ~]# docker pull httpd
下載完成后,我們就可以使用這個鏡像了。
[root@huixuan ~]# docker run httpd
創(chuàng)建鏡像
當(dāng)我們從docker鏡像倉庫中下載的鏡像不能滿足我們的需求時,我們可以通過以下兩種方式對鏡像進(jìn)行更改。
1.從已經(jīng)創(chuàng)建的容器中更新鏡像,并且提交這個鏡像
2.使用 Dockerfile 指令來創(chuàng)建一個新的鏡像
更新鏡像
更新鏡像之前,我們需要使用鏡像來創(chuàng)建一個容器。
[root@huixuan ~]# docker run -t -i ubuntu:15.10 /bin/bash
root@493da1af5d63:/#
在運(yùn)行的容器內(nèi)使用 apt-get update 命令進(jìn)行更新。
在完成操作之后,輸入 exit命令來退出這個容器。
此時ID為493da1af5d63的容器,是按我們的需求更改的容器。我們可以通過命令 docker commit來提交容器副本。
[root@huixuan ~]# docker commit -m="has update" -a="tonykorn97" 493da1af5d63 tonykorn97/ubuntu:v2
sha256:6bb0f7a6d1e68fa93197761f3fa86a18397b1dfff563a0405e48cc833d0b3112
各個參數(shù)說明:
-m:提交的描述信息
-a:指定鏡像作者
493da1af5d63:容器ID
tonykorn97/ubuntu:v2:指定要創(chuàng)建的目標(biāo)鏡像名
我們可以使用 docker images 命令來查看我們的新鏡像 tonykorn97/ubuntu:v2:
[root@huixuan ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
tonykorn97/ubuntu v2 6bb0f7a6d1e6 2 seconds ago 137 MB
docker.io/ubuntu 14.04 8cef1fa16c77 3 days ago 223 MB
docker.io/hello-world latest e38bc07ac18e 2 weeks ago 1.85 kB
docker.io/ubuntu 15.10 9b9cb95443b5 21 months ago 137 MB
docker.io/training/webapp latest 6fae60ef3446 2 years ago 349 MB
[root@huixuan ~]#
使用我們的新鏡像 tonykorn97/ubuntu 來啟動一個容器
[root@huixuan ~]# docker run -t -i tonykorn97/ubuntu:v2 /bin/bash
root@694ecac26845:/#
構(gòu)建鏡像
我們使用命令 docker build , 從零開始來創(chuàng)建一個新的鏡像。為此,我們需要創(chuàng)建一個 Dockerfile 文件,其中包含一組指令來告訴 Docker 如何構(gòu)建我們的鏡像。
[root@huixuan ~]# cat Dockerfile
FROM centos
MAINTAINER Fisher "tonykorn97@sudops.com"
RUN /bin/echo 'root:123456' |chpasswd
RUN useradd tonykorn97
RUN /bin/echo 'tonykorn97:123456' |chpasswd
RUN /bin/echo -e "LANG=\"en_US.UTF-8\"" >/etc/default/local
EXPOSE 22
EXPOSE 80
CMD /usr/sbin/sshd -D
[root@huixuan ~]#
每一個指令都會在鏡像上創(chuàng)建一個新的層,每一個指令的前綴都必須是大寫的。
第一條FROM,指定使用哪個鏡像源
RUN 指令告訴docker 在鏡像內(nèi)執(zhí)行命令,安裝了什么。。。
然后,我們使用 Dockerfile 文件,通過 docker build 命令來構(gòu)建一個鏡像。
[root@huixuan ~]# docker build -t docker.io/centos .
Sending build context to Docker daemon 42.5 kB
Step 1/9 : FROM centos
---> e934aafc2206
Step 2/9 : MAINTAINER Fisher "tonykorn97@sudops.com"
---> Running in e8fba274a04f
---> a957802c0f10
Removing intermediate container e8fba274a04f
Step 3/9 : RUN /bin/echo 'root:123456' |chpasswd
---> Running in 9b6d82512651
---> 91895d25b7ca
Removing intermediate container 9b6d82512651
Step 4/9 : RUN useradd tonykorn97
---> Running in ca2a783aa01f
---> da8e8eb44cb9
Removing intermediate container ca2a783aa01f
Step 5/9 : RUN /bin/echo 'tonykorn97:123456' |chpasswd
---> Running in bcfd276a69cc
---> e9bef27837e4
Removing intermediate container bcfd276a69cc
Step 6/9 : RUN /bin/echo -e "LANG=\"en_US.UTF-8\"" >/etc/default/local
---> Running in fb07b34deefd
---> b34b2ad1c65b
Removing intermediate container fb07b34deefd
Step 7/9 : EXPOSE 22
---> Running in a580e3c0df37
---> ae38f15b66c3
Removing intermediate container a580e3c0df37
Step 8/9 : EXPOSE 80
---> Running in b3e04bf32806
---> 8964d002a4a9
Removing intermediate container b3e04bf32806
Step 9/9 : CMD /usr/sbin/sshd -D
---> Running in 804574e55fdc
---> 3a42651974ec
Removing intermediate container 804574e55fdc
Successfully built 3a42651974ec
[root@huixuan ~]#
參數(shù)說明:
-t :指定要創(chuàng)建的目標(biāo)鏡像名
. :Dockerfile 文件所在目錄,可以指定Dockerfile 的絕對路徑
使用docker images 查看創(chuàng)建的鏡像已經(jīng)在列表中存在,鏡像ID為3a42651974ec
[root@huixuan ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/centos latest 3a42651974ec 42 seconds ago 199 MB
tonykorn97/ubuntu v2 6bb0f7a6d1e6 27 minutes ago 137 MB
docker.io/ubuntu 14.04 8cef1fa16c77 3 days ago 223 MB
docker.io/hello-world latest e38bc07ac18e 2 weeks ago 1.85 kB
docker.io/centos
docker.io/ubuntu 15.10 9b9cb95443b5 21 months ago 137 MB
docker.io/training/webapp latest 6fae60ef3446 2 years ago 349 MB
[root@huixuan ~]#
我們可以使用新的鏡像來創(chuàng)建容器
[root@huixuan ~]# docker run -t -i centos /bin/bash
[root@6263f2eb5f6c /]# id tonykorn97
uid=1000(tonykorn97) gid=1000(tonykorn97) groups=1000(tonykorn97)
[root@6263f2eb5f6c /]#
從上面看到新鏡像已經(jīng)包含我們創(chuàng)建的用戶tonykorn97
設(shè)置鏡像標(biāo)簽
我們可以使用 docker tag 命令,為鏡像添加一個新的標(biāo)簽。
[root@huixuan ~]# docker tag 3a42651974ec tonykorn97/centos:dev
docker tag 鏡像ID,這里是 3a42651974ec ,用戶名稱、鏡像源名(repository name)和新的標(biāo)簽名(tag)。
使用 docker images 命令可以看到,ID為860c279d2fec的鏡像多一個標(biāo)簽。
[root@huixuan ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/centos latest 3a42651974ec 3 minutes ago 199 MB
tonykorn97/centos dev 3a42651974ec 3 minutes ago 199 MB
tonykorn97/ubuntu v2 6bb0f7a6d1e6 30 minutes ago 137 MB
docker.io/ubuntu 14.04 8cef1fa16c77 3 days ago 223 MB
docker.io/hello-world latest e38bc07ac18e 2 weeks ago 1.85 kB
docker.io/centos
docker.io/ubuntu 15.10 9b9cb95443b5 21 months ago 137 MB
docker.io/training/webapp latest 6fae60ef3446 2 years ago 349 MB
[root@huixuan ~]#
關(guān)于Docker鏡像的使用方法就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。