ubuntu 12.04 安装Docker 实战
2016-3-8
从网络服务商那里申请到一台Ubuntu测试服务器,用来测试安装Docker环境。
注:本人初学Docker,对Linux命令也仅是稍稍了解,如有错误,烦请告知。
查看系统相关信息
可使用命令uname -a 、uname -r 、lsb_release -a 查看:
$ uname -a
> Linux zabbix 3.2.0-29-generic #140-Ubuntu SMP Tue Feb 23 02:23:59 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
或:
$ uname -r
> Linux zabbix 3.2.0-29-generic
或:
$ lsb_release -a
root@zabbix:~# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 12.04.2 LTS
Release: 12.04
Codename: precise
root@zabbix:~#
可看到当前的系统是 Ubuntu 12.04.2 LTS x86_64 Linux zabbix 3.2.0-29-generic
Ubuntu 12.04.2 LTS 64位 内核版本是 3.2.0-29-generic
插曲1:升级Package
这是测试时在网上找到的一种方法,经测试后发现这种方式只是更新了Package,并没有升级内核版本。
即只是将系统从 12.04.2 LTS 升级到了 12.04.5 LTS 版本。
运行命令:
- 升级包管理器
$ sudo apt-get update
- 执行升级Package命令
$ sudo apt-get dist-upgrade
- 重启
$ sudo reboot
等待执行完成后,通过命令uname -a 查看系统信息:
$ uname -a
> Linux zabbix 3.2.0-100-generic #140-Ubuntu SMP Tue Feb 23 02:23:59 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
插曲2:升级到 ‘14.04.4 LTS’
上面的 “插曲1:升级Package” 执行完成后,再次用ssh登陆后会有更新提示:
ssh登陆后有更新提示:
Welcome to Ubuntu 12.04.5 LTS (GNU/Linux 3.2.0-100-generic x86_64)
- Documentation: https://help.ubuntu.com/
New release '14.04.4 LTS' available.
Run 'do-release-upgrade' to upgrade to it.
总结命令可能是:
$ sudo apt-get update
$ sudo apt-get do-release-upgrade
$ sudo reboot
看网上的评论说这种方式更新后偶有出现黑屏等不稳定情况,另外升级的时间也会太长,所以未尝试该方法。
上面的两个插曲可直接忽略,不影响下面的内核版本升级
升级Ubuntu的内核版本
Docker 官网上要求Docker需要在64位版本的Ubuntu上安装,并且还要保证 Ubuntu 内核的最小版本不低于 3.10。
从网上找到了两种内核版本:
- 3.8 内核版本:
$ sudo apt-get update
$ sudo apt-get install linux-image-generic-lts-raring linux-headers-generic-lts-raring
- 3.13 内核版本:
$ sudo apt-get update
$ sudo apt-get install linux-generic-lts-trusty
这里sudo apt-get install linux-generic-lts-trusty 也可以拆成两句:
$ sudo apt-get install linux-image-generic-lts-trusty
$ sudo apt-get install linux-headers-generic-lts-trusty
总结最后的升级内核步骤,linux系统内核从3.2.0-100-generic升级到3.13版本:
- 升级包管理器
$ sudo apt-get update
- 安装升级内核3.13必需和可选的依赖包
$ sudo apt-get install linux-generic-lts-trusty
- 重启系统
$ sudo reboot
升级步骤记录:
- 安装前查看:
root@zabbix:~# uname -a
Linux zabbix 3.2.0-100-generic #140-Ubuntu SMP Tue Feb 23 02:23:59 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
root@zabbix:~#
root@zabbix:~# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 12.04.5 LTS
Release: 12.04
Codename: precise
root@zabbix:~#
- 执行上面的安装命令
- 安装后查看:
root@zabbix:~# uname -a
Linux zabbix 3.13.0-81-generic #125~precise1-Ubuntu SMP Thu Mar 3 11:31:33 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
root@zabbix:~#
root@zabbix:~# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 12.04.5 LTS
Release: 12.04
Codename: precise
root@zabbix:~#
系统内核从3.2.0-100-generic升级到了3.13.0-81-generic,接下来可以安装Docker环境了。
Docker 环境安装
Docker 的安装可查看官方的安装教程: Docker官方安装教程
Docker安装总结:
- 以sudo管理员身份登陆,这里以
root账户登录 - 判断系统中
curl命令是否安装:
$ whereis curl
如果已经安装,则会输出curl命令所在的目录
3. 如果没有安装curl,则执行安装命令:
$ sudo apt-get update
$ sudo apt-get install curl
- 安装Docker:
$ curl -fsSL https://get.docker.com/ | sh
也有命令为:
$ curl -sSL https://get.docker.com/ | sudo sh
- 系统会要求输入sudo账户密码,等待安装docker及其依赖项。
- 安装完成后,会显示当前Docker的版本信息。
- 在Ubuntu系统下执行Docker命令时,每次都要输入
sudo,同时输入密码,很累人的。 Docker 会提示将当前用户root添加到docker 用户组中,可执行命令:
$ sudo usermod -aG docker root
注:这里的root可换成你自己的登陆账户
8. 重启系统
$ sudo reboot
- 查看上面的命令是否生效
$ docker version
- 至此,Docker服务就安装完成了。
在Docker下运行一个输出Hello Docker的程序:
执行命令:
$ docker run busybox /bin/echo "Hello Docker"
Hello Docker
如果本地不存在busybox镜像,docker 会自动从官网下载相关镜像。
在Docker下搭建一个Nginx服务器:
- 从Docker Hub官网下载一个Ubuntu镜像:
$ docker pull ubuntu:14.04
- 以交互方式启动一个名称为
web的容器,指定宿主机的8080端口指向容器web的80端口:
$ docker run -it --name web -p 8080:80 ubuntu:14.04
然后可以看到命令提示符由 root@zabbix:~# 变成了形如 root@45738573634:~# 的形式,说明我们现在成功进入了这个名为web的容器中;
3. 在web容器内执行命令:
$ sudo apt-get install -y curl
$ sudo apt-get install -y nginx
- 在
web容器内输入命令:
$ curl localhost
可以看到输出了Nginx的欢迎信息Welcome to nginx!。
5. 因为我的宿主服务器现在是联网的,所以我可以在外网访问到该Docker容器web里的Nginx欢迎页面:

至此,我们的Nginx服务器就搭建完成了。
相关网址及参考:
- linux内核网站
- linux12.04升级内核实战
- Ubuntu 12.04安装docker体验cSphere ☆
- ubuntu12.04安装Docker
- Ubuntu Precise 12.04 (LTS) (64-bit)下面安装docker
- Ubuntu 安装Docker
- Docker官方安装教程
该文章同步发表在本人简书及博客园下,如有转载请注明出处。
ubuntu 12.04 安装Docker 实战的更多相关文章
- [笔记] Ubuntu 18.04安装Docker CE及nvidia-docker2流程
Docker的好处之一,就是在Container里面可以随意瞎搞,不用担心弄崩Host的环境. 而nvidia-docker2的好处是NVidia帮你配好了Host和Container之间的CUDA相 ...
- [笔记] Ubuntu 18.04安装Docker CE及NVIDIA Container Toolkit流程
之前写的[笔记] Ubuntu 18.04安装Docker CE及nvidia-docker2流程已经out了,以这篇为准. Docker的好处之一,就是在Container里面可以随意瞎搞,不用担心 ...
- Ubuntu 20.04安装Docker
Docker学习系列文章 入门必备:十本你不容错过的Docker入门到精通书籍推荐 day1.全面的Docker快速入门教程 day2.CentOS 8.4安装Docker day3.Windows1 ...
- Ubuntu 12.04 安装 Apache2+PHP5+MySQL
LAMP是Linux web服务器组合套装的缩写,分别是Apache+MySQL+PHP.此教程教大家如何在Ubuntu 12.04 LTS server 上安装Apache2服务器,包括PHP5(m ...
- Ubuntu 12.04安装Adobe Reader
原本从Adobe 官方网站下载了 Adobe Reader, 是个rpm包,先用agt-get 装了rpm(sudo apt-get install rpm), 一安装(rpm -ivh AdobeR ...
- Ubuntu 12.04 安装MySQL
本文地址:http://www.cnblogs.com/yhLinux/p/4012689.html 本文适合新手入门. 本文是对 Ubuntu 12.04 环境下安装 MySQL 的记录,通过这两天 ...
- ubuntu 12.04 安装wireshark
轉載自http://blog.chinaunix.net/uid-27064719-id-3786626.html 在ubuntu 12.04下安装wireshark软件之后,打开wireshark开 ...
- ubuntu 12.04 安装 redis
原文地址:http://ijonas.com/software-development/nosql/412/ 1 Installing Redis 2.6.x on Ubuntu 12.04 and ...
- ubuntu 12.04安装TP-LINK TL-WN725N v2
用了一个上午,折腾完毕,分享如下. 1.先试了ndiswrapper和compat-wireless,各种不给力.后来看这篇博文<Ubuntu12.04下安装TL-WN322G+无线网卡驱动(R ...
随机推荐
- 传递引用类型参数(ref)
引用类型的变量不直接包含其数据:它包含的是对其数据的引用. 当通过值传递引用类型的参数时,有可能更改引用所指向的数据,如某类成员的值. 但是无法更改引用本身的值:也就是说,不能使用相同的引用为新类分配 ...
- [leetcode 17]Letter Combinations of a Phone Number
1 题目: Given a digit string, return all possible letter combinations that the number could represent. ...
- ORACLE之ASM学习
ASM(Automatic Storage Management)是Oracle10g R2中为了简化Oracle数据库的管理而推出来的一项新功能,这是Oracle自己提供的卷管理器,主要用于替代操作 ...
- newLISP 10.5.3 发布,类 Lisp 的脚本语言
newLISP 10.5.3 修复了一些 bug ,为 KMEANS 集群分析器增加了一些函数. newLISP是一个类似Lisp语言的.用于一般用途的脚本语言.它具有 LISP 语言所有的魔力,但更 ...
- Android 自定义View 三板斧之一——继承现有控件
通常情况下,Android实现自定义控件无非三种方式. Ⅰ.继承现有控件,对其控件的功能进行拓展. Ⅱ.将现有控件进行组合,实现功能更加强大控件. Ⅲ.重写View实现全新的控件 本文重点讨论继承现有 ...
- JS备忘录
/** *删除数组指定下标或指定对象 */ Array.prototype.remove = function (obj) { for (var i = 0; i < this.length; ...
- JS模块间错误隔离
问题背景: 页面中有多个功能模块,怎么在一个模块出了问题之后,保证其它模块的正常工作. 上面的差不多就是面试官的原话了,姑且称之为模块间错误隔离问题 第一反应是动态按需加载代码,用户操作发生后再加载对 ...
- Jpeg2000 简介
http://www.baike.com/wiki/Jpeg2000 总结Jpeg2000的六个方面: ⑴ JPEG2000可以方便地实现渐进式传输,这是JPEG2000的重要特征之一.看到这种 ...
- node-webkit教程(15)当图片加载失败的时候
在node-webkit教程(14)禁用缓存中,简单讲了当前禁用缓存的几种方法. 在实际开发过程中,我遇到了一个因为缓存引起的诡异的问题.应用场景如下: 在一个编辑器里,不停的向画布上添加svg或者其 ...
- [WinAPI] API 10 [创建、打开、读写文件,获取文件大小]
在Windows系统中,创建和打开文件都是使用API函数CreateFile,CreateFile通过指定不同的参数来表示是新建一个文件,打开已经存在的文件,还是重新建立文件等.读写文件最为直接的方式 ...