docker run -idt ubuntu:16.04
之后,我们可以使用docker ps
查看容器是否启动。
但如果接下来使用Docker Compose,并运行docker-compose up
,我们会发现docker ps
找不到容器,而从docker ps -a
中可以看到容器已经退出了。
version: '2'
services:
me:
image: 'ubuntu:16.04'
问题:我们如何使用Docker Compose实现-idt
?
docker run -idt ubuntu:16.04
之后,我们可以使用docker ps
查看容器是否启动。
但如果接下来使用Docker Compose,并运行docker-compose up
,我们会发现docker ps
找不到容器,而从docker ps -a
中可以看到容器已经退出了。
version: '2'
services:
me:
image: 'ubuntu:16.04'
问题:我们如何使用Docker Compose实现-idt
?
Ubuntu镜像的默认CMD是Bash:
# overwrite this with 'CMD []' in a dependent Dockerfile
CMD ["/bin/bash"]
从"使用Docker Compose进行交互式Shell"中,看看是否添加以下行会有帮助:
stdin_open: true
tty: true
在docker-compose文件中,我们可以添加command
标签作为。command: /bin/bash
docker-compose run {image} /bin/bash
会自动进入交互模式。
对于docker-compose up,您不应该以交互方式运行它,而是作为服务运行。
您也可以使用docker-compose up命令,然后使用docker ps查找它们的映像,并在其中执行。如果您的映像正在加载守护程序(服务器),则此方法可行;如果您的映像执行脚本然后退出,则它也将退出映像,使其无法进入。请参阅此问题以了解如何执行此操作。
docker run -idt ubuntu:16.04
后,容器是否仍然处于运行状态? - user9595751
docker exec -ti <container name> /bin/bash
,在 docker compose 中还有其他-d
参数吗?你知道,现在docker compose up
没有退出。 - user9595751