0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

docker公式Alpine Linuxイメージの初期設定

Last updated at Posted at 2021-05-04

#まえがき
isoでインストールするといろいろ入ってるらしいですが、DockerHubから引っ張ってきたイメージはさらに絞られています。たとえば初期設定に便利なスクリプト"setup-alpine"とか"setup-ほにゃらら"系は全くありません。
(かと思えば、ifconfig や vi は入ってたりします)
dockerを動かすだけ and/or イメージをDIYするならubuntuでも贅肉ありありなのでAlpine Linuxでマシンを組みました。
・・・本当は512MBなVPSのリソースを無駄遣いできない、というビンボー事情です💦・・・
ちなみに、"setup-ほにゃらら"はシェルスクリプトみたいなものらしいです。ソースはここにあります。

#原典とか

#環境
最近のdockerな環境なら依存しないはず。
ちなみに現在は
  Windows10 Education build 19042.928
  PowerShell 5.1.19041.906
  Docker Desktop for Windows version 20.10.5, build 55c4c88
特段、妙なアップデートはしてないはず。

#操作
##imageを引っ張ってきてコンテナを作る
###docker run

PS> docker run -d -it -name ali alpine /bin/ash

"ali" はコンテナ名です。ご自由につけてください。
/bin/ashは最初から入ってる唯一のshellです。/bin/shでも通じますが同じものが起動します。

###docker exec
中に入ります。

PS> docker exec -it ali /bin/ash
/ #

##初期設定
###rootパスワードの設定
初期値は"空”ですので、早めに設定しましょう。

# passwd root
Changing password for root
New password:***
Retype password:***
passwd: password for root changed by root

###ホスト名の設定
デフォルトではイメージIDになってます。

# hostname aliwww

"aliwww"がホスト名です。ご自由にどうぞ。
、、、といきたいところですが、「権限あらへん」エラーとなります。
現状、__docker run する時に"--hostname aliwww"とする__しか方法を知りません💦

ちなみに

# echo "aliwww" > /tmp/t
# hostname -F /tmp/t

も同じエラーとなります。また、"setup-hostname"のソースにあるとおりに

# echo "aliwww" > /etc/hostname

すれば、エラーにはなりませんが再起動すると元のイメージIDに書き戻ります。
これは”df”の結果が:

# df
Filesystem           1K-blocks      Used Available Use% Mounted on
...
/dev/sdc             263174212   2923424 246812632   1% /etc/resolv.conf
/dev/sdc             263174212   2923424 246812632   1% /etc/hostname
/dev/sdc             263174212   2923424 246812632   1% /etc/hosts
...

となっているからだと思います(ということはDNSの設定もhostsの設定も一筋縄でいかない、ってことですね)。

###タイムゾーンの設定
残念ながら
https://wiki.alpinelinux.org/wiki/Setting_the_timezone
、、、と、__apk前提__ですので後述します。

###keymapの設定
省略。JISキーボードな環境がないので検証できないからです。
isoインストールなら setup-keymap というコマンドで設定できますのでここのソースを読むといいかも、です。

##基本的なパッケージのインストール

###apk使用開始前のおまじない
なにはともあれ。

# apk update
# apk upgrade

/etc/apk/repositoriesは最初から設定されてますから、よく紹介されている

# cat > /etc/apk/repositories << EOF
http://dl-cdn.alpinelinux.org/alpine/v$(cat /etc/alpine-release | cut -d'.' -f1,2)/main
http://dl-cdn.alpinelinux.org/alpine/v$(cat /etc/alpine-release | cut -d'.' -f1,2)/community
EOF

は__要らない__です。

###タイムゾーンの設定(再掲)
別にUTCでもいいけど。

# apk add tzdata
# cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtim
# cat "Asia/Tokyo" > /etc/timezone
# apk del tzdata

###OpenRCのインストールと設定

# apk add openrc
# sed -i 's/#rc_sys=""/rc_sys="lxc"/g' /etc/rc.conf
# echo 'rc_provide="loopback net"' >> /etc/rc.conf
# sed -i 's/^#\(rc_logger="YES"\)$/\1/' /etc/rc.conf
# sed -i '/tty/d' /etc/inittab
# sed -i 's/hostname $opts/# hostname $opts/g' /etc/init.d/hostname
# sed -i 's/mount -t tmpfs/# mount -t tmpfs/g' /lib/rc/sh/init.sh
# sed -i 's/cgroup_add_service /# cgroup_add_service /g' /lib/rc/sh/openrc-run.sh
# rm -rf /var/cache/apk/

原典はここです。
https://github.com/neeravkumar/dockerfiles/blob/master/alpine-openrc/Dockerfile
これで rc-service でサービスを登録できるようになります。

###NTPの設定

# apk add openntpd
# vi /etc/ntpd.conf
...
近くのサーバを指すように修正
...
# rc-service openntpd start

###SSHdのインストールと起動

# apk add openssh
# rc-service sshd start

必要に応じて /etc/ssh/sshd_config などを設定してください。

###常用ユーザの設定
となると、rootでsshログインできないから、

# adduser boku
Changing password for boku
New password:***
Retype password:***
passwd: password for boku changed by root

"boku"はユーザー名です。ご自由にどうぞ。

###sudoのインストールと設定
rootになれないと困るから、

# apk add sudo
# visudo
...
boku ALL=(ALL) ALL を追記
...

##そのほか
##IP固定
決め打ちするときは__docker run する時に"--ip 192.168.0.2"__とします。
ちなみにDockerの仕様として、
・デフォルトのbridgeネットワークの時は--ipオプションは無視されます(つまり--networkオプションは必須です)。
・docker network createした時の--subnetオプションで指定した範囲にないとエラーになります。

##再起動***未解決***

# /sbin/reboot
# /sbin/poweroff

いずれも反応しません。な、なんと

# shutdown -r now

に至っては「そげなコマンドあらへん」となります。
WindowsなのでGUIで停止/再起動するさせてますが、結局はこれと同じかも。

PS> docker container stop ali

vmtoolsみたいに正規の方法でシャットダウンしてるとは思えない=電源ブチ切りと同じみたいで気持ちわるいかも💦

###ちょっと進展

# rc reboot

とか

# rc shutdown

かもしれない。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?