【docker】M1チップPCにおいてdockerでubuntu環境を構築しAnacondaをインストールする方法

先日最新のMacBook Airを購入した。この時に性能がよく、省電力なM1チップというCPUのものを購入した。

しかし、このM1チップというのはIntelのCPUなどとは異なったアーキテクチャを使用しているとかで、ソフトの互換性がよくないということを後から知った。

dockerもそのうちの一つで通常のdockerをインストールすることはできなった。

そのためdockerのPrevier版という(プロトタイプてきな?)ものを導入した。

これはM1チップと互換性があるバージョンで最近リリースされたものだった。それでdockerを無事インストールすることができた。

次にM1チップで問題になったのは、「dockerでubuntu環境を構築し、そこにAnacondaをインストールする」ということである。

この時普通にDockerfileにAnacondaのshファイルを持ってくるというものなどを書いて

$docker build .

としてビルドをした。

次にdocker runをしてのUbuntu環境下でAnacondaインストールのためのshファイルを実行する際に警告が出てきた。

root@c48c53204050:/opt# sh Anaconda3-2019.10-Linux-x86_64.sh
WARNING:
Your operating system appears not to be 64-bit, but you are trying to
install a 64-bit version of Anaconda3.
Are sure you want to continue the installation? [yes|no]
[no] >>>

である。つまりOSが64bitじゃないけど64bitのAnacondaをインストールしていいか?と聞かれている。

でも64bitなのでyesとして無理やり突き進んだ結果インストール最後に

Unpacking payload …
/lib64/ld-linux-x86-64.so.2: No such file or directory
/lib64/ld-linux-x86-64.so.2: No such file or directory

こんなことを言われてインストールができなかった。

どうしてか頭を捻っているとM1チップは互換性が悪いと思いだし、色々調べていくとやはりそれが原因でありそうであった。

M1チップは性能や消費電力が優れているそうだが、IntelのCPUなどとは異なったアーキテクチャを採用しており、これがエラーを生み出しているようであった。

そこでdockerで作った環境もIntel CPUと同じように動作してくれる方法を探しているとdockerで発生しているM1チップの問題について言及しているdockerのページがあった。そこには

Not all images are available for ARM64. You can add --platform linux/amd64 to run an Intel image under emulation.(https://docs.docker.com/docker-for-mac/apple-m1/)

と記載があった。つまり、「全てのイメージがM1チップのアーキテクチャで動くわけじゃないよ。なのでこのオプションつけてビルドしてね」的なことが書かれていたので、ビルドする際にこのオプションをつけて実行した

$docker build --platform linux/amd64 .

ビルド完了してdocker runしてみると先程までのエラーは出ずにAnacondaをインストールすることができるようになった。

このエラー回避の方法が見つからなければこのMacBookを手放すところであった。本当にエラー回避の方法が見つかって良かったと思う。無駄な買い物になってしまうところであった。

今後は基本的にはdockerで作った環境にモノを構築していくので特に問題はなくDS勉強を進められると信じている。

未分類

Posted by