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

2021年開発環境 (2021-09-24)

最近の開発環境をメモ。

17.3インチのモバイルモニター *

持ち運びも便利、薄くて場所をとらないのでかなり気に入ってます。IPS液晶パネルで、メーカーはMISEDIです。サイズは17.3インチで、スタンドがついているのですぐに出したり片付けたりできます。

キーボード *

打ちやすい。

IdeaPad Chromebook *

メインはMacBook Airですが、お出かけ用には、Chromebookを使うことにしました。キーボード付きで小さなカバンに入り、Linuxが動くのでこれで十分です。

読書端末 *

かなりお気に入り。E-Inkのスゴイやつ。