docker run命令的两个apt-get参数不起作用

时间:2015-04-12 17:27:25

标签: docker

使用this official Python image我尝试使用docker.run命令提供大量参数。

docker run -it --rm --name myserver -v "$PWD":/usr/src/myapp 
-w /usr/src/myapp python:3-slim apt-get update && apt-get install libpq-dev -y

首先它显示apt-get update的输出,但随后返回:

apt-get: command not found

但不知何故,这会在抛出错误之前正确输出START,然后是apt-get更新输出和NEXT

docker run -it --rm --name myserver -v "$PWD":/usr/src/myapp 
-w /usr/src/myapp python:3-slim echo "START" && apt-get -y update && echo "NEXT" && apt-get install libpq-dev -y

好像它不能执行多个apt-get命令。为什么echo有效,但第二个apt-get没有?

1 个答案:

答案 0 :(得分:3)

为了确保这些命令在docker上下文中执行,你可以在bash会话中绑定它们:

docker run -it --rm --name myserver -v "$PWD":/usr/src/myapp \
-w /usr/src/myapp python:3-slim \ 
/bin/bash -xec 'apt-get update && apt-get install libpq-dev -y'

这样,&&正确的 shell(在容器中执行的shell)解释,而不是由执行docker run的shell解释。

但更好的做法是使用RUN指令中包含这些命令的新Dockerfile定义新图像,以便准备好使用libpq-dev的容器。