我正在使用此docker image构建自己的一个。一切正常,我不需要安装numpy, pandas, scipy, ... etc
,这很耗时。感谢这项工作背后的许多人。
我通常使用root
来生成图像并在container
内执行程序。但是这次我在其他image
之上运行,并且有一个限制。
问题:
我必须安装os软件包。 openssh-client
将用于执行keyscan
,我将能够从Internet提取依赖项
-e GRANT_SUDO = yes-指示启动脚本授予NB_USER用户无密码sudo功能。您不需要此选项 允许用户conda或pip安装其他软件包。这个 选项很有用,但是当您希望赋予$ NB_USER功能 使用apt安装OS软件包或在其中修改其他root拥有的文件 容器。为使此选项生效,您必须运行 带有--user root的容器。 (start-notebook.sh脚本将 在将$ NB_USER添加到sudoers中后,请选择$ NB_USER。)仅应启用 如果您信任用户或容器正在运行,则为sudo 隔离的主机。
然后我尝试将其与DockerFile
和docker-compose.yml
如下使用
version: '3.7'
services:
webapp:
build:
context: ./
dockerfile: DockerFile/local/DockerFile
environment:
- GRANT_SUDO=yes
- user=root
volumes:
- .:/app
ports:
# 8888 for jupyter notebook
# 5000 for flask development server
- "8888:8888"
- "5000:5000"
networks:
overlay:
DockerFile
FROM jupyter/datascience-notebook
WORKDIR /app
RUN sudo apt-get update
RUN mkdir ~/.ssh
COPY id_rsa /home/jovyan/.ssh
RUN ssh-keyscan github.com >> ~/.ssh/known_hosts
COPY productions.txt .
RUN pip install -r productions.txt
它引发错误
$ docker-compose build
WARNING: Some networks were defined but are not used by any service: overlay
Building webapp
Step 1/9 : FROM jupyter/datascience-notebook
---> a35774727dc0
Step 2/9 : MAINTAINER Hbot.io
---> Using cache
---> 9b4320e836f8
Step 3/9 : WORKDIR /app
---> Using cache
---> fdcc9e1b48c3
Step 4/9 : RUN sudo apt-get update
---> Running in 0e43ba200881
sudo: no tty present and no askpass program specified
ERROR: Service 'webapp' failed to build: The command '/bin/sh -c sudo apt-get update' returned a non-zero code: 1
问题:
如何通过DockerFile
在此映像上安装os软件包?