我开始和Docker合作了。我正在使用WordPress的基本图像和docker合成。
我正在尝试ssh到其中一个容器中,以检查在初始构建期间创建的文件/目录。我试着运行docker compose运行containername ls-la,但没有任何效果。即使是这样,我也希望有一个控制台,在那里我可以遍历目录结构,而不是运行一个命令。使用Docker的正确方法是什么?
我开始和Docker合作了。我正在使用WordPress的基本图像和docker合成。
我正在尝试ssh到其中一个容器中,以检查在初始构建期间创建的文件/目录。我试着运行docker compose运行containername ls-la,但没有任何效果。即使是这样,我也希望有一个控制台,在那里我可以遍历目录结构,而不是运行一个命令。使用Docker的正确方法是什么?
当前回答
使用以下命令启动Docker容器中的会话:
sudo docker exec -i -t (container ID) bash
其他回答
使用此命令:
docker exec -it containerid /bin/bash
如果您在Windows上使用Docker,并希望获得容器的shell访问权限,请使用以下命令:
winpty docker exec -it <container_id> sh
很可能,您已经安装了GitBash。如果没有,请确保安装它。
Use:
docker attach <container name/id here>
另一种方法(尽管有危险)是使用attach,但如果按Ctrl+C退出会话,也会停止容器。如果您只是想看看发生了什么,请使用docker-logs-f。
:~$ docker attach --help
Usage: docker attach [OPTIONS] CONTAINER
Attach to a running container
Options:
--detach-keys string Override the key sequence for detaching a container
--help Print usage
--no-stdin Do not attach STDIN
--sig-proxy Proxy all received signals to the process (default true)
如果容器已经退出(可能是由于某些错误),您可以
$ 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 run-it<image>/bin/sh以获得交互式终端。图像列表可以通过docker图像获得。与docker exec相反,这种解决方案也适用于图像未启动(或运行后立即退出)的情况。