在Ubuntu中安装Docker教程

前言

网上已经有很多介绍Docker安装的文章,自己的安装过程记录一下,为了博客文章结构的连贯性,为写下一篇R和Docker的相遇做为环境基础,同时也给自己一个备忘。

目录

  • Docker是什么?
  • 在Linux Ubuntu中安装Docker
  • Docker镜像仓库
  • 制作自己的Docker镜像
  • 上传Docker镜像到公共仓库

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:https://hub.docker.com

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

注意:我们在执行上面的命令的时候,经常会遇到一个错误。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官方的镜像仓库访问地址:https://hub.docker.com/

我们可以在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,从http://fens.me网站抓取最新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中的系统安装完成。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • ubuntu14.04+docker的安装及使用

    安装 官方推荐在ubuntu安装,本文选择在ubuntu14.04作为宿主系统. 系统更新 复制代码 代码如下: sudo apt-get update && apt-get upgrade -y sudo reboot     #最好重启一下  安装docker 复制代码 代码如下: curl -s https://get.docker.io/ubuntu/ | sudo sh  基础命令 复制代码 代码如下: # 下载一个ubuntu镜像 sudo docker pull ubuntu

  • 详解ubuntu下安装Docker

    Docker 是 dotCloud 最近几个月刚宣布的开源引擎,旨在提供一种应用程序的自动化部署解决方案,简单的说就是,在 Linux 系统上迅速创建一个容器(类似虚拟机)并在容器上部署和运行应用程序,并通过配置文件可以轻松实现应用程序的自动化安装.部署和升级,非常方便.因为使用了容器,所以可以很方便的把生产环境和开发环境分开,互不影响,这是 docker 最普遍的一个玩法.更多的玩法还有大规模 web 应用.数据库部署.持续部署.集群.测试环境.面向服务的云计算.虚拟桌面 VDI 等等. 注意

  • Ubuntu 搭建基于Docker的LNMP+Redis的开发环境(图文)

    Ubuntu 搭建基于Docker的LNMP+Redis的开发环境 服务器环境:Ubuntu 14.04 1.安装Docker 1.1 执行update命令,和服务器同步软件包,执行apt-get install * 时可以下载最新的软件. 1.2 安装Docker和创建软链接   1.3 启用Docker服务 2. 获取搭建环境所需镜像 2.1 MySQL镜像 2.2 Redis镜像   2.3 nginx-php-fpm镜像 2.4 查看已下载的镜像 对于Docker初学者来说,可以使用现有

  • Ubuntu下安装配置Docker的教程详解

    获取Docker 1.准备 Docker要求64位Linux且内核版本在3.10以上,在终端里输入uname -r查看,如图: 接下来更新源并查看是否有https方法: sudo apt-get update sudo apt-get install apt-transport-https ca-certificates 2.添加key 输入以下命令添加GPG key: sudo apt-key adv \ --keyserver hkp://ha.pool.sks-keyservers.net

  • 在Ubuntu 16.04安装与使用Docker的教程详解

    介绍 Docker是一个应用程序,它使得在容器中运行应用程序进程变得简单和容易,这类应用程序就像虚拟机,只有更便携,更加资源友好,更依赖于主机操作系统. 有关详细介绍Docker容器的不同组件,请Docker生态系统:介绍公共组件 . 在Ubuntu 16.04上安装Docker有两种方法. 一种方法包括将其安装在操作系统的现有安装上. 其他涉及纺了一个名为工具的服务器Docker机即自动安装Docker就可以了. 在本教程中,您将学习如何在现有安装的Ubuntu 16.04上安装和使用它. 先

  • Ubuntu下安装Docker教程

    安装之前,首先要满足一些先决条件.为了安装Docker,你需要是Ubuntu任意64版本. Yakkety 16.10 xenial 16.04 [LTS] Trusty 14.04 [LTS] 通过下面命令来查看当前版本. sudo lsb_release -a 额外推荐的包 $ sudo apt-get update $ sudo apt-get upgrade $ sudo apt-get install curl \ linux-image-extra-$(uname -r) \ lin

  • Ubuntu Docker 安装教程

    Ubuntu Docker 安装 Docker 支持以下的 Ubuntu 版本: Ubuntu Precise 12.04 (LTS) Ubuntu Trusty 14.04 (LTS) Ubuntu Wily 15.10 其他更新的版本-- 前提条件 Docker 要求 Ubuntu 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的 Ubuntu 版本是否支持 Docker.通过 uname -r 命令查看你当前的内核版本 runoob@runoob:~$ uname -r 使用

  • Docker教程之Ubuntu 安装 Docker详细介绍

    Ubuntu 系列安装 Docker 官方网站上有各种环境下的 安装指南. 通过系统自带包安装 Ubuntu 14.04 版本系统中已经自带了 Docker 包,可以直接安装. $ sudo apt-get update $ sudo apt-get install -y docker.io $ sudo ln -sf /usr/bin/docker.io /usr/local/bin/docker $ sudo sed -i '$acomplete -F _docker docker' /et

  • 详解ubuntu 16.04安装docker教程

    本文介绍了ubuntu 16.04安装docker教程,具体如下: 环境 操作系统:ubuntu 16.04 64位,默认安装 准备 1. 添加GPG key: $ sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D 2. 添加源 新建文件:/etc/apt/sources.list.d/docker.list,

  • ubuntu 14.04 64位安装配置docker教程

    背景 一年前就听说了Docker,想用它做虚拟机,今天终于有机会付诸实践了. 我这里使用的是64位 ubuntu 14.04.想虚拟出4台设备,分别安装软件,进行集群测试. 由于Linux容器的bug,docker在Linux的kernel3.8上运行最佳. 环境检查及安装 看下我们的Ubuntu版本命令: 复制代码 代码如下: cat /etc/issue   Ubuntu 14.04.5 LTS \n \l 再来看下内核,命令: uname -r  3.2.0-67-generic 由于内核

随机推荐