如何在 Docker 容器中运行命令?

如何在 Docker 容器中运行命令?

我正在尝试让任何 python 命令在我的 docker 容器上运行,因为我正在尝试安装 odoo 模块的要求,但我不知道为什么,而且文档很少(据我所知)

sudo docker exec -it veivaa-odoo1 /bin/bash
odoo@veivaa-odoo1:/$ docker-compose run pip install py-asterisk
bash: docker-compose: command not found
odoo@veivaa-odoo1:/$ docker-compose run veivaa-odoo1 apt-get update
bash: docker-compose: command not found
odoo@veivaa-odoo1:/$ sudo docker-compose run veivaa-odoo1 apt-get update
bash: sudo: command not found
odoo@veivaa-odoo1:/$ docker-compose run veivaa-odoo1 /bin/bash
bash: docker-compose: command not found
odoo@veivaa-odoo1:/$ docker run -it veivaa-odoo1 pip install py-asterisk
bash: docker: command not found
odoo@veivaa-odoo1:/$ sudo docker-compose -f build.yml run cli
bash: sudo: command not found

请帮忙

答案1

完成后:

sudo docker exec -it veivaa-odoo1 /bin/bash

... 您的输入将进入您在容器中启动的 bash 解释器,因此会与容器环境一起运行。docker-compose是用于管理容器的命令,当然通常无法在容器内使用。同样,默认情况下,容器内的 id 是 root(在容器环境中),因此您不需要sudo。可以使用普通的pip install py-asterisk。但是,这不是在容器中安装软件的正确方法,正确的方法是创建一个派生基础映像的映像,向其中添加应用程序,然后运行该映像:

您创建一个Dockerfile

FROM somebaseimage
RUN pip install py-asterisk

然后从中创建图像:

docker build -t mynewimage .

然后你就可以运行你的图像:

docker run mynewimage

您通常希望使用ENTRYPOINTCMDDockerfile定义容器启动时运行的内容。

相关内容