使用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
没有?
答案 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
的容器。