x86运行docker服务
docker官方默认只支持x64架构的系统作为host,而如果安装的系统是32位,或者cpu根本就只支持32位,那还有机会使用docker来开启服务吗?当然可以。当然,32位的host,运行的docker镜像也是32位的。
经过一番谷歌,可以查到一些文章,本文主要受这篇启发,但编译过程遇到很多麻烦,以至于最终过程与文中差异很大,所以重新写一篇文章来说说如何编译dockerd-i386。
按照文中的方案,我们需要一个x64系统的linux来运行docker-dev镜像来编译docker。这里我们使用虚拟机安装linux mint18.1。记得安装64位版本。
安装过程省略,下面进入正题,编译docker。
1.安装git和编译工具
sudo apt-get install git-all build-essential
2.安装docker
这里我推荐使用国内的加速。参考http://get.daocloud.io/。
curl -sSL https://get.daocloud.io/docker | sh
并且添加加速源。https://www.daocloud.io/mirror#accelerator-doc,或使用阿里服务https://cr.console.aliyun.com/#/accelerator。均需要登陆。
sudo vi /etc/docker/daemon.json
{
"registry-mirrors": [
"链接"
],
"insecure-registries":[]
}
3.下载docker源码,这里不推荐使用git下载最新版,而是去release页面下载稳定版https://github.com/moby/moby/releases
wget https://github.com/moby/moby/archive/v17.05.0-ce.tar.gz
tar xzvf *.tar.gz
4.进入到源码目录,然后修改Dockerfile
FROM debian:jessie
改为
FROM 32bit/debian:jessie
中间有很多curl命令,有些访问困难,应当在curl命令中添加-x ip:port的http代理。
同样,git下载困难的时候,应当添加代理
RUN git config --global http.proxy http://ip:port
修改下载的go版本
RUN curl -fsSL "https://golang.org/dl/go${GO_VERSION}.linux-amd64.tar.gz" \
改为
RUN curl -fsSL "https://golang.org/dl/go${GO_VERSION}.linux-386.tar.gz" \
编译过程中发现有一部分编译不过,酌情注释掉
# Install CRIU for checkpoint/restore support
ENV CRIU_VERSION 2.12.1
# Install dependancy packages specific to criu
RUN apt-get install libnet-dev -y && \
mkdir -p /usr/src/criu \
&& curl -sSL https://github.com/xemul/criu/archive/v${CRIU_VERSION}.tar.gz | tar -v -C /usr/src/criu/ -xz --strip-components=1 \
&& cd /usr/src/criu \
&& make \
&& make install-criu
# Get useful and necessary Hub images so we can "docker load" locally instead of pulling
COPY contrib/download-frozen-image-v2.sh /go/src/github.com/docker/docker/contrib/
RUN ./contrib/download-frozen-image-v2.sh /docker-frozen-images \
buildpack-deps:jessie@sha256:85b379ec16065e4fe4127eb1c5fb1bcc03c559bd36dbb2e22ff496de55925fa6 \
busybox:latest@sha256:32f093055929dbc23dec4d03e09dfe971f5973a9ca5cf059cbfb644c206aa83f \
debian:jessie@sha256:72f784399fd2719b4cb4e16ef8e369a39dc67f53d978cd3e2e7bf4e502c7b793 \
hello-world:latest@sha256:c5515758d4c5e1e838e9cd307f6c6a0d620b5e07e6f927b07d05f6d12a1ac8d7
5.创建docker-dev镜像,若出错考虑修改上述文件添加代理,或注释掉相应部分。成功后可以docker images看到刚编译好的镜像
make build
6.编译最终docker for x86
make binary
编译后的文件保存在bundles/latest/binary,保存使用。
————————————————————————————————————————————————————————————————————————
所以,如果以上都不想看,直接下载编译好的文件。
下载:
链接: https://pan.baidu.com/s/1eSw2lf8 密码: anr5
将binary-daemon添加到环境中,然后sudo dockerd开机服务,再到binary-client中获取docker,其他和正常安装无异。
可用的一些镜像:
https://hub.docker.com/r/32bit/debian/
https://hub.docker.com/r/32bit/ubuntu/
https://hub.docker.com/r/i386/alpine/tags/
bearqq/debian-x86-ssh