docker學習4:Docker 映象使用
參考:http://www.runoob.com/docker/docker-image-usage.html
當執行容器時,使用的映象如果在本地中不存在,docker 就會自動從 docker 映象倉庫中下載,預設是從 Docker Hub 公共映象源下載。
下面我們來學習:
1、管理和使用本地 Docker 主機映象
2、建立映象
列出映象列表
我們可以使用 docker images 來列出本地主機上的映象。
[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:映象的標籤
IMAGE ID:映象ID
CREATED:映象建立時間
SIZE:映象大小
同一倉庫源可以有多個 TAG,代表這個倉庫源的不同個版本,如ubuntu倉庫源裡,有15.10、14.04等多個不同的版本,我們使用 REPOSITORY:TAG 來定義不同的映象。
所以,我們如果要使用版本為15.10的ubuntu系統映象來執行容器時,命令如下:
[root@huixuan ~]# docker run -t -i ubuntu:15.10 /bin/bash
root@38a4ad967a4a:/#
如果要使用版本為14.04的ubuntu系統映象來執行容器時,命令如下:
[root@huixuan ~]# docker run -t -i ubuntu:14.04 /bin/bash
如果你不指定一個映象的版本標籤,例如你只使用 ubuntu,docker 將預設使用 ubuntu:latest 映象。
獲取一個新的映象
當我們在本地主機上使用一個不存在的映象時 Docker 就會自動下載這個映象。如果我們想預先下載這個映象,我們可以使用 docker pull 命令來下載它。
[root@huixuan ~]# docker pull ubuntu:13.10
下載完成後,我們可以直接使用這個映象來執行容器。
查詢映象
我們可以從 Docker Hub 網站來搜尋映象,Docker Hub 網址為:
我們也可以使用 docker search 命令來搜尋映象。比如我們需要一個httpd的映象來作為我們的web服務。我們可以透過 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官方釋出
拖取映象
我們決定使用上圖中的httpd 官方版本的映象,使用命令 docker pull 來下載映象。
[root@huixuan ~]# docker pull httpd
下載完成後,我們就可以使用這個映象了。
[root@huixuan ~]# docker run httpd
建立映象
當我們從docker映象倉庫中下載的映象不能滿足我們的需求時,我們可以透過以下兩種方式對映象進行更改。
1.從已經建立的容器中更新映象,並且提交這個映象
2.使用 Dockerfile 指令來建立一個新的映象
更新映象
更新映象之前,我們需要使用映象來建立一個容器。
[root@huixuan ~]# docker run -t -i ubuntu:15.10 /bin/bash
root@493da1af5d63:/#
在執行的容器內使用 apt-get update 命令進行更新。
在完成操作之後,輸入 exit命令來退出這個容器。
此時ID為493da1af5d63的容器,是按我們的需求更改的容器。我們可以透過命令 docker commit來提交容器副本。
[root@huixuan ~]# docker commit -m="has update" -a="tonykorn97" 493da1af5d63 tonykorn97/ubuntu:v2
sha256:6bb0f7a6d1e68fa93197761f3fa86a18397b1dfff563a0405e48cc833d0b3112
各個引數說明:
-m:提交的描述資訊
-a:指定映象作者
493da1af5d63:容器ID
tonykorn97/ubuntu:v2:指定要建立的目標映象名
我們可以使用 docker images 命令來檢視我們的新映象 tonykorn97/ubuntu:v2:
[root@huixuan ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
tonykorn97/ubuntu v2 6bb0f7a6d1e6 2 seconds ago 137 MB
<none> <none> 3248dea71f18 About a minute 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:/#
構建映象
我們使用命令 docker build , 從零開始來建立一個新的映象。為此,我們需要建立一個 Dockerfile 檔案,其中包含一組指令來告訴 Docker 如何構建我們的映象。
[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 ~]#
每一個指令都會在映象上建立一個新的層,每一個指令的字首都必須是大寫的。
第一條FROM,指定使用哪個映象源
RUN 指令告訴docker 在映象內執行命令,安裝了什麼。。。
然後,我們使用 Dockerfile 檔案,透過 docker build 命令來構建一個映象。
[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 ~]#
引數說明:
-t :指定要建立的目標映象名
. :Dockerfile 檔案所在目錄,可以指定Dockerfile 的絕對路徑
使用docker images 檢視建立的映象已經在列表中存在,映象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
<none> <none> 3248dea71f18 29 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 <none> e934aafc2206 3 weeks ago 199 MB
docker.io/ubuntu 15.10 9b9cb95443b5 21 months ago 137 MB
docker.io/training/webapp latest 6fae60ef3446 2 years ago 349 MB
[root@huixuan ~]#
我們可以使用新的映象來建立容器
[root@huixuan ~]# docker run -t -i centos /bin/bash
[root@6263f2eb5f6c /]# id tonykorn97
uid=1000(tonykorn97) gid=1000(tonykorn97) groups=1000(tonykorn97)
[root@6263f2eb5f6c /]#
從上面看到新映象已經包含我們建立的使用者tonykorn97
設定映象標籤
我們可以使用 docker tag 命令,為映象新增一個新的標籤。
[root@huixuan ~]# docker tag 3a42651974ec tonykorn97/centos:dev
docker tag 映象ID,這裡是 3a42651974ec ,使用者名稱稱、映象源名(repository name)和新的標籤名(tag)。
使用 docker images 命令可以看到,ID為860c279d2fec的映象多一個標籤。
[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
<none> <none> 3248dea71f18 32 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 <none> e934aafc2206 3 weeks ago 199 MB
docker.io/ubuntu 15.10 9b9cb95443b5 21 months ago 137 MB
docker.io/training/webapp latest 6fae60ef3446 2 years ago 349 MB
[root@huixuan ~]#
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/312079/viewspace-2153590/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- docker學習之使用映象Docker
- [Docker 系列]docker 學習 四,映象相關原理Docker
- 【Docker 系列】docker 學習 四,映象相關原理Docker
- docker學習筆記(3)- 映象Docker筆記
- docker入門1:使用docker映象Docker
- docker學習3:Docker容器使用Docker
- Docker容器學習梳理 - Dockerfile構建映象Docker
- Docker的映象使用-WindowDocker
- docker 映象建立與使用Docker
- [Docker系列·7]使用nsenter除錯Docker映象Docker除錯
- Docker學習筆記:映象、容器、資料卷Docker筆記
- docker學習(常用命令,映象燒錄,定製映象)Docker
- docker學習1|使用docker輸出hello worldDocker
- docker 映象Docker
- 學習瞭解使用dockerDocker
- 第三節 使用Docker映象Docker
- 使用Cloudflare Worker加速docker映象CloudDocker
- [Docker 系列]docker 學習 三Docker
- 【Docker 系列】docker 學習 三Docker
- Docker(五)Docker映象講解Docker
- 學習docker on windows (1): 為什麼要使用dockerDockerWindows
- [Docker 系列]docker 學習八,Docker 網路Docker
- dockerfile相關(4):docker常用基礎映象——java映象DockerJava
- 記錄使用 Docker 搭配 node 映象搭建環境學習 Nuxt.jsDockerUXJS
- Docker 學習筆記(第六集:使用 Dockerfile 定製映象)Docker筆記
- docker學習6:在Centos7 更改Docker預設映象和容器的位置DockerCentOS
- docker 學習Docker
- docker學習Docker
- 『現學現忘』Docker基礎 — 25、Docker映象講解Docker
- Docker私有映象Docker
- 聊聊Docker映象Docker
- yamlapi docker 映象YAMLAPIDocker
- docker 映象加速Docker
- Docker Nginx映象DockerNginx
- Docker 映象源Docker
- docker學習3:Docker Hello WorldDocker
- 【docker】docker映象匯出匯入Docker
- 新建的 docker 映象如何使用 VIMDocker