首 页 行业热点 新车 试驾评测 养车用车 车型库

如何在Docker上运行Ubuntu Core

发布网友

我来回答

2个回答

热心网友

对于Docker的安装在官网上针对不同的操作系统分别进行了描述,Ubuntu上安装Docker,对于ubuntu操作系统来说必须是位的,因为Docker的官网上只是提供了位的docker,如果需要32位的docker则需要下载源码进行编译,这里有篇文章介绍了Docker源码如何进行编译成32位,编译32位的Docker。但是对于我使用的Ubuntu来说正好是32位的。通过下面的两条命令可以看出操作系统的位数和Linux的内核版本。

root@ubuntu:/tmp#uname -a
Linux e529c1b7772a 3.13.0-12-generic #32-Ubuntu SMP Fri Feb 21 17:44:24 UTC 2014 i686 i686 i686 GNU/Linux
root@ubuntu:/tmp#file /sbin/init
/sbin/init: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=1c47d1e162f6542994e457394ac52078da5cc023, stripped
如果想在32为的Ubuntu操作系统上运行Docker的话,就必须安装32位的Docker。在Ubuntu中提供docker1.01-32位的deb包,可以直接点击“docer1.01-32位deb包”跳转到下载页面。下载完成后,直接使用dpkg –i进行安装。
dpkg -i docker.io_1.0.1~dfsg1-0ubuntu1~ubuntu0.14.04.1_i386.deb
Selecting previously unselected package docker.io.
(Reading database ... 150021 files and directories currently installed.)
Preparing to unpack docker.io_1.0.1~dfsg1-0ubuntu1~ubuntu0.14.04.1_i386.deb ...
Unpacking docker.io (1.0.1~dfsg1-0ubuntu1~ubuntu0.14.04.1) ...
Setting up docker.io (1.0.1~dfsg1-0ubuntu1~ubuntu0.14.04.1) ...
docker.io start/running, process 10456
Processing triggers for ureadahead (0.100.0-16) ...
Processing triggers for man-db (2.6.6-1) ...
也可以参考下面的这篇文章《Docker 1.0.1 已经可以在 Ubuntu 14.04 LTS 上测试了!》进行安装。安装完成后,可以使用下面的命令确定安装的版本和基本的信息。由于docker使用go语言进行编写的,所以要依赖于GO的编译工具和库文件。
oot@ubuntu:/tmp# docker version
Client version: 1.0.1
Client API version: 1.12
Go version (client): go1.2.1
Git commit (client): 990021a
Server version: 1.0.1
Server API version: 1.12
Go version (server): go1.2.1
Git commit (server): 990021a
root@ubuntu:/tmp# docker info
Containers: 1
Images: 7
Storage Driver: aufs
Root Dir: /var/lib/docker/aufs
Dirs: 10
Execution Driver: native-0.2
Kernel Version: 3.13.0-12-generic
WARNING: No swap limit support
官方安装方式docker pull imagename从docker的索引中心下载,imagename是镜像名称,例如docker pull ubuntu就是下载base ubuntu并且tag是latest。
root@ubuntu:/# docker pull ubuntu:14.04
Pulling repository ubuntu
c4ff7513909d: Download complete
511136ea3c5a: Download complete
1c9383292a8f: Download complete
9942dd43ff21: Download complete
d92c3c92fa73: Download complete
0ea0d582fd90: Download complete
cc58e55aa5a5: Download complete
root@ubuntu:~/Downloads# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
ubuntu 14.04 c1b5399bd2ee 8 minutes ago 205.3 MB
learn/tutorial latest 8dbd9e392a96 17 months ago 128 MB
root@ubuntu:/# docker run -i -t ubuntu /bin/bash
2014/09/04 13:04:28 exec format error
docker run -i -t learn/tutorial /bin/bash
2014/09/04 14:45:13 exec format error
PS:在安装完成Dokcer后,使用Pull命令sudo docker pull ubuntu:14.04从镜像仓库获取ubuntu的镜像后,然后使用run命令docker run -i -t ubuntu /bin/bash直接运行该镜像时,会出现下面的错误信息,后来我又尝试着使用官方演示使用的learn/tutorial镜像,还是出现同样的问题,现在怀疑可能是由于我安装的DOcker是32位的,而Image是位的不匹配造成的。前面说过Docker默认提供的都是位,其中提供的Image自然也都是位,所以会出现下面的错误信息。在Docker Hub Registry里的大多数镜像都是位。这里有一个关于该错误的讨论帖“Ddocker.io: Docker should recommend
linux-image-amd ”。所以,如果想在32位的Docker基础上运行Ubuntu的Image那要求Ubuntu的image也必须是32位。这就需要制作32位Ubuntu的Image。这里有一个官方提供的可用的Ubuntu image的列表,Ubuntu Image tag。

热心网友

Snappy是一个极度精简的Ubuntu镜像,因为它可以快速部署在云端,并且提供了简便的基础功能组件更新,所以很多人用来在云端上构建(微)系统架构。很可惜Snappy并不包含在Docker的官方镜像中,本文通过一个实例演示了如何在Docker中运行Ubuntu Core镜像,并构建自己的Snappy容器。文章短小精悍,希望能给使用Snappy系统并希望用Docker来构建系统架构的人一些有益的借鉴。

有很多人已经听说过 Ubuntu Core的大名,没听过也不要紧, Ubuntu Core 是一个极度精简的ubuntu版本。它通过Snappy(一个包管理器)来运行一些基本服务并提供主要的功能组件更新。Ubuntu Core 提供轻量级的基本运行时系统,给使用者以快速部署和方便的持续更新功能。并且在它上面还使用了 security model 。

上述这些令人激动的特性使得Snappy可以快速部署在云平台上。与此同时,人们已经开始考虑使用它在云端上来构建他们自己的(微)服务架构。就在几周前,一个用户在 Ask Ubuntu 上提问题:Can I run Snappy Ubuntu Core as a guest inside Docker? 。问题在于Ubuntu Core并不包含在Docker提供的官方镜像库中,所以我们自己手动创建镜像了。下面是一个例子:

创建 Docker 镜像
步骤一: 获取最新的Ubuntu Core镜像
截止发稿时为止,Ubuntu Core 的版本是 alpha 3 ,下载地址为 :

下载的镜像是通过XZ方式压缩的,所以要通过下面的命令解压:
$ unxz ubuntu-core-WEBDM-alpha-03_amd-generic.img.xz

步骤二: 使用qemu-nbd方式连接镜像
解压后的文件不是普通的文件格式,上一个版本(Alpha 2)镜像是QCOW2文件格式,为了能够使用这个镜像内容,我们有几个解决方案。这里我介绍其中的一种,既可以使用文件系统又可以使用QCOW2镜像的方式。下面的小技巧包含使用qemu-nbd(一个基于 qemu-utils)的工具包):
# qemu-nbd -rc /dev/nbd0 ubuntu-core-WEBDM-alpha-03_amd-generic.img

运行上面的命令将会创建一个名为/dev/nbd0的虚拟设备,并且创建 名为/dev/nbd0p1、/dev/nbd0p2,诸如此类的虚拟分区,可以通过 使用fdisk -l /dev/nbd0命令,查看关于QCOW2镜像相关的信息。

步骤三: 挂载文件系统
例如我们感兴趣的是/dev/nbd0p3,我们通过下面的命令来挂载分区:
# mkdir nbd0p3
# mount -r /dev/nbd0p3 nbd0p3

步骤四:创建一个基于docker的基础镜像
建议阅读 Docker官方手册,创建一个简单的Docker基础镜像。
tar -C nbd0p3 -c . | docker import - ubuntu-core alpha-3

通过运行docker images命令,我们可以查看我们刚刚创建的Docker镜像。
# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
ubuntu-core alpha-3 f6df3c0e2d74 5 seconds ago 543.5 MB

通过这个命令docker run ubuntu-core:alpha-3 Snappy,让我们验证一下Snappy是否可以访问:
# docker run ubuntu-core:alpha-3 Snappy
Usage:Snappy [-h] [-v]
{info,versions,search,update-versions,update,rollback,install,uninstall,tags,config,build,booted,chroot,framework,fake-version,nap}
...

如果看到上面的信息,那么恭喜你,已经成功将Ubuntu Core融入到Docker镜像中,第一次运行了Snappy容器。

安装软件
废话不多说,下面演示如何在docker中安装并运行xkcd-webserverSnappy包管理器。
# docker run -p 8000:80 ubuntu-core:alpha-3 /bin/sh -c 'Snappy install xkcd-webserver

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com