Docker 入門四-鏡像使用

目標

  • 鏡像基礎命令

  • 構建鏡像的方式

鏡像基礎命令

# 列出鏡像列表
$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              14.04               90d5884b1ee0        5 days ago          188 MB
 
標籤解釋:
REPOSITORY  鏡像的倉庫源
TAG  鏡像的標籤
IMAGE ID  鏡像的Id
CREATED  鏡像的創建時間
SIZE  鏡像大小
 
同一倉庫源可以有多個 TAG,代表這個倉庫源的不同個版本,如 ubuntu 倉庫源裏,有 15.10、14.04 等多個不同的版本,我們使用 REPOSITORY:TAG 來定義不同的鏡像。
如果你不指定一個鏡像的版本標籤,例如你只使用 ubuntu,docker 將默認使用 ubuntu:latest 鏡像。
 
比如指定使用 ubuntu:15.10
$ docker run -i -t ubuntu:15.10 /bin/bash
 
# 獲取一個新的鏡像
$ docker pull ubuntu:15.10
 
# 查找鏡像 通過search 指令 可以查詢 Docker Hub 上面的鏡像 , 可以返回25 條信息
$ docker search httpd
NAME  DESCRIPTION         STARS     OFFICIAL     AUTOMATED
httpd The Apache..         2941      [OK]       centos/httpd-24-centos7                
 
NAME: 鏡像倉庫源的名稱
DESCRIPTION: 鏡像的描述
OFFICIAL: 是否 docker 官方發佈
stars: 類似 Github 裏面的 star,表示點贊、喜歡的意思
AUTOMATED: 自動構建
 
# 刪除鏡像
$ docker rmi 鏡像名稱
 

創建鏡像

當我們從 docker 鏡像倉庫中下載的鏡像不能滿足我們的需求時,我們可以通過以下兩種方式對鏡像進行更改。

  • 從已經創建的容器中更新鏡像,並且提交這個鏡像
  • 使用 Dockerfile 指令來創建一個新的鏡像

從已經創建的容器更新鏡像,並提交這個鏡像

# 準備好一個容器
$ docker run  --name web1 -i -t   ubuntu /bin/bash
# 更新鏡像
$ apt-get update
# 退出
$ exit
# 提交鏡像
docker commit -m="update images" -a="gengzi" e218edb10161  gengzi/ubuntu:v1
 
參數解釋:
-m 提交的描述信息
-a 作者信息
e218edb10161  容器的id
gengzi/ubuntu:v1  創建的鏡像名稱和標籤(tag)
 
# 查看當前的鏡像
$ docker images
 
# 啓動新鏡像
$ docker run -i -t gengzi/ubuntu:v1  /bin/bash
 
 

使用 Dockerfile 指令來創建一個新的鏡像

我們使用命令 docker build , 從零開始來創建一個新的鏡像。爲此,我們需要創建一個 Dockerfile 文件,其中包含一組指令來告訴 Docker 如何構建我們的鏡像。

# 創建Dockerfile  文件
mkdir -p /home/dockerfile
cd /home/dockerfile
vi Dockerfile
輸入
FROM    centos:6.7
MAINTAINER      Fisher "[email protected]"
RUN     /bin/echo  "hello world"
 
每一個指令都會在鏡像上創建一個新的層,每一個指令的前綴都必須是大寫的。
第一條FROM,指定使用哪個鏡像源
RUN 指令告訴docker 在鏡像內執行命令,安裝了什麼。。。
然後,我們使用 Dockerfile 文件,通過 docker build 命令來構建一個鏡像。

 
# 使用docker build 構建鏡像
$ docker build -t gengzi/centos:6.7 .
 
----------------- 執行過程 ---------------------------------
Sending build context to Docker daemon 3.584 kB
Step 1 : FROM centos:6.7
6.7: Pulling from library/centos
 
cbddbc0189a0: Pull complete
Digest: sha256:4c952fc7d30ed134109c769387313ab864711d1bd8b4660017f9d27243622df1
Status: Downloaded newer image for centos:6.7
---> 9f1de3c6ad53
Step 2 : MAINTAINER Fisher "[email protected]"
---> Running in b9f024efcf6d
---> d38b2abac6a2
Removing intermediate container b9f024efcf6d
Step 3 : RUN /bin/echo  "hello world"
---> Running in 0111b30d6693
hello world
---> e962a020a72c
Removing intermediate container 0111b30d6693
Successfully built e962a020a72c
SECURITY WARNING: You are building a Docker image from Windows against a non-Windows Docker host. All files and directories added to build context will have '-rwxr-xr-x' permissions. It is recommended to double check and reset permissions for sensitive files and directories.
 
------------------------------------------------------------------------------------
 
-t :指定要創建的目標鏡像名
. :Dockerfile 文件所在目錄,可以指定Dockerfile 的絕對路徑
 
# 查看現在的鏡像
$ docker images
 
# 爲鏡像設置一個新的標籤
$ docker tag 860c279d2fec gengzi/centos:dev
 
docker tag 鏡像ID,這裏是 860c279d2fec ,用戶名稱、鏡像源名(repository name)和新的標籤名(tag)。
使用 docker images 命令可以看到,ID爲860c279d2fec的鏡像多一個標籤。
 
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章