我开始和Docker合作了。我正在使用WordPress的基本图像和docker合成。
我正在尝试ssh到其中一个容器中,以检查在初始构建期间创建的文件/目录。我试着运行docker compose运行containername ls-la,但没有任何效果。即使是这样,我也希望有一个控制台,在那里我可以遍历目录结构,而不是运行一个命令。使用Docker的正确方法是什么?
我开始和Docker合作了。我正在使用WordPress的基本图像和docker合成。
我正在尝试ssh到其中一个容器中,以检查在初始构建期间创建的文件/目录。我试着运行docker compose运行containername ls-la,但没有任何效果。即使是这样,我也希望有一个控制台,在那里我可以遍历目录结构,而不是运行一个命令。使用Docker的正确方法是什么?
当前回答
如果容器已经退出(可能是由于某些错误),您可以
$ docker run --rm -it --entrypoint /bin/ash image_name
or
$ docker run --rm -it --entrypoint /bin/sh image_name
or
$ docker run --rm -it --entrypoint /bin/bash image_name
创建一个新容器并将shell放入其中。由于指定了--rm,因此当退出shell时,容器将被删除。
其他回答
要猛击正在运行的容器,请键入以下命令:
docker exec -t -i container_name /bin/bash
or
docker exec -ti container_name /bin/bash
or
docker exec -ti container_name sh
使用以下命令启动Docker容器中的会话:
sudo docker exec -i -t (container ID) bash
要执行到名为test的正在运行的容器中,下面是以下命令
如果容器具有bash shell
docker exec -it test /bin/bash
如果容器有伯恩外壳,大多数情况下都有
docker run -it test /bin/sh
要连接到Windows容器中的cmd,请使用
docker exec -it d8c25fde2769 cmd
其中d8c25fde2769是容器id。
去侧溶液
安装goinside命令行工具,包括:
sudo npm install -g goinside
并进入码头集装箱,码头尺寸适当,带有:
goinside docker_container_name
旧答案
我们将此代码段放在~/.profile中:
goinside(){
docker exec -it $1 bash -c "stty cols $COLUMNS rows $LINES && bash";
}
export -f goinside
这不仅使每个人都能够进入一个正在运行的容器:
goinside containername
它还解决了固定Docker集装箱码头尺寸的长期问题。如果你面对它,这是非常令人讨厌的。
此外,如果您按照链接进行操作,您的docker容器名称也会有命令完成。