ubuntu12.04 安装最新的docker

来源:互联网 发布:程序员用什么笔记本好 编辑:程序博客网 时间:2024/05/18 03:38


安装Docker(在Ubuntu中)

Docker支持下面的这些Ubuntu操作系统:

  • Ubuntu Xenial 16.04 (LTS)
  • Ubuntu Wily 15.10
  • Ubuntu Trusty 14.04 (LTS)
  • Ubuntu Precise 12.04 (LTS)

该页指导你使用Docker管理发行包和安装机制来安装Docker。使用这些包能够确保你获得最新的Docker发行版。

要求

不管你的Ubuntu版本是什么,Docker要求64位系统安装。除此之外,你的内核最低版本要求为3.10。版本低于3.10的内核缺少一些运行Docker容器的特征。这些较老版本的内核被了解到,存在一些bug,这些bug将会导致数据丢失。

你可以打开一个终端,使用uname -r来检查你的当前内核版本。

root@ubuntu:/home/hy003# uname -rroot@ubuntu:/home/hy003# uname -r3.13.0-32-generic
  • 1
  • 2

更新你的apt源

Docker的APT库包含Docker 1.7.1和更高版本。为了设置APT从最新的库中使用包:

  1. 使用sudoroot权限,作为一个用户登陆你的机器
  2. 打开一个终端窗口
  3. 更新包信息,确定APT以https方法工作,并且CA证书已被安装。
 $ sudo apt-get update $ sudo apt-get install apt-transport-https ca-certificates
  • 1
  • 2
  1. 添加新的GPG
$ sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
  1. 修改权限:root@ubuntu:/home/hy003#sudo chmod 777 /etc/apt/sources.list.d/docker.list
  2. vim/etc/apt/sources.list.d/docker.list打开文件
  3. 移除所有存在的条目。
  4. 使用 lsb_release 命令也可以查看 Ubuntu 的版本号

  5. 为你的Ubuntu操作系统添加一个条目。 
    可能的条目为:

    • 在Ubuntu Precise 12.04 (LTS)中

      deb https://apt.dockerproject.org/repo ubuntu-precise main
      • 1
    • 在Ubuntu Trusty 14.04 (LTS)中

      deb https://apt.dockerproject.org/repo ubuntu-trusty main
      • 1
    • 在Ubuntu Wily 15.10中

      deb https://apt.dockerproject.org/repo ubuntu-wily main
      • 1
    • 在Ubuntu Xenial 16.04(LTS)

      deb https://apt.dockerproject.org/repo ubuntu-xenial main
      • 1
  6. 保存和关闭/etc/apt/sources.list.d/docker.list文件。

  7. 更新APT包索引。
$ sudo apt-get update
  • 1
  1. 如果旧的repo存在则清除
$ sudo apt-get purge lxc-docker
  • 1
  1. 验证APT是否是从正确的库中拉取下来的。
$ apt-cache policy docker-engine
  • 1

运行sudo apt-get upgrade,此时APT会从最新的库中拉取出来。

Ubuntu版本的条件

  • Ubuntu Xenial 16.04 (LTS)
  • Ubuntu Wily 15.10
  • Ubuntu Trusty 14.04 (LTS)

对于Ubuntu Trusty,Wily和Xenial来说,我们推荐您安装linux-image-extra内核包。linux-image-extra包允许你使用aufs存储驱动。

为了给您的内核版本安装linux-image-extra包:

  1. 在你的Ubuntu系统中打开一个终端。
  2. 更新你的包管理器。
$ sudo apt-get update
  • 1
  1. 安装推荐的包
$ sudo apt-get install linux-image-extra-$(uname -r)
  • 1
  1. 继续安装Docker

如果你正在Ubuntu 14.04或12.04中安装,apparmor是需要的。使用下列命令安装:

$sudoapt-get install apparmor

Ubuntu Precise 12.04 (LTS)

对于Ubuntu Precise来说,Docker需要3.13的内核版本。如果你的内核版本必3.13低,你必须更新它。查看这个表格来看对于你的环境需要哪些包。

这里写图片描述

为了更新你的内核和安装额外的包,做下列操作:

  1. 打开一个终端。
  2. 更新包管理器
$ sudo apt-get update
  • 1
  1. 必须的和可选的包都要安装
$ sudo apt-get install linux-image-generic-lts-trusty
  • 1

依赖于你的环境,你可能需要安装更多,正如在上述表格中描述的。

  1. 重启你的宿主机。sudo reboot
  2. 在系统重启之后,继续安装Docker。

安装

确定你已经安装了你Ubuntu版本的必要条件。然后,使用下面的命令安装Docker:

  1. 使用sudo特权作为一个用户登陆你的Ubuntu。
  2. 更新你的APT包索引。
$ sudo apt-get update
  • 1
  1. 安装Docker。
$ sudo apt-get install docker-engine
  • 1
  1. 开启docker
$ sudo service docker start
  • 1
  1. 验证docker被正确安装
$ sudo docker run hello-world
  • 1

该命令会向容器中下载一个测试镜像并且运行它。当容器运行成功,就会打印一个信息,然后退出。


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

可选配置

该小节包含可选的过程,用于配置你的Ubuntu更好的运行Docker。

  • 创建docker组
  • 适应内存和交换
  • 配置一个DNS服务器来用
  • 配置Docker开机自启

创建一个Docker组

docker域是和Unix的一个套接字绑定的,而不是一个TCP端口。默认情况下,Unix套接字是属于用户root的,并且其他用户能够使用sudo访问他。处于这个原因,docker域会一直以root用户运行。

为了避免在使用docker命令的时候必须要使用sudo,我们需要创建一个Unix组称作docker,并且向该组中添加用户。当docker域启动的时候,Unix套接字的读写所有权由docker组拥有。

警告:`docker`组和`root`用户是平等的。
  • 1
  • 2

为了创建docker组和添加你的用户:

  1. 使用sudo权限登陆Ubuntu。
  2. 创建docker
$ sudo groupadd docker
  • 1
  1. docker组中添加你的用户
$ sudo usermod -aG docker ubuntu
  • 1
  1. 登出再登入 
    这个确保你的用户以正确的权限运行。
  2. 不使用sudo运行docker来验证您的工作。
$ docker run hello-world
  • 1

如果失败信息和下面类似:

Cannot connect to the Docker daemon. Is 'docker daemon' running on this host?
  • 1

检查DOCKER_HOST环境变量是否被设置,如果为设置,则重新设置。

调整内存和交换分区

当用户运行Docker的时候,当运行一个镜像的时候,他们可能会看到下面这些信息:

WARNING: Your kernel does not support cgroup swap limit. WARNING: Yourkernel does not support swap limit capabilities. Limitation discarded.
  • 1
  • 2

为了阻止这些信息,就需要使能你系统上的内存和交换分区(memory and swap accounting)。使能内存和交换分区能够引起内存开销和降解性能,即使Docker并没有在使用。内存开销大约是所有可用内存的1%。性能大约降解10%。

为了在使用GNU GRUB的系统上使能内存和交换分区,遵循下面的步骤:

  1. 作为一个用户使用sudo特权来登陆Ubuntu。
  2. 编辑/etc/default/grub文件。
  3. 像下面这样设置GRUB_CMDLINE_LINUX值。
GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1"
  • 1
  1. 保存并关闭文件
  2. 更新GRUB
$ sudo update-grub
  • 1
  1. 重启系统

配置一个DNS服务器让Docker使用

在桌面上运行Ubuntu系统或Ubuntu衍生系统,在/etc/resolv.conf文件中,典型的使用127.0.0.1作为默认的nameserver。网络管理器也会设置dnsmasq来使用真实的DNS服务器,并且在/etc/resolv.conf中设置nameserver 127.0.0.1

当使用这些配置在桌面机器上开启容器,Docker用户将会看到这个警告:

WARNING: Local (127.0.0.1) DNS resolver found in resolv.conf and containerscan't use it. Using default external servers : [8.8.8.8 8.8.4.4]
  • 1
  • 2

该警告的出现是因为Docker容器不能使用本地的DNS域名服务器。Docker默认使用一个外部的域名服务器。

为了避免这个警告,你可以指定一个DNS服务器让Docker容器来使用。或者是,你可以在网络管理器中禁用dnsmasq。不过,禁用dnsmasq可能会导致DNS在一些网络中变慢。

下面的指令描述了如何配置运行在Ubuntu14.10或较低版本的上的Docker域。Ubuntu 15.04和更高版本使用systemd作为启动和服务管理器。有关与systemd的配置可以参考这篇文章,control and configure Docker with systemd。

为了指定一个DNS服务器让Docker使用:

  1. 作为一个用户身份以sudo方式登陆系统。
  2. 打开/etc/default/docker文件编辑。
  3. 添加一个设置。
DOCKER_OPTS="--dns 8.8.8.8"
  • 1

使用本地DNS服务器,例如 192.168.1.1替换8.8.8.8。你也可以指定多个DNS服务器。将他们之间用空格分离。例如:

--dns 8.8.8.8 --dns 192.168.1.1
  • 1
警告:如果你正在使用连接多个网络的电脑做这个事情,确定要选择一个公共DNS服务器。
  • 1
  • 2
  1. 保存并关闭文件
  2. 重启Docker域。
$ sudo restart docker
  • 1

或者是,对之前的操作作为一个可选的选项,就是在网络管理器中禁用dnsmasq

  1. 打开/etc/NetworkManager/NetworkManager.conf文件。
  2. 注释掉dns=dnsmasq这一行。
  3. 保存并且关闭文件。
  4. 重启网络管理器和Docker.
$ sudo restart network-manager$ sudo restart docker
  • 1
  • 2

配置Docker开机自启动

Ubuntu 15.04及以上系统使用systemd作为它的启动和服务管理器,Ubuntu 14.10及其低版本使用upstart

对于15.04及其以上版本来说,为了配置docker域开机自启,运行:

$ sudo systemctl enable docker
  • 1

对于14.10及其较低版本,上述的安装方法自动配置upstart开使docker域开机的时候自动启动。

更新Docker

安装最新版本的Docker使用apt-get:

$ sudo apt-get upgrade docker-engine
  • 1

卸载

卸载Docker包:

$ sudo apt-get purge docker-engine
  • 1

卸载Docker包及其以来不再需要使用下面的命令:

$ sudo apt-get autoremove --purge docker-engine
  • 1

上面的命令不会移除镜像,容器,卷或者是用户创建的配置文件。如果你想删除所有的镜像,容器和卷,运行下面的命令:

$ rm -rf /var/lib/docker
  • 1

你必须手动删除用户创建的配置文件。


参考:http://blog.csdn.net/hongbochen1223/article/details/51226700

原创粉丝点击