如何在Ubuntu上用Docker管理Linux容器

虽然标准硬件虚拟化技术(如KVM、Xen或Hyper-V)擅长在物理主机上运行多个操作系统的完全隔离的实例,但这种虚拟化技术在性能、资源和资源配置时间方面有各种开销。标准的机器虚拟化实际上可能是不必要的,这取决于您的实际使用情况。

另一种轻量级虚拟化方法是所谓的Linux容器(LXC),它在操作系统级别提供虚拟化。因为没有运行虚拟机的开销,LXC允许用户在轻量级容器沙箱中运行标准Linux操作系统的多个实例。如果您构建一个可复制的开发/测试环境,或者在安全沙箱中部署应用程序,容器就派上了用场。

Docker就是这样一个开源工具,开发它是为了方便Linux容器的部署。Docker正迅速成为容器技术中事实上的标准,并被Ubuntu和Red Hat等主流Linux发行版所采用。

在本教程中,我将演示如何在Ubuntu 14.04上使用Docker管理Linux容器。请注意:对于早期版本的Ubuntu,操作步骤可能略有不同。

目前Ubuntu上可用的Docker包只支持64位系统。要在32位机器上运行它,需要用源代码构建一个32位版本的Docker(详情见这里)。

安装Docker

借助apt-get命令,安装Docker轻而易举。

$ sudo apt-get install docker.io

要允许非根用户运行docker,请将您自己添加到Docker组。以下命令将允许当前用户在没有root权限的情况下运行Docker。

$ sudo usermod -a -G docker $USER

注销然后重新登录以激活组成员资格的更改。

接下来,编辑Docker配置文件以更新Docker二进制代码的位置。

$ sudo vi /etc/default/docker.io

DOCKER="/usr/bin/docker.io "

重新启动Docker服务。

$ sudo服务docker.io重启

管理码头集装箱

如果要启动一个新的Ubuntu操作系统的Docker容器,需要先获取Ubuntu Docker镜像文件。以下命令将通过网络下载Docker映像文件。

$ docker pull ubuntu

可以用交互模式打开Ubuntu Docker,如下图。最后一个参数“/bin/bash”是一个一旦启动就会在容器中执行的命令。下面是一个简单的bash shell命令。

$ docker run -i -t ubuntu /bin/bash

上面的命令会立刻启动一个Ubuntu容器(这就是容器的魅力!)并在容器内为您提供一个shell提示符。此时,您应该能够在沙盒环境中访问标准的Ubuntu操作系统。

要退出Docker容器,请在容器内的提示符下键入“exit”。

您可以启动不同类型的容器。例如,要启动Fedora容器,请执行以下命令:

$ docker . io run-I-t fedora/bin/bash

如果本地没有Fedora Docker镜像文件,该命令会先自动下载镜像文件,然后启动Docker。

如果您想启动一个使用分发版本的容器,也可以这样做。例如,要启动Ubuntu 13.04 Docker,请执行以下命令:

$ docker . io run-I-t Ubuntu:13.04/bin/bash

集装箱网络

Docker使用Linux桥来互连容器,并将它们连接到外部网络。安装Docker后,您应该会看到docker0 Linux桥默认自动设置。您创建的每个容器都将连接到docker0桥接口。

自定义Linux桥

如果您愿意,还可以使用定制的Linux桥来互连容器。要做到这一点,您可以构建一个定制的桥,并如下所示进行配置。您可以为网桥分配一个单独的子网,并从子网中为Docker分配一个IP地址。我将使用10.0.0.0/24作为Docker子网。

$ sudo apt-get安装桥接实用程序

$ sudo brctl addbr br0

$ sudo ifconfig br0 10 . 0 . 0 . 1网络掩码255.255.255.0

想要DOCKER使用自定义桥,在/etc/default/Docker.io中的DOCKER_OPTS变量中添加“-b=br0”,然后重新启动Docker服务。

$ sudo服务docker.io重启

此时,任何新容器都将连接到br0,其IP地址将从10.0.0/24自动分配。

其他定制

还有其他几种方法可以自定义Docker的默认网络设置,主要是通过更改/etc /etc/default/docker.io中的DOCKER_OPTS变量

"-DNS 8.8.8.8-DNS 8.8.4.4 ":指定容器使用的DNS服务器。

"-icc=false ":将容器相互隔离。

解决纷争

1.当您运行docker.io命令时,您会遇到以下错误。

Dialunix/var/run/docker.sock:没有这样的文件或目录。

出现此错误的原因可能是Docker后台程序没有运行。检查Docker守护进程的状态,并确保首先启动它。

$ sudo服务docker.io状态

$ sudo服务docker.io启动