Alpineを理解したい
Dockerイメージを作る時にAlpineベースにしようと思ったら、使い方がいまいちわからなかった。
勉強を兼ねてVMで環境を作ってみることにした。
Alpine
めちゃくちゃ軽いLinuxディストリビューション。
Install on VirtualBox
イメージのダウンロード
公式のダウンロードページからisoファイルをダウンロードする。
VMの作成
名前は適当に、タイプはLinuxに、バージョンはOther Linux (64-bit)にする。
ストレージとネットワークの設定を行う。
isoファイルを追加する。
アダプター1をSSHの設定に使う。
ポートフォワーディングの設定を以下のようにする。
アダプター2をブリッジアダプターに設定する。
最初のセットアップ時はisoファイルを読み込みたいので、起動順序を光学優先にする。
多分デフォルトは光学が優先になっていると思う。
以上でVMを起動する。
初期設定
OSが立ち上がったらパスワードなしのrootでログインする。
Welcome to Alpine Linux 3.3
Kernel 4.1.15-2-grsec on an x86_64 (/dev/tty1)
localhost login: root
Welcome to Alpine!
:
You can setup the system with the command: setup-alpine
You may change this message by editing /etc/motd.
localhost:~#
setup-alpine
を使って設定しろとのことなので、コマンドを実行する。
対話形式で色々聞かれるので、進める。
ハードディスクの指定をする。
これで、ハードディスクにAlpineがインストールされて、isoファイルなしで起動できるようになる。
Available disks are:
sda (8.6 GB ATA VBOX HARDDISK )
Which disk(s) would you like to use? (or '?' for help or 'none') [none] sda
The following disk is selected:
sda (8.6 GB ATA VBOX HARDDISK )
How would you like to use it? ('sys', 'data', 'lvm' or '?' for help) [?] sys
WARNING: The following disk(s) will be erased:
sda (8.6 GB ATA VBOX HARDDISK )
WARNING: Erase the above disk(s) and continue? [y/N]: y
WARNINGが出るが、yを選択する。
ディスクがフォーマットされてインストールされる。
一度Nを選択したらもう一度セットアップをする羽目になった。
しばらくまって、インストールが完了したらpoweroff
コマンドでいったん電源をオフにする。
イメージファイルを消す
VirtualBoxでストレージの設定からisoディスクイメージを消す。
ストレージも光学ドライブはいらないので、ハードディスク最優先にする。
これでAlpineのセットアップは完了。
Alpineの設定いろいろ
SSHの設定
/etc/ssh/sshd_config
を書き換える。
PermitRootLogin
がコメントアウトになっているので、下記のように修正する。
PermitRootLogin yes
これでSSHでrootログインができる。
セキュリティてきにはよろしくないから別のログインユーザーを作ったらno
に変えるようにする。
ホストOSのターミナルで下記コマンドでVMにrootユーザーでログインする。
ssh -p 2222 root@localhost
別のユーザーでログインしたかったら@の前のユーザー名を変えてログインする。
SSHの設定ができたら、VMはヘッドレス起動にするとウィンドウが立ち上がらなくて嬉しい。
sudo
Alpine にはsudoもない。
root以外のユーザーで色々試すには管理者権限が必要なので、sudoをインストールする。
apk update
apk add sudo
/etc/sudoers
にユーザー権限を追加する。
<user name> ALL=(root) ALL
Shell
Alpineではashが標準のシェルになる。
プロンプトにユーザー名を記載したければ、/etc/profile
を書き換える。
export PS1='\u@\h:\w\$ '
bashを使いたい場合は、apk
でインストールする。
ただ、AlpineのコマンドはBusyBoxなので、エイリアスの設定とかができなかったりする。
Alpineに慣れるという意味でもbashはいらないかなと思う。
viが標準で入っていて、vimを使いたい場合も別途インストールが必要。
これもviでいいと思う。
motd
ログインしたら出てくるメッセージ。/etc/motd
を書き換えるだけ。
Alpineの初期のままだと、セットアップしなさいのメッセージがずっと出るから変えると起動するのが楽しくなる。
_ _ _
/ \ | |_ __ (_)_ __ ___
/ _ \ | | '_ \| | '_ \ / _ \
/ ___ \| | |_) | | | | | __/
/_/ \_\_| .__/|_|_| |_|\___|
|_|
いい感じのアスキーアートを記載するといいと思う。
figletを使うと簡単に文字のAAを生成できる。
❯ figlet "Hello World"
_ _ _ _ __ __ _ _
| | | | ___| | | ___ \ \ / /__ _ __| | __| |
| |_| |/ _ \ | |/ _ \ \ \ /\ / / _ \| '__| |/ _` |
| _ | __/ | | (_) | \ V V / (_) | | | | (_| |
|_| |_|\___|_|_|\___/ \_/\_/ \___/|_| |_|\__,_|
❯ figlet -f epic "Hello World"
_______ _ _ _______
|\ /|( ____ \( \ ( \ ( ___ )
| ) ( || ( \/| ( | ( | ( ) |
| (___) || (__ | | | | | | | |
| ___ || __) | | | | | | | |
| ( ) || ( | | | | | | | |
| ) ( || (____/\| (____/\| (____/\| (___) |
|/ \|(_______/(_______/(_______/(_______)
_______ _______ _ ______
|\ /|( ___ )( ____ )( \ ( __ \
| ) ( || ( ) || ( )|| ( | ( \ )
| | _ | || | | || (____)|| | | | ) |
| |( )| || | | || __)| | | | | |
| || || || | | || (\ ( | | | | ) |
| () () || (___) || ) \ \__| (____/\| (__/ )
(_______)(_______)|/ \__/(_______/(______/
最後に
シンプルなディストリビューションを触ることで、Linuxの仕組みが少し理解できた。
Ubuntuとかのありがたみを実感する。
Discussion