一旦定义了image和Dockerfile,你就可能想要输入容器ID或者名称来运行bash或者其他命令,根据所使用的docker还是docker-compose,有几种不同的方法可以执行此操作。

使用docker run创建容器并在其中运行命令,或使用docker exec在现有容器中运行命令。有关这些的更多说明可以在我的博客帖子中阅读:

docker#

假设你知道容器的名称,或者如果你运行docker ps列出正在运行的进程并复制容器名称...

使用docker run或使用docker exec-i(interactive)标志来保持stdin打开并-t分配终端。

docker exec -i -t container_name /bin/bash

它也可以是这样

docker exec -it container_name /bin/bash

运行一个或多个命令:

docker exec -ti my_container sh -c "echo 1 && echo 2"

docker-compose#

等效命令docker-compose rundocker-compose exec自动分配终端,因此你只需运行以下命令即可获得交互式提示

docker-compose exec container_name sh

相同的结构适用于运行任何命令:

docker-compose exec <container name> <command>

要一起运行一串命令,它们必须连接到shell。例如:

docker-compose exec  <name in yml> sh -c '<command 1> && <command 2> && <command 3>' 

了解更多#

现在,你应该能够在docker容器中使用命令行指令。例如,你可以导航文件结构,查看文件,复制或替换容器中的文件 - 这对调试或自定义配置文件非常有用。要了解更多信息,请参阅Docker文档和我的其他帖子。