共计 7573 个字符,预计需要花费 19 分钟才能阅读完成。
本篇内容介绍了“Ubuntu 中如何安装 Docker”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让丸趣 TV 小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
1. docker 是什么?
在互联网圈混,如果还不知道 docker 你就 out 了。从 2014 年开始,docker 技术在互联网技术中异军突起,2015-2016 年很多公司已经对 docker 开始大量研究和应用。
docker 是什么?docker 是一个开源的应用容器引擎,系统级的轻量虚拟化技术,为应用程序的自动化部署提供解决方案。
你可以快速创建一个容器,并在容器上开发和运行你们的应用程序,通过配置文件可以轻松实现应用程序的自动化安装、部署和升级。
docker 的优势
docker 倍受业界追捧,必然有它非常明显的优势和特点。
轻量级资源:容器是在进程级别隔离,并使用宿主机的内核,而不需要虚拟化整个操作系统。不需要虚拟化和系统调用复杂的操作。因此节省了很大的额外开销。不需要额外的 hypervisor(虚拟化技术)支持,不需要虚拟硬件,不需要额外完整的系统。
可移植性:所需要的应用都在容器中,可以在任意一台 docker 主机上运行
可预测性:宿主机和容器相互不关心对方都运行什么。只考虑所需的接口标准化
再不动手把 docker 用上,你就真的 out 了。
2. 在 linux ubuntu 中安装 docker
安装 docker 只需 3 步,下载 docker, 安装 docker,检查 docker 是否成功。
docker 目前支持主流的 3 种操作系统的 linux, mac, windows 的环境,本文使用的 linux 系统环境为:linux ubuntu 14.04.4 lts 64bit。在 ubuntu 中下载和安装 docker 可以直接用 apt-get 搞定。
由于 docker 在 1.7.1 以后的版本指定了自己的源,所以我们需要先在 apt 中配置 docker 的源。
更新 apt 的源,安装 https 和 ca 证书的库,默认这 2 个库都已经装了。
~ 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 对应 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
安装完成,默认会启动 docker。
# 检查 docker 服务
~ service docker status
docker start/running, process 10013
# 检查 docker 进行
~ 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。如果出现下面的信息,表示 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:
注意:我们在执行上面的命令的时候,经常会遇到一个错误。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 .
这是由于权限的问题,docker 默认和 root 权限绑定,如果不加 sudo 时则没有权限。
3. docker 镜像仓库
对于上面我们执行的 docker run hello-world 命令,是什么意思呢?
把 3 个词分开来看,docker 代表 docker 程序,run 代表命令,hello-world 代表镜像。就是用 docker 启动 hello-world 镜像。由于我们刚装好的 docker,本地并没有镜像,那么 run 的命令会对 docker 远端的仓库中,找到名叫 hello-world 的镜像,然后下载到本地,再运行。
docker 官方的镜像仓库访问地址:
我们可以在 docker 官方的仓库中,搜索你感兴趣的系统、语言、技术框架等,有很多的技术都已经被 docker 化了。我们就可以很方便地用别人已经做好的容器,站在前人的基础上继续工作。
从列表中点开一项后,会有对这个镜像的详细介绍。比如,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 文件就行了。
下面我们创建一个能进行网络访问的 docker,从网站抓取最新 8 篇的文章列表,并打印到控制台。
创建项目目录
~ mkdir fensme cd fensme
创建 dockerfile,依赖于上文中下载的 ubuntu 镜像,还要需要安装 curl 库用于网页抓取,同时用于 jq 库解析 json 数据。
~ vi dockerfile
from ubuntu:latest
run apt-get update apt-get install -y curl jq
cmd curl http://api.fens.me/blogs/ | jq .[]
打包,创建名为 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 的镜像,这样就实现了网站数据的抓取。
~ 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 语言量化投资常用包总结 ,
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 语言跨界调用 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 封装了一个非常简单的爬虫,当你需要的时候启动它,把结果写到数据库中。当执行完任务,系统资源就释放了,你需要再为它考虑。
比较简单地就可以把一个技术或一个功能 docker 化,从而构建出个性化的 docker。
5. 上传 docker 镜像到公共仓库
最后一步,其实就是把我们做好的 docker 镜像上传到官方的仓库中,让其他的人也可以使用。
首先需要去 docker hub 上面注册一个账号,然后登录进去。
在 docker hub 上,创建一个自己的仓库。
在本地操作系统,绑定 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
接下来,要你刚才创建的 fensme 的镜像加上命名空间,对应该 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 的网站上看到你自己的镜像了。
~ 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 网站,刷新页面。
最后,如果其他人需要使用这个 docker 镜像,像最开始介绍的,直接下载运行就可以了。
~ sudo docker run bsspirit/fensme
通过上面的操作,我们就把 docker 在 linux ubuntu 中的系统安装完成。
“Ubuntu 中如何安装 Docker”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注丸趣 TV 网站,丸趣 TV 小编将为大家输出更多高质量的实用文章!