(2023-11-13 初稿)
筆者は、これまで以下の記事をアップし、docker環境を利用してきた。
- Debian 11(Bullseye)にDockerのインストール
- Dockerでpython3の環境を作る
- DockerでTensorflow環境を作る
- DockerのrootlessでTensorflowを使うメモ
- Dockerのコンテナやイメージの整理メモ
- Debian 12(bookworm)の Docker で Tensorflow を動かす
まずは、お約束の筆者の環境。以下のとおり。
$ docker -v Docker version 24.0.7, build afdd53b
# cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=22.04 DISTRIB_CODENAME=jammy DISTRIB_DESCRIPTION="Ubuntu 22.04.2 LTS"
症状
apt updateで、以下のエラーが出て実行できない。
Get:1 https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64 InRelease [1581 B] Err:1 https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64 InRelease Couldn't create temporary file /tmp/apt.conf.yxqMxe for passing config to apt-key Get:2 http://archive.ubuntu.com/ubuntu jammy InRelease [270 kB] Get:3 http://security.ubuntu.com/ubuntu jammy-security InRelease [110 kB] Err:3 http://security.ubuntu.com/ubuntu jammy-security InRelease Couldn't create temporary file /tmp/apt.conf.6ALe2o for passing config to apt-key Err:2 http://archive.ubuntu.com/ubuntu jammy InRelease Couldn't create temporary file /tmp/apt.conf.5WbxDf for passing config to apt-key Get:4 http://archive.ubuntu.com/ubuntu jammy-updates InRelease [119 kB] Err:4 http://archive.ubuntu.com/ubuntu jammy-updates InRelease Couldn't create temporary file /tmp/apt.conf.9mIq7b for passing config to apt-key Get:5 http://archive.ubuntu.com/ubuntu jammy-backports InRelease [109 kB] Err:5 http://archive.ubuntu.com/ubuntu jammy-backports InRelease Couldn't create temporary file /tmp/apt.conf.tYsbJI for passing config to apt-key
Reading package lists...
対策
具体的には、筆者は以下のコマンドでdockerを立ち上げ実行していた。
$ docker run --gpus all -it --rm -v $PWD:/tmp -w /tmp tensorflow/tensorflow:latest-gpu bash
いろいろ調べた結果、-vオプションでマウントするディレクトリを-wオプションで作業ディレクトリにするとエラーが起きる。
そこで、作業ディレクトリを指定しないdocker環境の/(root)など、マウントするディレクトリと別のディレクトリにすることにより、無事aptが実行できるようになる。
$ docker run --gpus all -it --rm -v $PWD:/work tensorflow/tensorflow:latest-gpu bash
これに気がつくのに、半日以上費やしてしまった(俺の半日を返せ〜)。涙
どなたか、困っている人の参考になれば幸い 。