如何在Ubuntu上用Docker管理Linux容器
另一种轻量级虚拟化方法是所谓的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启动