Upgrade to Pro — share decks privately, control downloads, hide ads and more …

rancheros-in-raspberrypi

yasu
June 07, 2019

 rancheros-in-raspberrypi

Cloud Native Sendai #02 でのLT資料です。
LT中に足りないなと思った内容を追記しています。
※だから「改」

yasu

June 07, 2019
Tweet

More Decks by yasu

Other Decks in Technology

Transcript

  1. Raspberry Pi 3 Model B+ & SDカード(32GB)
 RancherOS 1.5.2
 Docker

    18.06.3-ce(RancherOS内蔵)
 
 
 環境
  2. 
 
 
 バージョン確認 $ cat /etc/os-release 
 NAME="RancherOS" 


    VERSION=v1.5.2
 ID=rancheros
 ID_LIKE=
 VERSION_ID=v1.5.2
 PRETTY_NAME="RancherOS v1.5.2" 
 HOME_URL="http://rancher.com/rancher-os/" 
 SUPPORT_URL="https://forums.rancher.com/c/rancher-os" 
 BUG_REPORT_URL="https://github.com/rancher/os/issues" 
 BUILD_ID=
 
 $ docker -v
 Docker version 18.06.3-ce, build d7080c1 
 

  3. 
 
 
 設定方法 設定ファイル
 $ sudo cat /var/lib/rancher/conf/cloud-config.yml 


    
 手動での設定変更
 $ sudo ros config set <key> <value> 
 
 現在の設定値の出力 
 $ sudo ros config export 
 

  4. wifi は v1.5 から使用できます。設定後ssh接続が可能。
 
 公式
 https://rancher.com/docs/os/v1.x/en/installation/networking/interfaces/ 
 
 


    Wifi設定 $ sudo ros config set rancher.network.interfaces.wlan0.wifi_network network1 
 $ sudo ros config set rancher.network.wifi_networks.network1.ssid "SSIDを入れます" 
 $ sudo ros config set rancher.network.wifi_networks.network1.psk "パスワード or シェアードキー" 
 $ sudo ros config set rancher.network.wifi_networks.network1.scan_ssid 1 
 $ sudo system-docker restart network 
 
 ※「interfaces」「wifi_networks」など「s」をつけ忘れて、しばらく悩みました。 
 ※英語配列なので、「_」は「Shift」+「-」、「"」は「Shift」+「:」 
 
 $ ip a
 ※wlan0 にipが割り当てられているか確認します。 

  5. 
 
 
 SDカードの領域拡張 $ sudo fdisk /dev/mmcblk0 
 


    Welcome to fdisk (util-linux 2.31.1). 
 Changes will remain in memory only, until you decide to write them. 
 Be careful before using the write command. 
 
 Command (m for help): n # パーティションを作成する 
 Partition type
 p primary (2 primary, 0 extended, 2 free) 
 e extended (container for logical partitions) 
 Select (default p): enter # プライマリパーティションを選択する 
 
 Using default response p. 
 Partition number (3,4, default 3): enter # パーティション番号の選択 
 First sector (4194304-62333951, default 4194304): enter # 先頭セクタの選択 
 Last sector, +sectors or +size{K,M,G,T,P} (4194304-62333951, default 62333951): enter # 最終セクタの選 択

  6. 
 
 
 SDカードの領域拡張 Created a new partition 3 of

    type 'Linux' and of size 27.7 GiB. 
 
 Command (m for help): w # 保存して終了 
 The partition table has been altered. 
 Syncing disks.
 
 $ sudo reboot # 再起動して新しいパーティションテーブルをリロードする 
 
 ~ 再起動 ~
 
 $ sudo mkdir /mnt/docker 
 新しいDockerルートとして使用されるディレクトリを作成する 

  7. 
 
 
 SDカードの領域拡張 $ sudo mkfs.ext4 /dev/mmcblk0p3 # 作成したパーティションをフォーマットする

    
 
 mke2fs 1.43.9 (8-Feb-2018) 
 /dev/mmcblk0p3 contains a ext4 file system 
 last mounted on /mnt/docker on Tue May 21 11:32:14 2019 
 Proceed anyway? (y,N) y
 Discarding device blocks: done 
 Creating filesystem with 7267456 4k blocks and 1818624 inodes 
 Filesystem UUID: ba3fae90-0e14-4abf-a9c4-68a09400067b 
 Superblock backups stored on blocks: 
 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
 4096000
 
 Allocating group tables: done 
 Writing inode tables: done 
 Creating journal (32768 blocks): done 
 Writing superblocks and filesystem accounting information: done 

  8. 
 
 
 SDカードの領域拡張 $ sudo mount /dev/mmcblk0p3 /mnt/docker 


    Dockerのルートをマウントする 
 
 $ mount | grep mmcblk 
 /dev/mmcblk0p3 on /mnt/docker type ext4 (rw,relatime,data=ordered) 
 確認する
 
 $ sudo ros config set rancher.docker.extra_args [-g,/mnt/docker] 
 新しいルートを使用するようにDockerを設定する 
 
 $ sudo ros config set mounts "[['/dev/mmcblk0p3','/mnt/docker','ext4','']]" 
 再起動後もこのマウントを有効にする 
 
 $ sudo reboot
 $ mount | grep mmcblk 
 /dev/mmcblk0p3 on /mnt/docker type ext4 (rw,relatime,data=ordered) 
 再起動後、マウントされていることを確認する 

  9. Dockerfile1
 
 
 
 
 
 
 
 コンテナの作成 FROM

    python:3.7.3-slim-stretch 
 
 RUN set -x && \
 apt update && \ 
 apt install -y build-essential && \ 
 apt install -y libopencv-dev 
 

  10. Dockerfile2
 
 
 
 コンテナの作成 FROM python-apt
 
 RUN set

    -x && \
 pip install -U pip && \ 
 pip install jupyterlab==0.35.6 Pillow==6.0.0 joblib==0.13.2 

  11. Dockerfile3
 
 
 
 コンテナの作成 FROM python-apt-1 
 
 ENV

    PYTHONPATH "/opt/python/library" 
 
 RUN set -x && \
 pip install scikit-learn==0.21.2 && \ 
 mkdir -p /opt/python/library && \ 
 mkdir -p /opt/python/jupyter && \ 
 mkdir -p /opt/python/jupyterlab && \ 
 mkdir ~/.jupyter
 
 COPY ./jupyter_notebook_config.py /root/.jupyter/jupyter_notebook_config.py 
 EXPOSE 8888
 
 CMD ["jupyter", "lab", "--allow-root"] 

  12. jupyter_notebook_config.py
 
 
 コンテナの作成 $ cat jupyter_notebook_config.py 
 c =

    get_config()
 c.NotebookApp.ip = '0.0.0.0' 
 c.NotebookApp.open_browser = False 
 c.NotebookApp.port = 8888 
 c.NotebookApp.notebook_dir = '/opt/python/jupyter' 
 c.LabApp.user_settings_dir = '/opt/python/jupyterlab/lab/user-settings' 
 c.LabApp.workspaces_dir = '/opt/python/jupyterlab/lab/workspaces' 
 c.NotebookApp.password = u'sha1:63cae364b3cd:c4319cba1eeb1bcf011a7d3fabd6448f95ae18c5' 

  13. 熱のせいか途中で止まってしまいます。
 保冷剤材で囲みつつ、Dockerファイルを分割してbuildを3回実 行します。
 
 
 コンテナの作成 $ cp -f Dockerfile1

    Dockerfile 
 $ docker build -t python-apt . 
 
 $ cp -f Dockerfile2 Dockerfile 
 $ docker build -t python-apt-1 . 
 
 $ cp -f Dockerfile3 Dockerfile 
 $ docker build -t scikit-laern . 
 

  14. 
 
 コンテナの作成 $ docker build -t scikit-laern . 


    Sending build context to Docker daemon 7.168kB 
 Step 1/6 : FROM python-apt-1 
 ---> 3fe2cd92f178
 Step 2/6 : ENV PYTHONPATH "/opt/python/library" 
 ・
 ・
 ・
 Downloading https://files.pythonhosted.org/packages/cb/97/361c8c6ceb3eb765371a702ea873ff2fe112fa40073e7d2b81 99db8eb56e/scipy-1.3.0.tar.gz (23.6MB) 
 Installing build dependencies: started 
 Installing build dependencies: still running... 
 Installing build dependencies: still running... 
 Installing build dependencies: still running... 
 Installing build dependencies: still running.. 
 Installing build dependencies: still running...