镜像操作命令
**使用tag命令添加鏡像標簽 **
**為了方便在后續工作中使用特定鏡像,還可以使用docker tag命令來為本地鏡像任 意添加新的標簽。 例如,添加一個新的myubuntu: latest鏡像標簽: **
docker tag ubuntu:latest myubuntu:latest再次使用docker images列出本地主機上鏡像信息, 可以看到多了一個myubuntu: latest標簽的鏡像
**用戶就可以直接使用myubuntu:latest來表示這個鏡像了。 **
**細心的讀者可能注意到, 這些myubuntu:latest鏡像的ID跟ubuntu:latest是 完全一致的,它們實際上指向了同一個鏡像文件,只是別名不同而巳。docker tag命令添 加的標簽實際上起到了類似鏈接的作用。 **
使用inspect命令查看詳細信息
docker inspect 鏡像名搜索鏡像
docker search 鏡像名刪除和清理鏡像
- 使用標簽刪除鏡像(只刪除一個)
- 使用鏡像ID來刪除鏡像(全部刪除包含標簽)
- 加上參數-f 強制刪除,不管是否有容器依賴
- docker image prune -f-a :刪除所有無用鏡像 -filter filter:只清理符合給定過濾器的鏡像 -f,-force:強制刪除鏡像,而不進行提示確認
創建鏡像
**創建鏡像的方法主要有三種: 基于已有鏡像的容器創建、 基于本地模板導入、 基于 Dockerfile創建。 **
本節主要介紹 Docker的 commit、 ******import**和 build 子命令。
1.基于已有容器創建(commit)
docker commit [options] container [repository[:tag]]#主要選項包括 -a, --author="" :作者信息 -c, --change=[] :提交的時候執行Dockerfile指令, 包括CMD | ENTRYPOINT | ENV | EXPOSE| LABEL | ONBUILD | USER| VOLUME | WORKDIR等; -m, --message= 11 11: 提交消息; -p, --pause式rue: 提交時暫停容器運行。**下面將演示如何使用該命令創建一個新鏡像。 **
首先, 啟動一個鏡像, 并在其中進行修改操作。例如, 創建一個test文件, 之后退出,
$ docker run -it ubuntu:18.04 /bin/bash #進入容器 root@a925cb40b3f0:/# touch test root@a925cb40b3f0:/# exit記住容器的 ID為a925cb40b3£0。 此時該容器與原 ubuntu:18.04 鏡像相比, 已經發生了改變, 可以使用
**docker [container] commit****命令來提交為一個新的鏡像。提交時可以使用 ID 或名稱來指定容器: **
$ docker [container] commit -m "Added a new file" -a "Docker Newbee" a925cb40b3f0 test:0.1**順利的話, 會返回新創建鏡像的 ID 信息, 例如9e9c814023bcffc3e67e892a235a fe6lb02f66a947d2747f724bd317dda02f27。 **
此時查看本地鏡像列表, 會發現新創建的鏡像已經存在了:
$ docker images2.基于本地模板導入**(import)**
**用戶也可以直接從一個操作系統模板文件導人一個鏡像,主要使用 **
docker [image] import [options] file | url | -[repository[:tag]]**要直接導人一個鏡像,可以使用 OpenVZ 提供的模板來創建,或者用其他已導出的鏡像 模板來創建。 **
**OPENVZ 模板的下載地址為 http://openvz.org/Download/templates/precreated。 **
例如,下載了 ubuntu-18.04 的模板壓縮包,之后使用以下命令導人即可:
$cat ubuntu-18.04-x86_64-minimal.tar.gz I docker import - ubuntu:lB.04然后查看新導人的鏡像,已經在本地存在了 :
$ docker images3.基于 Dockerfile創建**(build)**
基于 Dockerfile 創建是****最常見******的方式。 Dockerfile 是一個文本文件,利用給定的指令描述基于某個父鏡像創建新鏡像的過程。 **
下面給出 Dockerfile 的一個簡單示例,基于 debian:stretch-slim鏡像安裝 Python 3 環境,構成一個新的 python:3 鏡像:
FROM debian:stretch-slim LABEL version;” 1 . 。 ” maintainer=” docker user <docker_user@github>” RUN apt-get update && \apt-get install -y python3 && \apt-get clean && \rm -rf /var/lib/apt/lists/***創建鏡像的過程可以使用 **
docker [image] build編譯成功后本地將多出一 個 python : 3 鏡像:
$ docker [image] build -t python:3 Successful ly built 4b10f46eacc8 Successfully tagged python:3 $ docker imageslgrep python python 3 4b10f46eacc8 About a minute ago 95.lMB存入和載入鏡像
**本節主要介紹 Docker 鏡像的 save 和 load 子命令。 用戶可以使用 **
docker [image] save docker [image] load命令來存出和載人鏡像。
存出鏡像:
**如果要導出鏡像到本地文件,可以使用 **
docker [image] save**該命令支持 -o、 -output string 參數, 導出鏡像到指定的文件中。 **
例如,導出本地的 ubuntu:lS.04 鏡像為文件 ubuntu 18.04.tar ,如下所示 :
$ docker images $ docker save -o ubuntu 18 04 tar ubuntu:18 .04之后,用戶就可以通過復制 ubuntu 18.04.tar 文件將該鏡像分享給他人。
載入鏡像
**可以使用 **
docker [image] load將導出的 tar 文件再導人到本地鏡像庫。支持****-i、-input、string****選項,從指定文件中讀人鏡像內容。
** 例如,從文件 ubuntu 18.04.tar 導人鏡像到本地鏡像列表,如下所示:**
$ docker load -i ubuntu_18 04 tar 或者: $ docker load < ubuntu_18 04 tar這將導人鏡像及其相關的元數據信息(包括標簽等)。 導人成功后,可以使用
docker images** 命令進行查看, 與原鏡像一致。**
上傳鏡像
**本節主要介紹 Docker 鏡像的 push 子命令。 可以使用 **
docker [image] push命令上 傳鏡像到倉庫,默認上傳到 Docker Hub 官方倉庫(需要登錄)。
命令格式為
docker [image] push NAME[:TAG] | [REGISTRY_PORT[:REGISTRY_PORT]/]NAME[:TAG]**用戶在 Docker Hub 網站注冊后可以上傳自制的鏡像。 例如,用戶 user 上傳本地的 test :latest 鏡像,可以先添加新的標簽 **
**user/test:latest , 然后用 **
docker [image] push命令上傳鏡像:
$ docker tag test:latest user/test :latest $ docker push user/test:latest The push refers to a repository [docker.io/user/test] Sending image list Please login prior to push: Username : Password: Email :第一次上傳時,會提示輸入登錄信息或進行注冊,之后登錄信息會記錄到本地**~/ . docker****** 目錄下。
小結:
本章具體介紹了圍繞 Docker 鏡像的一系列重要命令操作,包括獲取、查看、 搜索、 刪 除、創建、存出和載入、上傳等。 讀者可以使用 docker image help 命令查看 Docker 支 持的鏡像操作子命令。 鏡像是使用 Docker 的前提,也是最基本的資源。 所以,在平時的 Docker 使用中, 要注 意積累自己定制的鏡像文件,并將自己創建的高質量鏡像分享到社區中。 在后續章節,筆者將通過更多案例介紹 Docker 鏡像的操作技巧。總結
- 上一篇: 中国科学院大学计算机学科评估,国科大30
- 下一篇: 音频:G723