日々精進

新しく学んだことを書き留めていきます

docker buildに失敗した場合のデバッグ方法

以下手順でビルド失敗時点のコンテナに入れるのでそこで手動でコマンドを実行して調査する。

以下を実行して一番上のコンテナのIDをコピーする。

docker ps -a

コピーしたIDを以下のコマンドに入れて実行する

docker commit <ID> debug && docker run -it debug /bin/bash

基本的にDockerfileのコマンドはまずコンテナ内で手動実行して成功した物を書いていく方が速いと思います。

参考:

gendosu.jp

CenterNetをインストールしようとすると「nvcc: command not found」エラー

CenterNetのインストール手順にmake.shを実行する手順があるが、これを実行すると「nvcc: command not found」エラーが発生した。 https://github.com/xingyizhou/CenterNet/blob/master/readme/INSTALL.md

nvccはcudaのコンパイラで、cuda toolkitに含まれるらしい。 なのでcuda toolkitをインストールしてみたが、やっぱりnvccコマンドが使えない。

調べてるうちに、ビルド環境のコンテナのベースイメージがcuda base imageだからnvccが入ってないということがわかった。 devel imageは開発用のイメージでnvccも含まれるらしい。

なのでベースイメージを nvidia/cuda:9.0-devel-ubuntu16.04 にしたら直った。

参考:

vasteelab.com

DockerfileのENVで定義した環境変数をsshでログインした時に引き継ぐ

基本はdokcer-composeのcommandを以下のようにして/etc/environment に環境変数を吐いておけば良い。

    command: > bash -c 'printenv | grep -v "HOME" >> /etc/environment && /bin/bash'

ただし、これはPATHなどの元々ある環境変数には効かないので、PATHを変更したい場合は.bashrcにexport PATH=...のようなコマンドを追記しておく必要がある。

参考:

qiita.com

git cloneを実行すると「fatal: unable to access ~ Received HTTP code 503 from proxy after CONNECT」エラー

原因は git clone http:s//https://github.com/tensorflow/tensorflow のようにwebページのURLを指定してしまっていたため。 git clone http:s//https://github.com/tensorflow/tensorflow.git のように.gitを付けると直った。git cloneコマンドでcloneするの久しぶりで忘れてた。。