ひゃまだのblog

ひゃまだ(id:hymd3a)の趣味のブログ

DockerのTensorflow環境で、apt updateがエラーを吐いて実行できないときの対策

(2023-11-13 初稿)

筆者は、これまで以下の記事をアップし、docker環境を利用してきた。

まずは、お約束の筆者の環境。以下のとおり。

$ 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

これに気がつくのに、半日以上費やしてしまった(俺の半日を返せ〜)。涙

どなたか、困っている人の参考になれば幸い 。

関連ページ