NVIDIA Jetson Nano上的Docker无法执行

时间:2019-09-13 15:47:44

标签: docker ubuntu nvidia-jetson-nano

我正在设置一个nvidia jetson nano来运行docker容器。我正在使用已经在x86_64 Ubuntu 16.04计算机上使用的安装过程,其中docker可以流畅地运行。尽管如此,泊坞窗似乎设置正确,但是我无法运行它。

我按照http://nvidia.com/jetsonnano-start中的描述刷新了jetson SD卡,并通过键盘和屏幕设置了语言等。 之后,我变得无头并通过ssh安装。我使用的命令显示在下面的列表中。

# in case apt-get is interrupted, e.g. if board freezes, use: $ sudo dpkg --configure -a

sudo apt-get update && apt-get -y upgrade

# install Docker, from https://docs.docker.com/install/linux/docker-ce/ubuntu/
sudo apt install -y \
     git \
     apt-transport-https \
     ca-certificates \
     curl \
     gnupg2 \
     software-properties-common

# Get the Docker signing key for packages
curl -fsSL https://download.docker.com/linux/$(. /etc/os-release; echo "$ID")/gpg | sudo apt-key add -

# Add the Docker official repos
echo "deb [arch=arm64] https://download.docker.com/linux/$(. /etc/os-release; echo "$ID") \
     $(lsb_release -cs) stable" | \
    sudo tee /etc/apt/sources.list.d/docker.list

# Install Docker
sudo apt update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io
# starting Docker and enabling it at boot
sudo systemctl enable docker
sudo systemctl start docker

# ad user to docker group, so docker commands can be executed without sudo
sudo gpasswd -a $USER docker
newgrp docker

# install docker-compose
sudo apt-get install -y python-pip python-dev libffi6 libffi-dev libssl-dev libxml2-dev libxslt1-dev libjpeg8-dev zlib1g-dev
sudo -H pip install docker-compose

在安装后,我可以看到

$ docker --version
Docker version 19.03.2, build 6a30dfc

但是,当执行某件事时,我会遇到exec格式错误

$ docker run jupyter/minimal-notebook
standard_init_linux.go:211: exec user process caused "exec format error"

Docker确实提取了映像。在Dockerfiles中,WORKDIR命令有效,但是RUN命令产生相同的“ exec格式错误”。

非常感谢您对此无误运行的任何帮助或提示

2 个答案:

答案 0 :(得分:2)

问题在于jetson nano的体系结构是aarch64(64位ARM)。对此没有Anaconda构建,但是存在一个名为Archiconda的项目。

请参阅: https://devtalk.nvidia.com/default/topic/1051415/jetson-nano/anaconda-for-jetson-nano/

对于Jetson Nano上来自Docker的jupyter笔记本,它帮助我遵循了这个Dockerfile(如上面的链接所示): https://github.com/helmuthva/jetson/blob/master/workflow/deploy/ml-base/src/Dockerfile

答案 1 :(得分:0)

Docker不是完整的虚拟机。为x86_64构建的程序将无法在不兼容的处理器上运行。您需要构建和使用aarch64版本的Docker,这可能需要从源代码构建。

许多重要的Python程序包都包含可能不兼容的C / C ++内核,但是Python在安装过程中对其进行了编译。