开始以交互方式运行Docker容器

9 浏览
0 Comments

开始以交互方式运行Docker容器

我有一个非常简单的dockerfile,只有一行代码,即\"FROM ubuntu\"。我使用命令docker build -t ubuntu_ .从这个dockerfile创建了一个镜像。\n我知道我可以使用以下命令从这个镜像创建一个新的docker容器,并以交互方式运行它:\ndocker run -it my_new_container\n我以后可以使用以下命令启动这个新的容器:\nstart my_new_container\n据我理解,我应该能够通过以下命令以交互方式使用这个容器:\nstart -i my_new_container\n但是,它不起作用。它只是运行并退出。我无法像使用run命令时那样进入容器的命令提示符。我做错了什么?

0
0 Comments

问题出现的原因是容器没有持续运行,而是在启动后立即退出。这可能是因为容器的主要进程在后台运行并且没有持久化。因此,为了能够交互式地启动容器,需要确保主要进程在前台运行并且不退出。

解决方法是在启动容器时使用适当的参数,以确保主要进程持续运行。可以通过以下几种方式实现:

1. 使用docker run命令时,使用"-it"参数以交互式方式运行容器,并指定主要进程来保持容器持续运行,例如:

docker run -it --name mybox1 busybox /bin/sh

这将以交互方式运行一个名为mybox1的容器,并在容器中启动/bin/sh作为主要进程。

2. 如果容器已经在后台运行,可以使用docker exec命令以交互方式进入容器,例如:

docker exec -it my_new_container /bin/bash

这将以交互方式进入名为my_new_container的容器,并启动/bin/bash作为交互式shell。

3. 如果需要使用特定的用户身份(如root),可以使用"-u"参数指定UID,例如:

docker exec -it -u 0 my_new_container /bin/bash

这将以root用户身份以交互方式进入容器。

需要注意的是,为了保持容器持续运行,主要进程必须在前台运行并且不退出。如果需要关闭计算机以及容器,并在下次启动时能够交互式地启动容器,可以将容器设置为自动启动,并在启动后执行主要进程。

,要使容器能够交互式地启动,需要确保主要进程在前台运行并且不退出。可以通过在docker run命令中使用"-it"参数、使用docker exec命令以交互方式进入容器,或通过设置容器的自动启动和主要进程持久化来实现。详细的用法和配置可以参考Docker官方文档。

0
0 Comments

问题出现的原因:在Docker中启动一个非运行中的容器时,需要指定一个交互式的shell,但是直接使用docker container run命令会创建一个新的容器。

解决方法1:找到容器所基于的镜像,然后使用docker container run -it [yourImage] bash命令启动一个交互式shell的容器。如果容器基于alpine镜像,则将bash替换为sh。

解决方法2(推荐):在docker-compose.yml文件的服务定义中添加以下命令:

services:

my-app-service:

command: ["sleep", "infinity"]

# other relevant parts of your service def...

这样做的目的是让容器执行一个无关紧要的任务,例如让容器休眠一段时间(无限长的时间)。这样容器将保持运行状态。

以上是我运行容器的方法。祝愿所有需要这个信息的人学习进步。

0
0 Comments

问题描述:如何在终端中以交互方式启动Docker容器并查看日志?

问题原因:用户希望以与使用docker run命令运行镜像时相同的方式,在终端中查看容器的日志。然而,使用docker start命令默认不会在终端中显示容器的输出。

解决方法:使用docker start -a my_docker_container命令可以以交互方式启动容器并查看日志。其中,my_docker_container是指定的容器名称。该命令中的-a参数表示以交互方式启动容器,并将容器的输出显示在终端上。

实例代码:

docker start -a my_docker_container

通过以上方法,用户可以在终端中以交互方式启动Docker容器,并实时查看容器的输出日志。这对于调试和监控容器运行过程中的问题非常有帮助。

0