使用 Docker 鏡像 | Docker 系列

2020-08-29 AlwaysBeta


前文回顧:

  • 初識 docker 與安裝 | Docker 系列

今天來說說鏡像,鏡像是 Docker 中特別重要的概念,是容器運行的基礎,沒有鏡像,後面的一切都不成立。

典型的鏡像表示方法分三部分,用 / 分隔:

remote image hub/namespace/name:tag

  • remote image hub:存儲鏡像的 Web 伺服器地址;
  • namespace:命名空間,表示一個用戶或組織下的所有鏡像;
  • name:鏡像名稱;
  • tag:鏡像標籤。

其實,我們常看到的鏡像是長這樣的 name:tag,因為從 Docker 官方倉庫拉下來的鏡像,是可以省略前兩部分的。

獲取鏡像

使用 docker pull name[:tag] 命令來下載鏡像,如果不顯式指定 tag,則默認會選擇 latest 標籤。

$ docker pull busyboxUsing default tag: latestlatest: Pulling from library/busybox76df9210b28c: Pull completeDigest: sha256:95cf004f559831017cdf4628aaf1bb30133677be8702a8c5f2994629f637a209Status: Downloaded newer image for busybox:latestdocker.io/library/busybox:latest

查看鏡像信息

使用 docker images 命令列出本機鏡像。

$ docker imagesREPOSITORY          TAG                 IMAGE ID            CREATED             SIZEbusybox             latest              1c35c4412082        6 days ago          1.22MB

鏡像 ID 十分重要,它唯一標識了鏡像。

使用 docker tag 命令來給本地鏡像添加新的標籤。

$ docker tag busybox:latest mybusybox:latest$ docker imagesREPOSITORY          TAG                 IMAGE ID            CREATED             SIZEbusybox             latest              1c35c4412082        6 days ago          1.22MBmybusybox           latest              1c35c4412082        6 days ago          1.22MB

可以看到,現在本地的兩個鏡像 ID 是相同的,表示它們指向了同一個鏡像,只是標籤不同而已。

使用 docker inspect 命令來獲取鏡像的詳細信息。

使用 docker history 命令列出鏡像各層的創建信息。

搜索鏡像

使用 docker search 命令來搜索鏡像。

$ docker search centosNAME                               DESCRIPTION                                     STARS               OFFICIAL            AUTOMATEDcentos                             The official build of CentOS.                   6039                [OK]ansible/centos7-ansible            Ansible on Centos7                              130                                     [OK]consol/centos-xfce-vnc             Centos container with &34; VNC session…   116                                     [OK]jdeathe/centos-ssh                 OpenSSH / Supervisor / EPEL/IUS/SCL Repos - …   114                                     [OK]centos/mysql-57-centos7            MySQL 5.7 SQL database server                   76imagine10255/centos6-lnmp-php56    centos6-lnmp-php56                              58                                      [OK]

刪除和清理鏡像

使用 docker rmi 命令來刪除鏡像,分兩種方式:一種是通過鏡像名和標籤來刪除;一種是通過鏡像 ID 來刪除。平時使用過程中,大部分都是通過鏡像 ID 來刪除。

$ docker imagesREPOSITORY          TAG                 IMAGE ID            CREATED             SIZEbusybox             latest              1c35c4412082        8 days ago          1.22MBmybusybox           latest              1c35c4412082        8 days ago          1.22MB$ docker rmi mybusybox:latest 運行一個容器$ docker run -it centos /bin/bash touch text.txt[root@f0767e2e8964 /] 查看容器$ docker ps -aCONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     PORTS               NAMESf0767e2e8964        centos              &34;         17 seconds ago      Exited (0) 4 seconds ago                       stupefied_ptolemy39;add file& 查看除了原有鏡像,還有新生成的鏡像,標籤不同$ docker imagesREPOSITORY          TAG                 IMAGE ID            CREATED             SIZEcentos              1.0                 a651491d9bfe        4 seconds ago       237MBcentos              latest              470671670cac        4 months ago        237MB

2、基於本地模板導入

使用 docker import 命令將模板導入成鏡像。

3、基於 Dockerfile 創建

這是在實際工作中使用最多的方法,先賣個關子,後續單獨寫一篇來詳細介紹。

存出和載入鏡像

使用 docker save 命令保存鏡像到文件。

$ docker save -o busybox.tar busybox

執行之後,在當前目錄下就會有 busybox.tar 文件了,然後可以把這個文件分享給其他人。

收到文件之後,使用 docker load 命令來載入鏡像。

$ docker load < busybox.tar

上傳鏡像

使用 docker push 命令將鏡像上傳到鏡像倉庫,這樣在其他伺服器上想用這個鏡像,直接 docker pull 一下就可以了,非常方便。

默認的話,會上傳到 Docker Hub 官方倉庫,我們也可以搭建自己的私有倉庫。一般來說,公司內部都會有自己的鏡像倉庫,我們根據需求來使用就可以了。

這篇就到這裡吧,下篇來說說容器。

參考書籍:

  • 《Docker 技術入門與實戰》
  • 《Docker 進階與實戰》

往期精彩:

初識 Docker 與安裝 | Docker 系列

技術博客:

https://github.com/yongxinz/tech-blog

同時,也歡迎關注我的微信公眾號 AlwaysBeta,更多精彩內容等你來。

相關焦點

  • 使用Docker 鏡像|Docker 系列
    前文回顧:初識 Docker 與安裝 | Docker 系列今天來說說鏡像,鏡像是 Docker 中特別重要的概念,是容器運行的基礎,沒有鏡像,後面的一切都不成立。使用 docker tag 命令來給本地鏡像添加新的標籤。
  • Docker系列教程01-使用Docker鏡像
    ,比如 ubuntu 表示ubuntu 系列的基礎鏡像TAG鏡像的標籤信息,人為標識鏡像的不同版本IMAGE ID鏡像的ID,用來唯一標識鏡像,如果兩個鏡像ID相同,表示它們指向同一個鏡像,只是標籤名稱不同而已
  • 使用 Dockerfile 創建鏡像 | Docker 系列
    之前寫鏡像的時候說到創建鏡像最常用的方式是使用 dockerfile,這篇就來重點說一下,到底是怎麼使用 Dockerfile 來創建的。基本結構 2、維護者信息MAINTAINER docker_user docker_user@email.com34;deb http://archive.ubuntu.com/ubuntu/ raring main universe
  • 使用Docker鏡像
    使用images命令列出所有鏡像開發者可以使用docker images或者docker image ls命令來列出本地主機上已有的所有鏡像的基本信息,如下所示:[envythink@localhost ~]$ docker imagesREPOSITORY
  • docker 鏡像的使用
    docker images我的本地主機中只有ubuntu和busybox 2個鏡像,ubuntu鏡像是我自己下載的,busybox鏡像是docker自動下載的。鏡像列表的各個選項說明:REPOSITORY:表示鏡像的倉庫源TAG:鏡像的標籤IMAGE ID:鏡像IDCREATED:鏡像創建時間SIZE:鏡像大小同一個倉庫源可以有多個TAG,代表不同的版本,我們可以使用倉庫源:鏡像標籤的方式表示不同的鏡像。
  • 使用Dockerfile 創建鏡像|Docker 系列
    之前寫鏡像的時候說到創建鏡像最常用的方式是使用 Dockerfile,這篇就來重點說一下,到底是怎麼使用 Dockerfile 來創建的。基本結構# 1、第一行必須是 FROM 基礎鏡像信息FROM ubuntu# 2、維護者信息MAINTAINER docker_user docker_user@email.com
  • Docker實戰005:docker鏡像使用詳解
    鏡像docker鏡像是一個文件系統(它沒有狀態也不會被改變),鏡像可以啟動複雜的軟體供用戶使用。如果還想更精確地查看docker鏡像可以添加filter進行過濾,過濾屬性有dangling、before、since、lable、reference。如果需要查看docker鏡像的詳細信息可以使用命令:docker inspect ubuntu:12.04 實現,查看鏡像歷史可以通過命令:docker history ubuntu:12.04實現。
  • docker系列——使用maven構建docker鏡像並上傳鏡到像倉庫
    摘要上幾遍都說到了docker的相關指令和使用Dockerfile構建鏡像,但有些時候我們在本地開發,想要使用maven>一鍵式構建鏡像或者直接使用maven將鏡像推送到我們的指定倉庫,那麼這裡就需要使用maven的docker插件了。
  • 雲計算核心技術Docker教程: Docker鏡像使用
    當運行容器時,使用的鏡像如果在本地中不存在,docker 就會自動從 docker 鏡像倉庫中下載,默認是從 Docker Hub 公共鏡像源下載。我們可以使用 docker images 來列出本地主機上的鏡像。
  • 雲計算核心技術Docker教程:Docker鏡像使用
    來源:TechWeb.com.cn當運行容器時,使用的鏡像如果在本地中不存在,docker 就會自動從 docker 鏡像倉庫中下載,默認是從 Docker Hub 公共鏡像源下載。我們可以使用 docker images 來列出本地主機上的鏡像。
  • docker系列學習之如何有效的管理docker鏡像
    構建nginx鏡像FROM nginxRUN echo &39; > /usr/share/nginx/html/index.html使用docker build -t nginx:test.構建鏡像即可,
  • 一起學習docker04-docker鏡像
    一起學習docker系列:一、關於鏡像鏡像是 Docker 的三大組件之一。>三、手工製作鏡像一般情況下,公司內部使用的鏡像都是經過內部情況進行優化處理的,所有需要進行修改,然後傳到私有倉庫。--no-cache 標誌可以被用於強制取消緩存使用。ENV ENV指令可以用於為docker容器設置環境變量ENV設置的環境變量,可以使用 docker inspect命令來查看。同時還可以使用docker run --env <key>=<value>來修改環境變量。USER USER 用來切換運行屬主身份的。
  • 雲計算核心技術Docker教程:Docker使用鏡像加速
    來源:TechWeb.com.cn使用docker在國內從 DockerHub 拉取鏡像有時會遇到困難,此時可以配置鏡像加速器。1,使用Docker 官方加速器 https://registry.docker-cn.com 直接從該鏡像加速地址進行拉取。
  • 雲計算核心技術Docker教程: Docker使用鏡像加速
    使用docker在國內從 DockerHub 拉取鏡像有時會遇到困難,此時可以配置鏡像加速器。1,使用Docker 官方加速器 https://registry.docker-cn.com 直接從該鏡像加速地址進行拉取。
  • Docker系列教程04-Docker構建鏡像的三種方式
    簡介創建鏡像的方法主要有三種:基於已有鏡像的容器創建、基於本地模板導入、基於Dockerfile創建。今天就逐一講述為大家講述,如何構建屬於自己的docker鏡像。1、基於容器構建鏡像基於已有容器構建鏡像主要是通過docker commit命令來構建新的鏡像,語法規則如下:下面將演示下如何基於已有容器構建鏡像1、首先,創建一個容器,並在其容器內創建一個test文件,之後退出。
  • docker系列使用Dockerfile構建鏡像「指令全在這裡了詳細」
    前言Dockerfile是用來構建一個鏡像的文本,裡面包含了一系列構建鏡像的命令,可以通過這些指令將我們的項目工程、tomcat、nginx等打包成鏡像。CMD [&34;,&34;,...] 34;This is a test.&34;<源路徑1>&34;<目標路徑>&34;executable&34;param1&34;param2&34;nginx&34;-c& 定參CMD [&34;] 聲明暴露一個埠示例EXPOSE port1 也可使用-P選項啟動docker run -P image 相應的運行容器使用的命令
  • Docker新手入門之四:Docker鏡像和倉庫的基本使用
    拉取鏡像在使用docker run從一個鏡像啟動容器時,Docker首先會現在本地查找是否存在該鏡像。如果在本地沒有找到該鏡像,則會先從Dockers Hub上下載該鏡像後在運行。Ps:如之前所說,如果沒有指定tag,則默認使用latest標籤。
  • Docker鏡像製作
    最底端是 bootfs,並使用宿主機的bootfs-復用第二層是 root文件系統rootfs,稱為base image然後再往上可以疊加其他的鏡像文件統一文件系統(Union File System)技術能夠將不同的層整合成一個文件系統,為這些層提供了一個統一的視角,隱藏多層的存在,我們看來只是存在一個文件系統。
  • 操作 Docker 容器 | Docker 系列
    與安裝 | Docker 系列使用 Docker 鏡像 | Docker 系列有了鏡像的基礎,下面就開始創建容器吧。查看容器上文已經介紹過了,使用 docker ps 命令查看當前容器。使用 docker logs 查看容器日誌輸出。使用 docker container inspect 命令查看容器的詳細信息。
  • 如何使用官方NGINX Docker鏡像?
    本教程將介紹NGINX官方Docker鏡像及其使用方法。我們將從在本地運行靜態Web伺服器開始,然後構建自定義鏡像以容納Web伺服器及它需要提供的文件。最後,我們將介紹為簡單的REST API創建反向代理伺服器,並介紹如何與您的團隊共享該鏡像。