軽量コンテナ用 OS alpline に dockerを入れるまで

前ポストの photon に引き続きライトな環境を試しましたのでメモ。
さくさくしていてよい。
余談ですが、ここで初めて触った fish というシェル環境を、普段使い用 mac でも使い始めました。

はじめに

こちらこちらをそのままなぞりインストールしました。

イメージの取得

本家ダウンロードサイト
alpine-standard-3.5.1-x86_64.iso

環境

ESXi:5.5
OS:その他の Linux 2.6 64bit
Memory/CPU:デフォルト

初回起動

以下の通りに root ログインし、セットアップコマンドを実行。

localhost login: root
setup-alpine

その後対話に従うだけです。

注意点はこちらにある通り、
Which disk(s) would you like to use? (or ‘?’ for help or ‘none’) [none] : sda
Hou would you like to use it? (‘sys’, ‘data, ‘lvm’ or ‘?’ for help) [?] : sys
の2点です。

ssh の設定

本来よろしくないかもしれませんが root ユーザでそのまま ssh させます。/etc/ssh/sshd_configの設定から
PermitRootLogin yes
と変更。

つまずいた場所 - Docker がインストールできない

1
2
3
4
root@alpine ~# apk add docker
ERROR: unsatisfiable constraints:
docker (missing):
required by: world[docker]

####解決方法
こちらのフォーラムに書かれているように、edge community レポジトリを指定しないといけないようです。
知っていれば簡単ですね。

apk add --no-cache --repository http://dl-cdn.alpinelinux.org/alpine/edge/main --repository http://dl-cdn.alpinelinux.org/alpine/edge/community docker

docker の proxy 越えの設定

/etc/init.d/docker を編集して以下2つの export 文を追記。

1
2
3
4
5
6
7
8
9
10
11
#!/sbin/openrc-run
# Copyright 1999-2013 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2

export http_proxy="<ipaddr>:<port>/"
export https_proxy="<ipaddr>:<port>/"

command="${DOCKERD_BINARY:-/usr/bin/dockerd}"
pidfile="${DOCKER_PIDFILE:-/run/${RC_SVCNAME}.pid}"

(以下略)

###確認

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
root@alpine ~# service docker start
* Caching service dependencies ... [ ok ]
* /var/log/docker.log: creating file
* /var/log/docker.log: correcting mode
* /var/log/docker.log: correcting owner
ulimit: unrecognized option: u
* Starting docker ...

root@alpine ~# docker run --name ng -p 80:80 nginx
Unable to find image 'nginx:latest' locally
latest: Pulling from library/nginx
5040bd298390: Already exists
333547110842: Pull complete
4df1e44d2a7a: Pull complete
Digest: sha256:f2d384a6ca8ada733df555be3edc427f2e5f285ebf468aae940843de8cf74645
Status: Downloaded newer image for nginx:latest
hogehoge - - [08/Feb/2017:05:45:13 +0000] "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36" "-"

iptables はデフォルトで stop していたので、そとから http://<alpine's ipaddr>/ をつつくことができます。