圖表君聊Docker-images

上篇文章咱們介紹了docker的歷史由來帶來的一些好處,從這篇文章開始,咱們開始正式的進入Docker的世界,首先給你們介紹一下Docker一些基本概念。python

Docker的基本概念

Docker的基本概念並非不少,就是三個:docker

  • 鏡像(image)ubuntu

  • 容器(Container)bash

  • 倉庫(Repository)curl

深刻理解這三個概念,對於docker的理解會有很大的幫助。ui

  1. 什麼是image呢,簡單來講image就是一個鏡像,一個系統的snapshot,能夠類比於一個vm的image,或者若是你用過AWS,相似於一個AMI文件。url

  2. 什麼是Container,Container是簡易版的Linux環境,能夠類比的與一個Virtual Machine 或者 一個EC2的instance。spa

  3. 那個image和Container什麼關係呢?一個docker Container 須要加載一個image而後執行。image是run在Container裏的。code

  4. 什麼是repository呢?repository是一個image倉庫,能夠將打好的Docker image push這個倉庫中與他人分享。blog

圖片描述
相信上篇文章後你們已經把docker安裝好了吧。下邊咱們就來一步步的介紹這個三個概念。

Docker Image

運行docker pull命令能夠從倉庫中獲取鏡像。

docker pull ubuntu:16.04

當運行這條命令的時候,其實是從docker hub 上來請求標記爲16.04 的Ubuntu image,固然因爲衆所周知的緣由,pull的速度會很慢。因此咱們能夠選擇從國內的一些repository來pull images。例如這樣:

docker pull daocloud.io/ubuntu:14.04

如何看到咱們本地已經pull下來的images呢?使用docker images能夠列出本地已有的鏡像。

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
python              3.5-alpine          4f778158195b        5 days ago          87.58 MB
python              3.5.2-alpine        4f778158195b        5 days ago          87.58 MB
python              2.7-alpine          8b2171e895fd        3 weeks ago         71.97 MB

咱們能夠看到他是來自哪一個倉庫的,image的標價,全局惟一的ID,建立的時間 和鏡像的大小。一樣若是咱們想查看哪一個倉庫的images 能夠這樣:

docker images ubuntu

images下載好了,咱們怎麼運行這個image呢?easy

docker run -t -i ubuntu /bin/bash
    root@fc8e5743f790:/#

這樣咱們就使用這個image建立了一個Container 並運行bash應用。ps.上邊的 -t 讓docker分配一個僞終端並綁定到容器的標準輸入上,-i 讓容器的標準輸入保持打開。

下邊的一個問題是如何建立一個image呢,有兩種方法,一種是咱們基於現有的image,例如這樣:

docker run -i -t ubuntu /bin/bash
    root@c5c7fa33b061:/# apt-get update && apt-get install -y curl
    ...

咱們建立了一個docker container 並在其中裝上curl,這是注意咱們得記下他的ID。

docker commit c5c7fa33b061 ubuntu-have-curl
    docker history ubuntu-have-curl

咱們使用了docke commit 生成了一個new image ‘Ubuntu-have-curl’,並用docker history看看這個image的歷史。
下來咱們用這個image來curl一下。

docker run ubuntu-have-curl curl https://www.baidu.com
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  2443  100  2443    0     0  12234      0 --:--:-- --:--:-- --:--:-- 12215

easy? Yes.這樣咱們就build一個帶curl的Ubuntu image,你能夠把他push 到 docker hub上,讓更多人使用了。

使用docker commit 能夠對於一個鏡像作些簡單的擴展,但不方便分享和他人的利用。另一種方式是使用dockerfile,這是更加通用的方法,這裏暫不詳解,後邊會專門的介紹dockerfile。

咱們看了pull,build,run一個image,下來看看如何刪除吧。命令很簡單 docker rmi

docker rmi ubuntu:14.04

當咱們使用了一段時間之後,咱們運行docker images會發現有不少沒有tag的images,大量佔據着磁盤空間,那麼勢必就要清理下了。
運行下邊這條命令,咱們就能夠清理下了。

$ sudo docker rmi $(docker images -q -f "dangling=true")

歡迎訂閱個人公衆號,第一時間獲取圖表君的新文章。

圖片描述

相關文章
相關標籤/搜索