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


标签: docker x86 32bit