書籍サポート%2Fやさしくはじめるラズパイ (2022-01-02)

書籍サポート/やさしくはじめるラズパイ *

何かの問題でこちらのページが表示されてしまった方は、以下のページをご覧ください:

はじめてラズパイを始めるすべての皆さんに贈るラズパイと電子工作の入門書です。

上記の本、2021年の年末に改訂したラズベリーパイの解説書籍です!!

M1 MacのDockerでx86_64イメージを使う (2021-11-09)

M1 MacのDockerでx86_64イメージを使う *

M1 Macにしてみたものの、意外にもPythonで動かないライブラリがあってDockerを使うことになった。Dockerはx86_64のイメージを手軽に動かせるので便利。DockerでなくHomebrewを工夫することでもできるけど、Dockerに閉じ込めればクリーンに使えて便利。

そこで、以下のようなDockerfileを作って使う。

FROM --platform=linux/x86-64 ubuntu

RUN set -x && \
  apt update && \
  apt install -y tzdata && \
  apt install -y language-pack-ja-base language-pack-ja locales && \
  locale-gen ja_JP.UTF-8 && \
  apt install -y wget curl git vim && \
  apt install -y python3 python3-pip && \
  apt install -y build-essential libssl-dev libffi-dev python3-dev && \
  apt install -y libsndfile1-dev 

ENV LC_ALL ja_JP.UTF-8
ENV LANG ja_JP.UTF-8

RUN set -x && \
  pip3 install \
  Flask==2.0.2 \
  SoundFile==0.10.3.post1 \
  google-cloud-core==2.1.0 \
  google-cloud-speech==2.10.0 \
  pyinstaller==4.5.1 \
  azure-cognitiveservices-speech==1.18.0 \
  grpcio-tools==1.26.0

このDockerfileをビルドするには、以下のようなコマンドを実行する。

#!/bin/bash
docker build -t hoge/x86_64_my_python:latest .

起動するには以下のようにする。

#!/bin/bash
LOCAL_PORT=8888
DOCKER_PORT=8888
SCR_DIR=$(cd $(dirname $0); pwd)
BASE_DIR=`echo $SCR_DIR | xargs dirname`

docker run \
  --name hoge-server \
  --rm \
  -v $BASE_DIR/app_dir:/root/app_dir \
  -p $LOCAL_PORT:$DOCKER_PORT \
  -it hoge/x86_64_my_python:latest \
  /root/app_dir/server.py $DOCKER_PORT

末尾の一行を「/bin/bash」に変えれば、シェルを起動できる。
上記を、docker-compose.ymlで管理するのも便利。

参考 *

dockerでubuntu (2021-10-29)

DockerでUbuntuを使ってみたメモ。

最初にDockerをインストールしておく。

# Dockerのインストール
brew install --cask docker

Ubuntuイメージを検索する。

docker search ubuntu

Ubuntu コンソール *

普通にDockerでUbuntuを使う場合:

docker pull ubuntu
docker run -it ubuntu

ログインしたら、aptでいつものようにインストール可能。

apt update
apt install -y vim git
exit # コンテナを抜ける

コンテナの一覧を表示など

docker ps -l # 最新のコンテナを表示
docker ps -a # 全てのコンテナを表示

docker start xxx # 停止したコンテナを再開
docker attach xxx # 稼働中のコンテナに入る
docker rm xxx # コンテナを終了

docker images # イメージ一覧を表示
docker rmi xxx # イメージを削除
docker commit -m "何をしたか" -a "作者" コンテナID リポジトリ/イメージ名 

ローカルのファイルシステムをマウントして起動。

# ユーザーフォルダを /mnt で
docker run -v ~/docs:/root/docs -it IMAGE bash

なお、複数のディレクトリを指定可能なので、いつもの環境で作業したければ、.sshをマウントしておく。そうすれば、いつものSSHキーでGitHubやその他のリポジトリを操作可能。

# よく使うディレクトリをマウント
docker run \
  --rm \
  -v ~/.ssh:/root/.ssh \
  -v ~/repos:/root/repos \
  -it ubuntu bash

なお「--rm」オプションをつければ、作業終了後コンテナが消えるので環境を汚すことがないので便利。--rmをつけない場合、docker rmで明示的に削除する。

Dockerfileでスマートにイメージを管理 *

Dockerfileで必要なアプリだけaptしておいたベースを1つ作っておいて、用途に合わせて使い分けが可能。

以下のようなコマンドでイメージをビルドできる。

docker build -t イメージ名/タグ名:latest .

Ubuntu + lxde + VNC + ブラウザ *

M1 MacでDockerでUbuntuのlxdeを動かす方法のメモ。
DockerでGUI、面白かった。たぶん使わないけど、一応備忘録としてメモ。

Dockerコンテナを取得。

docker pull dorowu/ubuntu-desktop-lxde-vnc
docker run --name ubuntu_desktop -p 8888:80 dorowu/ubuntu-desktop-lxde-vnc

ブラウザ「localhost:8888」にlxdeのデスクトップ画面が表示される。ターミナルでCtrl+cを押すと終了する。

Dockerをx86-64モードで実行 *

Dockerはx86-64のエミュレーションモードでも動くので便利。もちろん、動作は遅くなるけれど、x86-64以外は動かないというライブラリを動かすのに便利。

docker runを行う際に、--platform=linux/amd64のオプションを付与して起動を行う。

docker run --platform=linux/amd64 ubuntu

また、Dockerfileでビルドする場合は、以下のように、「--platform」オプションを指定する。

FROM --platform=linux/x86-64 ubuntu
...
RUN apt update && apt install wget
..