代码之家  ›  专栏  ›  技术社区  ›  Kyu96

tensorflow docker compose中没有apt?

  •  1
  • Kyu96  · 技术社区  · 4 年前

    我需要使用tensorflow的旧版本来编译项目。为此,我们设置docker compose文件:

    version: "3.8"
    
    services:
      exercise:
        build:
          context: .
        container_name: practical_4
        environment:
          DATASET: cifar
        volumes:
          - "./:/app/"
    
        command: bash run.sh
    

    我的Dockerfile如下所示:

    FROM tensorflow/tensorflow:1.15.2
    
    WORKDIR /app
    COPY . /app/
    
    RUN ['apt', 'install', 'python-pip']
    #RUN ['pip', 'install', 'matplotlib']
    

    最后是运行脚本:

    #!/bin/bash
    
    echo "$DATASET"
    
    # Install dependencies
    pip install matplotlib
    pip install numpy
    pip install pickle
    
    if [ $DATASET = "cifar" ]; then
      python cifar_cnn.py
    else
      python mnist_cnn.py
    fi
    

    现在,跑步时 docker-compose up 程序失败。对于某些情况,未找到命令apt。。?

    Step 4/5 : RUN ['apt', 'install', 'python-pip']
     ---> Running in 39c9c48240b5
    /bin/sh: 1: [apt,: not found
    ERROR: Service 'exercise' failed to build: The command '/bin/sh -c ['apt', 'install', 'python-pip']' returned a non-zero code: 127
    

    为什么会这样,我该如何解决这个问题?

    2 回复  |  直到 4 年前
        1
  •  1
  •   Grigoriy Mikhalkin    4 年前

    从…起 docs :

    exec表单被解析为JSON数组,这意味着您必须在单词周围使用双引号()而不是单引号()。

    因此,如果要使用exec表单,请尝试:

    RUN ["apt", "install", "python-pip"]
    

    还有外壳形式:

    RUN apt install python-pip
    

    这种形式更适合您的情况,因为当您想在不同的(而不是 /bin/sh -c )shell,例如:

    RUN ["/bin/bash", "-c", "apt install python-pip"]
    
        2
  •  1
  •   v25    4 年前

    尝试使用:

    RUN apt-get upgrade && apt-get install -y python-pip