查找鏡像 1.我們可以從 Docker Hub 網站來搜索鏡像,Docker Hub 網址爲https://hub.docker.com/ 2.我們也可以使用 docker search 命令來搜索鏡像。比如我們需要一個 httpd 的鏡像來作爲我們的 web 服務。我們可以通過 docker search 命令搜索 httpd 來尋找適合我們的鏡像。 docker search httpd 點擊圖片查看大圖: NAME: 鏡像倉庫源的名稱 DESCRIPTION: 鏡像的描述 OFFICIAL: 是否 docker 官方發佈 stars: 類似 Github 裏面的 star,表示點贊、喜歡的意思。 AUTOMATED: 自動構建。 創建鏡像 當我們從 docker 鏡像倉庫中下載的鏡像不能滿足我們的需求時,我們可以通過以下兩種方式對鏡像進行更改。 1、從已經創建的容器中更新鏡像,並且提交這個鏡像 2、使用 Dockerfile 指令來創建一個新的鏡像
示例1.更新鏡像 更新鏡像之前,我們需要使用鏡像來創建一個容器。
docker run -t -i ubuntu:15.10 /bin/bash root@e218edb10161:/# 在運行的容器內使用 apt-get update 命令進行更新。 在完成操作之後,輸入 exit 命令來退出這個容器。 此時 ID 爲 e218edb10161 的容器,是按我們的需求更改的容器。我們可以通過命令 docker commit 來提交容器副本。 docker commit -m="has update" -a="admin" e218edb10161 runoob/ubuntu:v2 sha256:70bf1840fd7c0d2d8ef0a42a817eb29f854c1af8f7c59fc03ac7bdee9545aff8 各個參數說明: -m: 提交的描述信息 -a: 指定鏡像作者
e218edb10161:容器 ID runoob/ubuntu:v2: 指定要創建的目標鏡像名 我們可以使用 docker images 命令來查看我們的新鏡像 runoob/ubuntu:v2: docker images REPOSITORY TAG IMAGE ID CREATED SIZE runoob/ubuntu v2 70bf1840fd7c 15 seconds ago 158.5 MB ubuntu 15.10 4e3b13c8a266 4 weeks ago 136.3 MB 示例2.構建鏡像 我們使用命令 docker build , 從零開始來創建一個新的鏡像。爲此,我們需要創建一個 Dockerfile 文件,其中包含一組指令來告訴 Docker 如何構建我們的鏡像。 cat Dockerfile FROM centos:6.7 MAINTAINER Fisher "[email protected]" RUN /bin/echo 'root:123456' |chpasswd RUN useradd runoob RUN /bin/echo 'runoob:123456' |chpasswd RUN /bin/echo -e "LANG=\"en_US.UTF-8\"" >/etc/default/local EXPOSE 22 EXPOSE 80 CMD /usr/sbin/sshd -D
每一個指令的前綴都必須是大寫的。
注意:Dockerfile 的指令每執行一次都會在 docker 上新建一層。所以過多無意義的層,會造成鏡像膨脹過大。例如:
FROM centos
RUN yum install wget
RUN wget -O redis.tar.gz "http://download.redis.io/releases/redis-5.0.3.tar.gz"
RUN tar -xvf redis.tar.gz
以上執行會創建 3 層鏡像。可簡化爲以下格式:
FROM centos
RUN yum install wget \
&& wget -O redis.tar.gz "http://download.redis.io/releases/redis-5.0.3.tar.gz" \
&& tar -xvf redis.tar.gz
如上,以 && 符號連接命令,這樣執行後,只會創建 1 層鏡像。
第一條FROM,指定使用哪個鏡像源 RUN 指令告訴docker 在鏡像內執行命令,安裝了什麼。。。 然後,我們使用 Dockerfile 文件,通過 docker build 命令來構建一個鏡像。 docker build -t runoob/centos:6.7 .
Sending build context to Docker daemon 17.92 kB Step 1 : FROM centos:6.7 ---> d95b5ca17cc3 Step 2 : MAINTAINER Fisher "[email protected]" ---> Using cache ---> 0c92299c6f03 Step 3 : RUN /bin/echo 'root:123456' |chpasswd ---> Using cache ---> 0397ce2fbd0a Step 4 : RUN useradd runoob ......
參數說明: -t :指定要創建的目標鏡像名 . :Dockerfile 文件所在目錄,可以指定Dockerfile 的絕對路徑 使用docker images 查看創建的鏡像已經在列表中存在,鏡像ID爲860c279d2fec docker images REPOSITORY TAG IMAGE ID CREATED SIZE runoob/centos 6.7 860c279d2fec About a minute ago 190.6 MB
設置鏡像標籤 我們可以使用 docker tag 命令,爲鏡像添加一個新的標籤。 docker tag 860c279d2fec runoob/centos:dev docker tag 鏡像ID,這裏是 860c279d2fec ,用戶名稱、鏡像源名(repository name)和新的標籤名(tag)。 使用 docker images 命令可以看到,ID爲860c279d2fec的鏡像多一個標籤。 docker images REPOSITORY TAG IMAGE ID CREATED SIZE runoob/centos 6.7 860c279d2fec 5 hours ago 190.6 MB runoob/centos dev 860c279d2fec 5 hours ago 190.6 MB