不清楚系统版本的 可以通过uname -a命令查看 内核和版本( 显示系统版本为i386和i686的为 32位系统;显示为X86_64的,才是64位系统)
在此先说一下,建议 安装64位系统 来安装使用。毕竟 貌似Docker只支持64位系统(但也不是绝对的,这取决于 容器里你安装的 镜像系统版本)
如果想在32位的Docker基础上运行Ubuntu的Image,那要求Ubuntu的image也必须是32位,可惜的是Docker Hub 上面的镜像都是64位的,所以想在32位系统的32位 应用程序下,安装并启动容器里 镜像的话,需要我们 自己作个32位 镜像。
下面是安装和制作镜像的步骤:
在ubuntu下安装Docker:
按照http://dockerpool.com/static/books/docker_practice/install/ubuntu.html的说明,根据步骤安装最新版本的docker。
安装好docker以后,如果你想启动一个容器,则需要首先在本地创建镜像文件,然后才能利用创建好的镜像文件去启动容器。
创建镜像文件:
方法①:
sudo docker pull ubuntu:12.04 ——从官方仓库注册服务器下载标记为12.04的镜像文件。
有时候官方仓库注册服务器下载较慢,可以从其他仓库下载。从其它仓库下载时需要指定完整的仓库注册服务器地址。例如:sudo docker pull dl.dockerpool.com:5000/ubuntu:12.04。
方法②:
通过修改已有的镜像,并利用docker commit提交更新后,再利用修改后的镜像启动容器。具体可以参考:http://dockerpool.com/static/books/docker_practice/image/create.html。
方法③:利用Dockerfile来创建镜像。
具体参考http://dockerpool.com/static/books/docker_practice/image/create.html:
a、创建一个目录和Dockerfile文件,命令如下:
mkdir sinatra
cd sinatra
touch Dockerfile
b、在vim中打开Dockerfile文件,并且按照下面的步骤编写Dockerfile文件:
#This is a comment
FROM ubuntu:12.04
MAINTAINER Docker Newbee newbee@docker.com
RUN apt-get –qq update
RUN gem install sinatra
注意:Dockerfile 基本的语法是
1.使用#来注释
2.FROM 指令告诉 Docker 使用哪个镜像作为基础
3.接着是维护者的信息
4.RUN开头的指令会在创建中运行,比如安装一个软件包,在这里使用 apt-get 来安装了一些软件
c、编写完成Dockerfile以后,可以使用docker build来生成镜像。命令如下:
sudo docker build –t=”ouruser/sinatra:v2” .
其中,-t标记来添加tag,指定新的镜像的用户信息。”.”是Dockerfile所在的路径,表示当前路径,也可以指定其他路径。
d、利用新创建的镜像来启动一个容器,运行bash:
sudo docker run –i –t ouruser/sinatra:v2 /bin/bash
此时,出现错误,错误信息是:execformat error 。百度了好长时间,终于知道原因了。原来是我安装的docker是32位的,但是不管通过哪种方法创建的镜像却都是64位的,所以错误的原因是image不匹配造成的。
所以,如果想在32位的Docker基础上运行Ubuntu的Image那要求Ubuntu的image也必须是32位。这就需要制作32位Ubuntu的Image。
由于Docker Hub Registry上面的镜像都是64位的,所以这里需要自己做一个Ubuntu的镜像,这里使用import命令,该命令的官方解释为:Create anew filesystem image from the contents of a tarball。这里使用openVZ的模板来创建,openVZ模板的下载地址为:http://openvz.org/Download/template/precreated ,在该页面中有下面的Ubuntu模板可选择:
而我们需要下载的是32位的镜像,即图中红线所圈出来的版本。
下载好以后,利用如下命令创建镜像:catubuntu-14.04-x86-minimal.tar.gz | sudo docker import – ubuntu:14.04。
创建好以后,利用docker images命令查看是否有此镜像存在。如果存在,则可以利用此镜像启动一个容器了,命令为:sudo docker run –i –t ubuntu:14.04 /bin/bash。