Edited at

Mobyをソースコードからビルドする

More than 1 year has passed since last update.


はじめに

mobyのプロジェクト(GitHub)からソースコードを持ってきてビルドするまでの説明。

簡単だと思っていたのですが、DNS関連で少々つまずいたので…。


Mobyとは

ざっくり言うと、Docker EngineをはじめとするDockerエコシステムを形成する全てのOSS開発に、Mobyプロジェクトという総称を名付けたものです。

それを受けて、GitHubの docker/docker は moby/moby になったようです。

https://mobyproject.org/


実行環境


  • Ubuntu 16.04 (linux 4.4.0-98-generic)

  • Docker version 1.12.6


必要なパッケージ(aptでインストールしなきゃいけないやつ)


  • make

  • git

  • docker.io


Dockerをインストール

mobyはDockerを使ってビルドを行うので、Dockerをインストールします。

色々とパッケージがあるので、少し説明します。


  • docker-engine : 旧バージョンのDocker。古いので、もう使えません。

  • docker-ce : いわゆる今のDocker。Community Editionなので無料版。

  • docker-ee : こちらは、Enterprise Editionなので有料で法人サポート付き。

  • docker.io : UbuntuがメンテナンスしているDockerのパッケージ名。

今回は環境がUbuntuなので、docker.ioをインストールします。

$ sudo apt install docker.io


DNS設定

DNSサーバーを自前で持っている場合は、Dockerの仮想環境ではapt-get(インターネットに接続する必要があるコマンド)が通りません。

自前でない場合は、ここは飛ばして大丈夫だと思います。


1. デフォルト設定に加える

以下を追記してください。


/etc/default/docker

DOCKER_OPTS="--dns XXX.XXX.XXX.XXX"


XXX.XXX.XXX.XXXは、DNSのIPアドレス。

またプロキシ設定が必要な場合は、さらに追記してください。


/etc/default/docker

HTTP_PROXY="http://proxy.hogehoge.com:8080/"

HTTPS_PROXY="https://proxy.hogehoge.com:8080/"
NO_PROXY="localhost,127.0.0.1,.hogehoge.com"

プロキシサーバーのアドレス、ポート番号は適宜変更してください。


2. dockerの再起動

$ sudo systemctl daemon-reload

$ sudo systemctl restart docker


Mobyをビルド

GitHubからソースコードを持ってきます。

$ git clone https://github.com/moby/moby.git

実行したのは、2017/11/05時点のバージョンです。


最新のCommitLog(master)

commit 2c1043c913b3d2313e5558825f3dc8fc1727042b

Merge: a8cefcf c6703b7
Author: Sebastiaan van Stijn <thaJeztah@users.noreply.github.com>
Date: Sat Nov 4 01:07:06 2017 +0100

Merge pull request #35404 from tonistiigi/stream-ctx-fix

builder: fix long stream sync


頻繁に更新されるので、手元でいじりたい場合はforkをおすすめします。

もしくは、releaseタグから安定版のソースを持ってきてください。

あとは、mobyのルートディレクトリでmakeするだけです。


moby/

$ make


10分くらいかかります。


あとがき

Makefileを見たらdockerを使ってビルドしているので、環境に依存せずにいけるのかと思っていましたが、そのDockerを動かすためのネットワーク設定が必要だったというオチ。

でも、あとはDockerに任せればいいので簡単ですね。さすがDocker!