我还没有找到在新创建的 Docker 容器中自动运行命令的方法。我经常创建一次性容器(作为测试环境,下面的示例),这些容器受益于一些额外的软件包,并且可能需要在安装软件之前进行更新。
我更喜欢直接在交互式会话中运行该命令。
docker run --interactive --tty --rm fedora bash
docker run --interactive --tty --rm ubuntu bash
目前,我不断将命令(包括apt update && apt upgrade -y
和dnf update -y
)粘贴到容器 shell 中。
sleep
至少对于“临时”容器来说,实现此目的的一种方法是在设置命令之后在容器中保持命令运行,然后在正在运行的容器中运行 shell:此方法有一点不便,即交互式 shell 将在更新/升级完成之前启动。
apt-get
除非将终端附加到容器(在不同的窗口中),否则您也将无法看到输出。您还可以在安装命令后运行交互式 shell:
作为 Stephen Kitt 答案的变体(您仍然需要这样做
bash -c bash
),您可以将初始化命令放入文件中,将该文件挂载到容器中的某个位置并设置BASH_ENV
到该位置。例如,假设您有:
然后:
或者您也可以将其
bash
作为最后一个命令放入脚本中并运行bash -c exit
。