如何使用脚本修改容器中的文件

我想运行一个容器,并修改其中的某些文件。 我正在尝试使用脚本来做到这一点。 如果我使用: docker run -i -t <container> <image> ,它会给我

 STDERR: cannot enable tty mode on non tty input 

如果我使用: docker run -d <container> <image> bash ,容器不会启动。

有没有办法做到这一点?

谢谢

使用以下命令在后台运行Docker镜像:

 docker run -d <image>:<version> 

检查正在运行的docker集装箱使用

 docker ps 

如果只有一个容器正在运行,则可以使用下面的命令附加到正在运行的Docker容器,并使用bash浏览容器内的文件/目录:

 docker exec -it $(docker ps -q) bash 

然后,您可以修改/编辑您想要的任何文件,然后重新启动容器。

停止正在运行的容器:

 docker stop $(docker ps -q) 

运行一个停止的容器:

 docker start -ia $(docker ps -lq) 

因此,首先, -i -t是一个与容器交互的交互式tty模式。 如果你正在脚本中调用这个,那很可能这不会像你期望的那样工作。

这不是真正意义上使用容器的方式。 如果这是一个永久的变化,你应该重build图像,并使用它的容器。

但是,如果要对容器中反映的文件进行更改,则可以考虑使用卷将主机中的目录装入容器中。 这看起来像这样:

docker run -v /some/host/dir:/some/container/dir -d container

此时,您在/some/host/dir更改的内容将位于/some/container/dir 。 然后,您可以使用主机上的脚本进行更改,而无需调用Docker Cli。