RasberryPI 2 で 持ち運び可能なDockerコンテナ実行環境を作ってみる
RasberryPI2 をずっとほっといていたので、何かに使いたいなと。
でも、何かやるたびに設定をするのが非常に面倒です。
結構時間かかるし・・・。
RasberryPIでDockerが動けば
Dockerコンテナを起動するだけでいろんなサービスが動いたら楽よね。
あと、無線LANの AP としてサービスが使えると面白いんじゃないか?
と思いつきました。
まとめるとこんな感じ
- Dockerが動いているRasberryPI
- AP として動く
- 有線LANがつながってたらインターネットもつながるといいね
というわけで やってみました。
Docker対応OSを動かします
RasberryPI にDockerをインストールしたイメージがすでにあるみたい。
楽だ!
というわけで以下のサイトを参考に
8GB maicroSD に Hypriot Docker Image を書き込んで起動します。
http://knowledge.sakura.ad.jp/knowledge/5418/
http://dr-asa.hatenablog.com/entry/2015/12/10/215900
以下のサイトからイメージをダウンロードして SDカードに書き込みます。
https://blog.hypriot.com/downloads/
今回は最新のバージョン hypriotos-rpi-v1.1.3.img.zip を使用。
SDカードへの書き込みは「Win32 Disk Imager」を使いました。
Win32 Disk Imager 日本語情報トップページ - OSDN
SDカードを書き込んだ後、RaspberryPIに刺して
有線LAN、無線LANアダプタ両方つけて起動。
有線LAN側はDHCPによるIPが勝手に割り振られます。
適当に Ping スウィープとかして探してみて下さい
デフォルトのユーザ名はpirate、パスワードはhypriotであることに注意。
以降は有線LAN側のIPを使用してセットアップを行います。
無線LANアダプタをセットアップします
無線LANアダプタは昔買ったこれを使います。
BUFFALO 無線LAN子機 コンパクトモデル 11n技術・11g/b対応 WLI-UC-GNM
- 出版社/メーカー: バッファロー
- 発売日: 2010/06/25
- メディア: Personal Computers
- 購入: 44人 クリック: 226回
- この商品を含むブログ (28件) を見る
無線LAN アダプタをラズパイに刺して起動。
認識はされているようです。
HypriotOS/armv7: pirate@black-pearl in ~ $ lsusb Bus 001 Device 004: ID 0411:01a2 BUFFALO INC. (formerly MelCo., Inc.) WLI-UC-GNM Wireless LAN Adapter [Ralink RT8070] Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hubHypriotOS/armv7: pirate@black-pearl in ~ $ iwlist wlan0 scan wlan0 Failed to read scan data : Network is down
認識されていることを確認したら
nicの設定を行います。
HypriotOS/armv7: pirate@black-pearl in ~ $ sudo vi /etc/network/interfaces.d/wlan0allow-hotplug wlan0 #iface wlan0 inet dhcp
iface wlan0 inet static address 192.168.10.100 netmask 255.255.255.0
HypriotOS/armv7: pirate@black-pearl in ~ $ sudo ifdown wlan0 HypriotOS/armv7: pirate@black-pearl in ~ $ sudo ifup wlan0
HypriotOS/armv7: pirate@black-pearl in ~ $ ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1⁄8 scope host lo valid_lft forever preferred_lft forever inet6 ::1⁄128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether b8:27:eb:ec:75:d7 brd ff:ff:ff:ff:ff:ff inet 192.168.1.6⁄24 brd 192.168.1.255 scope global eth0 valid_lft forever preferred_lft forever inet6 2408:211:a84:2b00:ba27:ebff:feec:75d7/64 scope global mngtmpaddr dynamic valid_lft 13005sec preferred_lft 11205sec inet6 fe80::ba27:ebff:feec:75d7/64 scope link valid_lft forever preferred_lft forever 3: wlan0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000 link/ether b0:c7:45:a9:72:90 brd ff:ff:ff:ff:ff:ff inet 192.168.10.100⁄24 brd 192.168.10.255 scope global wlan0 valid_lft forever preferred_lft forever 4: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default link/ether 02:42:1e:e8:02:ba brd ff:ff:ff:ff:ff:ff inet 172.17.0.1⁄16 scope global docker0 valid_lft forever preferred_lft forever
無事 IP がふられたようです。
ここでは 192.168.10.100 として作業を進めます。
無線LAN APのセットアップ
次に以下のサイトを参考に 無線AP としてセットアップしていこうと思います
http://hyottokoaloha.hatenablog.com/entry/2015/02/24/000655
https://www.maketecheasier.com/set-up-raspberry-pi-as-wireless-access-point/
DHCPサーバをインストールします
HypriotOS/armv7: pirate@black-pearl in ~ sudo apt-get updateHypriotOS/armv7: pirate@black-pearl in ~ $ sudo apt-get install isc-dhcp-server
設定ファイルを編集します
HypriotOS/armv7: pirate@black-pearl in ~ $ sudo vi /etc/dhcp/dhcpd.conf<以下を無効に> #option definitions common to all supported networks… #option domain-name "example.org"; #option domain-name-servers ns1.example.org, ns2.example.org;
<以下を有効に> authoritative;
<ファイルの最後尾に以下を追加> ping-check true;
subnet 192.168.10.0 netmask 255.255.255.0 { option routers 192.168.10.100; option broadcast-address 192.168.10.255; option subnet-mask 255.255.255.0; option domain-name "local"; option domain-name-servers 8.8.8.8,8.8.4.4; default-lease-time 600; max-lease-time 7200; range 192.168.10.101 192.168.10.254; }
HypriotOS/armv7: pirate@black-pearl in ~ $ sudo vi /etc/default/isc-dhcp-server
INTERFACES="wlan0"
つぎに APデーモンをインストール
HypriotOS/armv7: pirate@black-pearl in ~ $ sudo apt-get install -y hostapdHypriotOS/armv7: pirate@black-pearl in ~ $ sudo vi /etc/hostapd/hostapd.conf
interface=wlan0 driver=nl80211 #driver=rtl871xdrv ssid=MyPi hw_mode=g channel=6 macaddr_acl=0 auth_algs=1 ignore_broadcast_ssid=0 wpa=2 wpa_passphrase=raspberry wpa_key_mgmt=WPA-PSK wpa_pairwise=TKIP rsn_pairwise=CCMP
HypriotOS/armv7: pirate@black-pearl in ~ $ sudo vi /etc/default/hostapd
DAEMON_CONF="/etc/hostapd/hostapd.conf"
wlan0とeth0 のルーティング設定
HypriotOS/armv7: pirate@black-pearl in ~ $ sudo vi /etc/sysctl.conf<コメントアウトを解除> #Uncomment the next line to enable packet forwarding for IPv4 net.ipv4.ip_forward=1
<1 であることを確認> HypriotOS/armv7: pirate@black-pearl in ~ $ cat /proc/sys/net/ipv4/ip_forward 1
HypriotOS/armv7: pirate@black-pearl in ~ sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE && sudo iptables -A FORWARD -i eth0 -o wlan0 -m state –state RELATED,ESTABLISHED -j ACCEPT && sudo iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT
HypriotOS/armv7: pirate@black-pearl in ~ $ sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"
HypriotOS/armv7: pirate@black-pearl in ~ $ sudo vi /etc/network/interfaces.d/wlan0
<最下行に以下を追加> pre-up iptables-restore < /etc/iptables.ipv4.nat
ここまでできたら おもむろにreboot!
reboot now
再起動が完了すると、コンフィグに書いたとおりのSSIDでアクセスポイント
「MyPi」が見えるようになります。
パスワードは「raspberry」
アクセスすると普通にインターネットに接続できます。
またDockerコンテナを起動するとAP の IP と port番号で コンテナのサービスにアクセスできました!
さてここから何をしようかしら。。。
moremagic
2017-01-07