#環境
Dockerホスト - Alpine Linux 3.13.5
#ESXi上に組みましたが、本質的にUbuntuでも何でも変わらないです。ちなみにメモリ384MB、HDD8GBです
Dckerバージョン - 20.10.6
Dockerイメージ - alpine:3.13.5
mini_httpd - 1.30-r1
#操作
##Dockerホストでの操作
###Dockerのインストール
dockerイメージのあるリポジトリを有効にします。
host:~#vi repositories
#/media/cdrom/apks
http://dl-cdn.alpinelinux.org/alpine/v3.13/main
#http://dl-cdn.alpinelinux.org/alpine/v3.13/community
#http://dl-cdn.alpinelinux.org/alpine/edge/main
http://dl-cdn.alpinelinux.org/alpine/edge/community <== '#'を削る
http://dl-cdn.alpinelinux.org/alpine/edge/testing <== '#'を削る
で、いつものおまじない。
host:~# apk update
host:~# apk upgrade
そしてDockerをインストールします。
host:~# apk add docker
host:~# rc-update add docker boot
host:~# service docker start
再起動したら動作確認します。
host:~# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
と出ればok。「dockerサービスが動いてないよ」というエラーが出たらrebootしてみてください。
で、サクッとalpineなコンテナを作って中に入ります。
host:~# docker container run -dit --name miniweb --hostname miniweb alpine:3.13.5 tail -f /dev/null
host:~# docker container exec -it miniweb /bin/ash
"miniweb"部分は適当に変えてください。
##Dockerイメージでの操作
いつものおまじない。
miniweb:~# apk update
miniweb:~# apk upgrade
そしてopenRCとmini_httpdをインストールします。
miniweb:~# apk add openrc
miniweb:~# mkdir /run/openrc
miniweb:~# touch /run/openrc/softlevel
miniweb:~# apk add mini_httpd
mini_httpdの設定ファイルを修正します。最低限必要なのはこれだけ。
miniweb:~# vi mini_httpd.conf
port=80
user=minihttpd
data=/var/www/localhost/htdocs
cgipat=**.sh|**.cgi
nochroot
logfile=/var/log/mini_httpd/mini_httpd.log
適当にwebコンテンツを作ります。
miniweb:~#vi index.cgi
#!/bin/sh
echo "Content-type: text/html"
echo ""
set
miniweb:~# chmod +x index.cgi
mini_httpdを起動サービスに登録します。
miniweb:~# rc-update add mini_httpd boot
miniweb:~# rc-service mini_httpd start
miniweb:~# reboot
以上。
どっかからcurlででも試してみてください。
host:~# apk add curl
host:~# curl 172.17.0.2
...
(環境変数の一覧が出てきます)
...
#補足
最後の curl で「httpdがあがってない」エラーが出るときは mini_httpd サービスが起動していません。
手動で起動してみてください。
host:~# docker exec -it miniweb /bin/ash
miniweb:~# rc boot
miniweb~#:rc-satus
Runlevel: boot
mini_httpd
...
'rc-service'や'rc-update'だと「もう起動してるよ」とエラーになります。