最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

在Ubuntu中安裝Docker教程

 更新時(shí)間:2016年12月30日 11:11:18   作者:張丹  
這篇文章主要介紹了在Ubuntu中安裝Docker教程,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

前言

網(wǎng)上已經(jīng)有很多介紹Docker安裝的文章,自己的安裝過程記錄一下,為了博客文章結(jié)構(gòu)的連貫性,為寫下一篇R和Docker的相遇做為環(huán)境基礎(chǔ),同時(shí)也給自己一個(gè)備忘。

目錄

  • Docker是什么?
  • 在Linux Ubuntu中安裝Docker
  • Docker鏡像倉(cāng)庫(kù)
  • 制作自己的Docker鏡像
  • 上傳Docker鏡像到公共倉(cāng)庫(kù)

1. Docker是什么?

在互聯(lián)網(wǎng)圈混,如果還不知道Docker你就out了。從2014年開始,docker技術(shù)在互聯(lián)網(wǎng)技術(shù)中異軍突起,2015-2016年很多公司已經(jīng)對(duì)Docker開始大量研究和應(yīng)用。

Docker是什么?Docker是一個(gè)開源的應(yīng)用容器引擎,系統(tǒng)級(jí)的輕量虛擬化技術(shù),為應(yīng)用程序的自動(dòng)化部署提供解決方案。

你可以快速創(chuàng)建一個(gè)容器,并在容器上開發(fā)和運(yùn)行你們的應(yīng)用程序,通過配置文件可以輕松實(shí)現(xiàn)應(yīng)用程序的自動(dòng)化安裝、部署和升級(jí)。

Docker的優(yōu)勢(shì)

Docker倍受業(yè)界追捧,必然有它非常明顯的優(yōu)勢(shì)和特點(diǎn)。

  • 輕量級(jí)資源:容器是在進(jìn)程級(jí)別隔離,并使用宿主機(jī)的內(nèi)核,而不需要虛擬化整個(gè)操作系統(tǒng)。不需要虛擬化和系統(tǒng)調(diào)用復(fù)雜的操作。因此節(jié)省了很大的額外開銷。不需要額外的hypervisor(虛擬化技術(shù))支持,不需要虛擬硬件,不需要額外完整的系統(tǒng)。
  • 可移植性:所需要的應(yīng)用都在容器中,可以在任意一臺(tái)docker主機(jī)上運(yùn)行
  • 可預(yù)測(cè)性:宿主機(jī)和容器相互不關(guān)心對(duì)方都運(yùn)行什么。只考慮所需的接口標(biāo)準(zhǔn)化

再不動(dòng)手把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證書的庫(kù),默認(rèn)這2個(gè)庫(kù)都已經(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對(duì)應(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)會(huì)啟動(dòng)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是否成功,運(yùn)行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:https://hub.docker.com

For more examples and ideas, visit:https://docs.docker.com/engine/userguide/

注意:我們?cè)趫?zhí)行上面的命令的時(shí)候,經(jīng)常會(huì)遇到一個(gè)錯(cuò)誤。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時(shí)則沒有權(quán)限。

3. Docker鏡像倉(cāng)庫(kù)

對(duì)于上面我們執(zhí)行的docker run hello-world命令,是什么意思呢?

把3個(gè)詞分開來看,docker代表docker程序,run代表命令,hello-world代表鏡像。就是用docker啟動(dòng)hello-world鏡像。由于我們剛裝好的docker,本地并沒有鏡像,那么run的命令會(huì)對(duì)docker遠(yuǎn)端的倉(cāng)庫(kù)中,找到名叫hello-world的鏡像,然后下載到本地,再運(yùn)行。

Docker官方的鏡像倉(cāng)庫(kù)訪問地址:https://hub.docker.com/

我們可以在Docker官方的倉(cāng)庫(kù)中,搜索你感興趣的系統(tǒng)、語言、技術(shù)框架等,有很多的技術(shù)都已經(jīng)被docker化了。我們就可以很方便地用別人已經(jīng)做好的容器,站在前人的基礎(chǔ)上繼續(xù)工作。

從列表中點(diǎn)開一項(xiàng)后,會(huì)有對(duì)這個(gè)鏡像的詳細(xì)介紹。比如,Ubuntu的鏡像。

如果我們想要下載這個(gè)鏡像,只需要按照他的提示,在命令行輸入 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

下載好后鏡像,會(huì)保存在本地的倉(cāng)庫(kù)中。查看本地的鏡像。

~ 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個(gè)本地鏡像,一個(gè)是hello-world,另一個(gè)是ubuntu。

4. 制作自己的Docker鏡像

我們也可以制作自己的鏡像,然后上傳到官方的倉(cāng)庫(kù)中,讓更多的人來使用。如果要制作自己的Docker鏡像,你只需要寫一個(gè)Dockerfile文件就行了。

下面我們創(chuàng)建一個(gè)能進(jìn)行網(wǎng)絡(luò)訪問的Docker,從http://fens.me網(wǎng)站抓取最新8篇的文章列表,并打印到控制臺(tái)。

創(chuàng)建項(xiàng)目目錄

~ mkdir fensme && cd fensme

創(chuàng)建Dockerfile,依賴于上文中下載的ubuntu鏡像,還要需要安裝curl庫(kù)用于網(wǎng)頁抓取,同時(shí)用于jq庫(kù)解析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

運(yùn)行fensme的鏡像,這樣就實(shí)現(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天善智能交流會(huì)第22場(chǎng): 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"
}

這個(gè)例子,我們通過Docker封裝了一個(gè)非常簡(jiǎn)單的爬蟲,當(dāng)你需要的時(shí)候啟動(dòng)它,把結(jié)果寫到數(shù)據(jù)庫(kù)中。當(dāng)執(zhí)行完任務(wù),系統(tǒng)資源就釋放了,你需要再為它考慮。

比較簡(jiǎn)單地就可以把一個(gè)技術(shù)或一個(gè)功能Docker化,從而構(gòu)建出個(gè)性化的Docker。

5. 上傳Docker鏡像到公共倉(cāng)庫(kù)

最后一步,其實(shí)就是把我們做好的Docker鏡像上傳到官方的倉(cāng)庫(kù)中,讓其他的人也可以使用。

首先需要去docker hub上面注冊(cè)一個(gè)賬號(hào),然后登錄進(jìn)去。

在docker hub上,創(chuàng)建一個(gè)自己的倉(cāng)庫(kù)。

在本地操作系統(tǒng),綁定docker hub的賬號(hào)

~ 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的鏡像加上命名空間,對(duì)應(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)站,刷新頁面。

最后,如果其他人需要使用這個(gè)docker鏡像,像最開始介紹的,直接下載運(yùn)行就可以了。

~ sudo docker run bsspirit/fensme

通過上面的操作,我們就把Docker在Linux Ubuntu中的系統(tǒng)安裝完成。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Docker容器生命周期相關(guān)命令及實(shí)踐詳解

    Docker容器生命周期相關(guān)命令及實(shí)踐詳解

    Docker容器生命周期管理是Docker平臺(tái)中的一項(xiàng)關(guān)鍵功能,它涉及對(duì)容器的創(chuàng)建、運(yùn)行、監(jiān)控以及銷毀等各個(gè)階段的操作,這篇文章主要介紹了Docker容器生命周期相關(guān)命令及實(shí)踐詳解的相關(guān)資料,需要的朋友可以參考下
    2025-11-11
  • Docker實(shí)現(xiàn)將鏡像從1.2GB壓縮到200MB的優(yōu)化指南

    Docker實(shí)現(xiàn)將鏡像從1.2GB壓縮到200MB的優(yōu)化指南

    作為一名在容器化領(lǐng)域摸爬滾打多年的開發(fā)者,深知Docker鏡像大小對(duì)生產(chǎn)環(huán)境的影響,本文將詳細(xì)記錄優(yōu)化歷程,從問題分析到解決方案實(shí)施,從理論原理到實(shí)戰(zhàn)技巧,感興趣的小伙伴可以了解下
    2025-09-09
  • Docker stop停止/remove刪除所有容器

    Docker stop停止/remove刪除所有容器

    這篇文章主要介紹了Docker stop停止/remove刪除所有容器,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • 詳解Docker cpu限制分析

    詳解Docker cpu限制分析

    本篇文章主要介紹了Docker cpu限制分析,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-01-01
  • 解決calico-apiserver認(rèn)證失敗問題

    解決calico-apiserver認(rèn)證失敗問題

    文章解決Calico APIServer狀態(tài)異常和命名空間刪除報(bào)錯(cuò)問題,指出需在三臺(tái)Master節(jié)點(diǎn)修改kube-apiserver的--requestheader-allowed-names參數(shù),允許aggregator CN,此參數(shù)控制聚合層代理連接的客戶端證書CN白名單
    2025-09-09
  • docker 中的–mount 和-v 參數(shù)區(qū)別解析

    docker 中的–mount 和-v 參數(shù)區(qū)別解析

    這篇文章主要介紹了docker 中的–mount 和-v 參數(shù)區(qū)別解析,--mount 更為靈活,適用于更復(fù)雜的掛載需求,使用哪種方式主要取決于個(gè)人或團(tuán)隊(duì)的偏好和具體的使用場(chǎng)景,需要的朋友可以參考下
    2023-12-12
  • Docker?Desktop一鍵搞定桌面容器開發(fā)環(huán)境(從此不折騰!)

    Docker?Desktop一鍵搞定桌面容器開發(fā)環(huán)境(從此不折騰!)

    Docker Desktop是官方提供的跨平臺(tái)圖形化容器管理工具,支持開發(fā)者快速構(gòu)建、運(yùn)行和測(cè)試容器化應(yīng)用,這篇文章主要介紹了Docker Desktop一鍵搞定桌面容器開發(fā)環(huán)境的相關(guān)資料,文中給出了詳細(xì)的圖文教程,需要的朋友可以參考下
    2026-04-04
  • 使用Docker-compose離線部署Django應(yīng)用的方法

    使用Docker-compose離線部署Django應(yīng)用的方法

    這篇文章主要介紹了使用Docker-compose離線部署Django應(yīng)用的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-03-03
  • Docker容器無法解析域名的處理

    Docker容器無法解析域名的處理

    這篇文章主要介紹了Docker容器無法解析域名的處理問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,
    2023-11-11
  • Docker命令行入門大全(這18條,你不得不知)

    Docker命令行入門大全(這18條,你不得不知)

    Docker有成千上百萬的命令行。因此Docker文檔內(nèi)容十分豐富,同時(shí)又讓剛?cè)腴T的新手感到不知所措。在本文中,我將重點(diǎn)介紹運(yùn)行Docker的關(guān)鍵命令。
    2019-09-09

最新評(píng)論

鄂温| 个旧市| 邮箱| 望谟县| 东乌| 文化| 汨罗市| 高唐县| 绥滨县| 贵阳市| 颍上县| 巴林左旗| 房山区| 高淳县| 博乐市| 平度市| 通河县| 永定县| 富蕴县| 敖汉旗| 慈利县| 海晏县| 襄汾县| 沧州市| 射阳县| 汕尾市| 张家界市| 贵定县| 山东| 乌拉特前旗| 汝阳县| 永吉县| 林甸县| 精河县| 临邑县| 旬阳县| 大渡口区| 林西县| 平阴县| 颍上县| 清新县|