共計 7573 個字符,預(yù)計需要花費 19 分鐘才能閱讀完成。
本篇內(nèi)容介紹了“Ubuntu 中如何安裝 Docker”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓丸趣 TV 小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
1. docker 是什么?
在互聯(lián)網(wǎng)圈混,如果還不知道 docker 你就 out 了。從 2014 年開始,docker 技術(shù)在互聯(lián)網(wǎng)技術(shù)中異軍突起,2015-2016 年很多公司已經(jīng)對 docker 開始大量研究和應(yīng)用。
docker 是什么?docker 是一個開源的應(yīng)用容器引擎,系統(tǒng)級的輕量虛擬化技術(shù),為應(yīng)用程序的自動化部署提供解決方案。
你可以快速創(chuàng)建一個容器,并在容器上開發(fā)和運行你們的應(yīng)用程序,通過配置文件可以輕松實現(xiàn)應(yīng)用程序的自動化安裝、部署和升級。
docker 的優(yōu)勢
docker 倍受業(yè)界追捧,必然有它非常明顯的優(yōu)勢和特點。
輕量級資源:容器是在進(jìn)程級別隔離,并使用宿主機的內(nèi)核,而不需要虛擬化整個操作系統(tǒng)。不需要虛擬化和系統(tǒng)調(diào)用復(fù)雜的操作。因此節(jié)省了很大的額外開銷。不需要額外的 hypervisor(虛擬化技術(shù))支持,不需要虛擬硬件,不需要額外完整的系統(tǒng)。
可移植性:所需要的應(yīng)用都在容器中,可以在任意一臺 docker 主機上運行
可預(yù)測性:宿主機和容器相互不關(guān)心對方都運行什么。只考慮所需的接口標(biāo)準(zhǔn)化
再不動手把 docker 用上,你就真的 out 了。
2. 在 linux ubuntu 中安裝 docker
安裝 docker 只需 3 步,下載 docker, 安裝 docker,檢查 docker 是否成功。
docker 目前支持主流的 3 種操作系統(tǒng)的 linux, mac, windows 的環(huán)境,本文使用的 linux 系統(tǒng)環(huán)境為:linux ubuntu 14.04.4 lts 64bit。在 ubuntu 中下載和安裝 docker 可以直接用 apt-get 搞定。
由于 docker 在 1.7.1 以后的版本指定了自己的源,所以我們需要先在 apt 中配置 docker 的源。
更新 apt 的源,安裝 https 和 ca 證書的庫,默認(rèn)這 2 個庫都已經(jīng)裝了。
~ sudo apt-get update
~ sudo apt-get install apt-transport-https ca-certificates
添加秘鑰 gpg 到 apt 配置中。
~ sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118e89f3a912897c070adbf76221572c52609d
增加 docker 的源到 /etc/apt/souces.list 文件中,我的版本是 14.04 對應(yīng) ubuntu-trusty。
~ sudo vi /etc/apt/sources.list
# 增加到最后一行
deb https://apt.dockerproject.org/repo ubuntu-trusty main
接下來,就可以用可以用 apt-get 直接安裝 docker 了。
~ sudo apt-get update
~ sudo apt-get install docker-engine
安裝完成,默認(rèn)會啟動 docker。
# 檢查 docker 服務(wù)
~ service docker status
docker start/running, process 10013
# 檢查 docker 進(jìn)行
~ ps -aux|grep docker
root 10013 0.0 1.0 424948 40584 ? ssl 22:29 0:00 /usr/bin/dockerd --raw-logs
root 10022 0.0 0.2 199680 10280 ? ssl 22:29 0:00 docker-containerd -l unix:///var/run/docker/libcontainerd/docker-containerd.sock --shimdocker-containerd-shim --metrics-interval=0 --start-timeout 2m --state-dir /var/run/docker/libcontainerd/containerd --runtime docker-runc
# 檢查 docker 版本
~ sudo docker version
client:
version: 1.12.1
api version: 1.24
go version: go1.6.3
git commit: 23cf638
built: thu aug 18 05:22:43 2016
os/arch: linux/amd64
server:
version: 1.12.1
api version: 1.24
go version: go1.6.3
git commit: 23cf638
built: thu aug 18 05:22:43 2016
os/arch: linux/amd64
檢查 docker 是否成功,運行 hello-world。如果出現(xiàn)下面的信息,表示 docker 引擎安裝成功。
~ sudo docker run hello-world
unable to find image hello-world:latest locally
latest: pulling from library/hello-world
c04b14da8d14: pull complete
digest: sha256:0256e8a36e2070f7bf2d0b0763dbabdd67798512411de4cdcf9431a1feb60fd9
status: downloaded newer image for hello-world:latest
hello from docker!
this message shows that your installation appears to be working correctly.
to generate this message, docker took the following steps:
1. the docker client contacted the docker daemon.
2. the docker daemon pulled the hello-world image from the docker hub.
3. the docker daemon created a new container from that image which runs the executable that produces the output you are currently reading.
4. the docker daemon streamed that output to the docker client, which sent it to your terminal.
to try something more ambitious, you can run an ubuntu container with:
$ docker run -it ubuntu bash
share images, automate workflows, and more with a free docker hub account:
for more examples and ideas, visit:
注意:我們在執(zhí)行上面的命令的時候,經(jīng)常會遇到一個錯誤。cannot connect to the docker daemon. is the docker daemon running on this host?
比如,直接輸入 docker run hello-world 命令。
~ docker run hello-world
docker: cannot connect to the docker daemon. is the docker daemon running on this host?.
see docker run –help .
這是由于權(quán)限的問題,docker 默認(rèn)和 root 權(quán)限綁定,如果不加 sudo 時則沒有權(quán)限。
3. docker 鏡像倉庫
對于上面我們執(zhí)行的 docker run hello-world 命令,是什么意思呢?
把 3 個詞分開來看,docker 代表 docker 程序,run 代表命令,hello-world 代表鏡像。就是用 docker 啟動 hello-world 鏡像。由于我們剛裝好的 docker,本地并沒有鏡像,那么 run 的命令會對 docker 遠(yuǎn)端的倉庫中,找到名叫 hello-world 的鏡像,然后下載到本地,再運行。
docker 官方的鏡像倉庫訪問地址:
我們可以在 docker 官方的倉庫中,搜索你感興趣的系統(tǒng)、語言、技術(shù)框架等,有很多的技術(shù)都已經(jīng)被 docker 化了。我們就可以很方便地用別人已經(jīng)做好的容器,站在前人的基礎(chǔ)上繼續(xù)工作。
從列表中點開一項后,會有對這個鏡像的詳細(xì)介紹。比如,ubuntu 的鏡像。
如果我們想要下載這個鏡像,只需要按照他的提示,在命令行輸入 docker pull ubuntu 這樣就行了。
~ sudo docker pull ubuntu
using default tag: latest
latest: pulling from library/ubuntu
2f0243478e1f: pull complete
d8909ae88469: pull complete
820f09abed29: pull complete
01193a8f3d88: pull complete
digest: sha256:8e2324f2288c26e1393b63e680ee7844202391414dbd48497e9a4fd997cd3cbf
status: downloaded newer image for ubuntu:latest
下載好后鏡像,會保存在本地的倉庫中。查看本地的鏡像。
~ sudo docker images
repository tag image id created size
ubuntu latest f8d79ba03c00 2 weeks ago 126.4 mb
hello-world latest c54a2cc56cbb 7 weeks ago 1.848 kb
目前,有 2 個本地鏡像,一個是 hello-world,另一個是 ubuntu。
4. 制作自己的 docker 鏡像
我們也可以制作自己的鏡像,然后上傳到官方的倉庫中,讓更多的人來使用。如果要制作自己的 docker 鏡像,你只需要寫一個 dockerfile 文件就行了。
下面我們創(chuàng)建一個能進(jìn)行網(wǎng)絡(luò)訪問的 docker,從網(wǎng)站抓取最新 8 篇的文章列表,并打印到控制臺。
創(chuàng)建項目目錄
~ mkdir fensme cd fensme
創(chuàng)建 dockerfile,依賴于上文中下載的 ubuntu 鏡像,還要需要安裝 curl 庫用于網(wǎng)頁抓取,同時用于 jq 庫解析 json 數(shù)據(jù)。
~ vi dockerfile
from ubuntu:latest
run apt-get update apt-get install -y curl jq
cmd curl http://api.fens.me/blogs/ | jq .[]
打包,創(chuàng)建名為 fensme 的鏡像。
# 打包
~ sudo docker build -t fensme .
# 查看鏡像列表
~ sudo docker images
repository tag image id created size
fensme latest 41b68972b35a 4 minutes ago 182.8 mb
ubuntu latest f8d79ba03c00 2 weeks ago 126.4 mb
hello-world latest c54a2cc56cbb 7 weeks ago 1.848 kb
運行 fensme 的鏡像,這樣就實現(xiàn)了網(wǎng)站數(shù)據(jù)的抓取。
~ sudo docker run fensme
% total % received % xferd average speed time time time current
dload upload total spent left speed
100 1421 100 1421 0 0 715 0 0:00:01 0:00:01 --:--:-- 715
title : r 語言解讀自回歸模型 ,
date : 20160819,
link : http://blog.fens.me/r-ar/ ,
img : http://blog.fens.me/wp-content/uploads/2016/08/r-ar.png
title : r 語言量化投資常用包總結(jié) ,
date : 20160810,
link : http://blog.fens.me/r-quant-packages/ ,
img : http://blog.fens.me/wp-content/uploads/2016/08/quant-packages.png
title : r 語言跨界調(diào)用 c ++ ,
date : 20160801,
link : http://blog.fens.me/r-cpp-rcpp ,
img : http://blog.fens.me/wp-content/uploads/2016/08/rcpp.png
title : r 語言解讀多元線性回歸模型 ,
date : 20160727,
link : http://blog.fens.me/r-multi-linear-regression/ ,
img : http://blog.fens.me/wp-content/uploads/2016/07/reg-multi-liner.png
title : r 語言解讀一元線性回歸模型 ,
date : 20160725,
link : http://blog.fens.me/r-linear-regression/ ,
img : http://blog.fens.me/wp-content/uploads/2016/07/reg-liner.png
title : r 語言中文分詞包 jiebar ,
date : 20160721,
link : http://blog.fens.me/r-word-jiebar/ ,
img : http://blog.fens.me/wp-content/uploads/2016/07/jiebar.png
title : 2016 天善智能交流會第 22 場: r 語言為量化而生 ,
date : 20160704,
link : http://blog.fens.me/meeting-hellobi-20160701/ ,
img : http://blog.fens.me/wp-content/uploads/2016/07/meeting-hellobi.png
title : r 語言為量化而生 ,
date : 20160703,
link : http://blog.fens.me/r-finance/ ,
img : http://blog.fens.me/wp-content/uploads/2016/07/r-finance.png
}
這個例子,我們通過 docker 封裝了一個非常簡單的爬蟲,當(dāng)你需要的時候啟動它,把結(jié)果寫到數(shù)據(jù)庫中。當(dāng)執(zhí)行完任務(wù),系統(tǒng)資源就釋放了,你需要再為它考慮。
比較簡單地就可以把一個技術(shù)或一個功能 docker 化,從而構(gòu)建出個性化的 docker。
5. 上傳 docker 鏡像到公共倉庫
最后一步,其實就是把我們做好的 docker 鏡像上傳到官方的倉庫中,讓其他的人也可以使用。
首先需要去 docker hub 上面注冊一個賬號,然后登錄進(jìn)去。
在 docker hub 上,創(chuàng)建一個自己的倉庫。
在本地操作系統(tǒng),綁定 docker hub 的賬號
~ sudo docker login --username=bsspirit --email=bsspirit@163.com
flag --email has been deprecated, will be removed in 1.13.
password:
login succeeded
接下來,要你剛才創(chuàng)建的 fensme 的鏡像加上命名空間,對應(yīng)該 docker hub 上面鏡像名 bsspirit/fensme。
# 給 fensme 增加命名空間
~ sudo docker tag 8496b10e857a bsspirit/fensme:latest
~ sudo docker images
repository tag image id created size
bsspirit/fensme latest 8496b10e857a about a minute ago 182.8 mb
fensme latest 8496b10e857a 15 minutes ago 182.8 mb
ubuntu latest f8d79ba03c00 2 weeks ago 126.4 mb
hello-world latest c54a2cc56cbb 7 weeks ago 1.848 kb
上傳 bsspirit/fensme 鏡像,然后你就可以在 docker hub 的網(wǎng)站上看到你自己的鏡像了。
~ sudo docker push bsspirit/fensme
the push refers to a repository [docker.io/bsspirit/fensme]
d9c50c22842b: pushed
4699cbd1a947: pushed
2bed5b3ec49f: pushed
3834bde7e567: pushed
d8d865b23727: pushed
latest: digest: sha256:bfea736a92b6e602d6bbca867715b0e985f2e9bc3ea4a75b545d7e009e22ac2b size: 1362
打開 docker hub 網(wǎng)站,刷新頁面。
最后,如果其他人需要使用這個 docker 鏡像,像最開始介紹的,直接下載運行就可以了。
~ sudo docker run bsspirit/fensme
通過上面的操作,我們就把 docker 在 linux ubuntu 中的系統(tǒng)安裝完成。
“Ubuntu 中如何安裝 Docker”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注丸趣 TV 網(wǎng)站,丸趣 TV 小編將為大家輸出更多高質(zhì)量的實用文章!