如何在Docker容器中运行/bin/bash?含后台启动容器的操作方案
Docker中运行/bin/bash及进入后台容器控制台的方法
嘿,这两个Docker的问题我太熟了,给你一步步掰扯清楚!
一、启动新容器并直接进入/bin/bash
如果你想启动一个新容器的同时直接跳进它的bash控制台,核心就是用-it这俩参数——-i保证输入流不中断,-t给你分配一个伪终端,这样就能获得交互式的bash环境了。命令长这样:
sudo docker run -it base-tst:0.1 /bin/bash
不管你的镜像默认启动命令是什么,加上/bin/bash就能直接进入bash里操作。
二、进入后台启动(-d)的容器控制台
你用-d启动的容器是在后台默默跑的,直接用docker run肯定进不去,这时候得用docker exec这个神器,这也是现在最推荐的方法,不会影响容器的正常运行。
第一步:先确认容器在运行
先别急着进,先看看你的test-cnt3容器是不是还在跑:
sudo docker ps
如果列表里能看到它,状态是Up,那就没问题;要是看不到,说明容器已经停了,得先启动它:
sudo docker start test-cnt3
第二步:用docker exec进入bash
确认容器运行后,直接执行这条命令:
sudo docker exec -it test-cnt3 /bin/bash
同样-it不能少,不然进去了也没法交互。执行完你就能看到容器的bash提示符了,想干嘛就干嘛~
踩坑指南:遇到进不去的情况怎么办?
- 要是报错说
/bin/bash找不到:很多轻量级镜像(比如alpine)默认不带bash,只有sh,这时候把命令里的/bin/bash换成/bin/sh就行:sudo docker exec -it test-cnt3 /bin/sh - 容器启动后立刻退出:如果你的
base-tst:0.1镜像没有一个长期运行的进程,用-d启动后会马上停掉。这时候可以改一下启动命令,让容器保持运行,比如用tail -f /dev/null挂着:
这样容器就会一直后台待着,之后再用sudo docker run -P --name test-cnt3 -d base-tst:0.1 tail -f /dev/nulldocker exec进去就没问题了。
内容的提问来源于stack exchange,提问作者Nikita Kalitin
相关产品推荐
相关产品推荐

