上篇文章咱們介紹了docker的歷史由來帶來的一些好處,從這篇文章開始,咱們開始正式的進入Docker的世界,首先給你們介紹一下Docker一些基本概念。python
Docker的基本概念並非不少,就是三個:docker
鏡像(image)ubuntu
容器(Container)bash
倉庫(Repository)curl
深刻理解這三個概念,對於docker的理解會有很大的幫助。ui
什麼是image呢,簡單來講image就是一個鏡像,一個系統的snapshot,能夠類比於一個vm的image,或者若是你用過AWS,相似於一個AMI文件。url
什麼是Container,Container是簡易版的Linux環境,能夠類比的與一個Virtual Machine 或者 一個EC2的instance。spa
那個image和Container什麼關係呢?一個docker Container 須要加載一個image而後執行。image是run在Container裏的。code
什麼是repository呢?repository是一個image倉庫,能夠將打好的Docker image push這個倉庫中與他人分享。blog
相信上篇文章後你們已經把docker安裝好了吧。下邊咱們就來一步步的介紹這個三個概念。
運行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")
歡迎訂閱個人公衆號,第一時間獲取圖表君的新文章。