LoginSignup
2
1

More than 5 years have passed since last update.

Raspberry Pi用docker-distributionの構築

Last updated at Posted at 2017-04-23

Raspberry Pi用docker-distributionの構築

1. ラズパイ用のdocker-distribution

 Raspberry Pi3でもdockerを使用することができるのですが、docker-distributionはありません。同様にdocker-composeもないので、これについては別記事を書いています。

Rasuperry Pi用docker-composeの構築

  docker-composeの場合は、公式リポジトリにあるDockerfile.armhfを利用したのですが、docker-distribution用のものが存在していないので自分で書いてみました。

2. Dockerfile.armhfの作成

 Raspberry Pi3用のDockerfileをDockerfile.armhfとして書いたものが以下になります。

FROM armhf/debian:jessie

ENV GOROOT /usr/local/go
ENV GOPATH $GOROOT/bin

ENV DISTRIBUTION_DIR $GOROOT/src/github.com/docker/distribution
ENV DOCKER_BUILDTAGS include_oss include_gcs

RUN apt update && apt upgrade -y && \
    apt install -y make git curl

RUN cd /var/tmp; \
    curl -O https://storage.googleapis.com/golang/go1.8.1.linux-armv6l.tar.gz; \
    tar -C /usr/local -xzf go1.8.1.linux-armv6l.tar.gz; \
    rm go1.8.1.linux-armv6l.tar.gz

ENV PATH $PATH:$GOPATH

RUN mkdir -p $GOROOT/src/github.com/opencontainers; \
    cd $GOROOT/src/github.com/opencontainers; \
    git clone https://github.com/opencontainers/go-digest

WORKDIR $DISTRIBUTION_DIR
COPY . $DISTRIBUTION_DIR
COPY cmd/registry/config-dev.yml /etc/docker/registry/config.yml

RUN make PREFIX=$GOROOT clean binaries

VOLUME ["/var/lib/registry"]
EXPOSE 5000
ENTRYPOINT ["registry"]
CMD ["serve", "/etc/docker/registry/config.yml"]

 このファイルは、公式リポジトリをフォークしてraspberrypiブランチとして置いてあります。一応、dockerにもプルリクエストあげてみたのですが、お作法が良くわかってないので、どうなりますことやら。

 内容としては、公式リポジトリにあるDockerfileをラズパイ用にしたものとなっています。ただし、alpineではなくdocker-composeDockerfile.armhfにあわせてベースイメージをarmhf/debian:jessieとして、Goも公式にあるLinux用のインストール手順で、現在の最新版であるgo1.8.1ダウンロードしています。

3. rpi-docker-registryのビルド

 以下のようにしてラズパイでビルドします。どこかにdocker-distributionをクローンして、上記のDockerfile.armhfがある前提です。

docker built -t rpi-docker-registry -f Dockerfile.armhf .

 やはり、ラズパイ用としてタグにはrpi-をつけています。これでコンテナが作成されますが、ビルドの所要時間は約30分ほどでした。

4. rpi-docker-registryの起動

 Dockerfileにも書かれているように 5000/tcpを Exposeして、/var/lib/registry をよしなにマウントして起動します。

docker run -d -p 5000:5000 --name docker-registry -v /var/lib/registry:/var/lib/registry rpi-docker-registry

 あと、サーバ運用するためにdocker run--alwaysを使用するなり、systemd対応するなどはよしなに。

 公式でregistrydistributionに変わってきたりしていることもあり、名前がちぐはぐですが...

 それにしても、ラズパイでdocker-distributionを使用する需要はあるんだろうか(笑
 

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1