如何打开多个终端进入Docker容器?
发布网友
发布时间:2022-02-26 21:29
我来回答
共2个回答
热心网友
时间:2022-02-26 22:58
打开多个终端进入Docker容器有很多种方法,包括使用 docker attach 命令或 nsenter 工具等。
使用 attach 命令有时候并不方便。当多个窗口同时 attach 到同一个容器的时候,所有窗口都会同步显示。
nsenter 可以访问另一个进程的名字空间。
为了连接到容器,你还需要找到容器的第一个进程的 PID,可以通过下面的命令获取。
PID=$(docker inspect –format “{{ .State.Pid }}” <container>) //将<container>换成你的容器id
通过这个 PID,就可以连接到这个容器:
$ nsenter –target $PID –mount –uts –ipc –net –pid
更简单的,建议大家下载 .bashrc_docker,并将内容放到 .bashrc 中。
$ wget -P ~ https://github.com/yeasy/docker_practice/raw/master/_local/.bashrc_docker;
$ echo “[ -f ~/.bashrc_docker ] && . ~/.bashrc_docker” >> ~/.bashrc; source ~/.bashrc
这个文件中定义了很多方便使用 Docker 的命令,例如 docker-pid 可以获取某个容器的 PID;而 docker-enter 可以进入容器或直接在容器内执行命令。
$ echo $(docker-pid <container>)
$ docker-enter <container>
附.bashrc_docker文件内容:
# Some useful commands to use docker.
# Author: yeasy@github
# Created:2014-09-25
alias docker-pid=”sudo docker inspect –format ‘{{.State.Pid}}’”
alias docker-ip=”sudo docker inspect –format ‘{{ .NetworkSettings.IPAddress }}’”
#the implementation refs from https://github.com/jpetazzo/nsenter/blob/master/docker-enter
function docker-enter() {
if [ -e $(dirname "$0")/nsenter ]; then
# with boot2docker, nsenter is not in the PATH but it is in the same folder
NSENTER=$(dirname “$0″)/nsenter
else
NSENTER=nsenter
fi
[ -z "$NSENTER" ] && echo “WARN Cannot find nsenter” && return
if [ -z "$1" ]; then
echo “Usage: `basename “$0″` CONTAINER [COMMAND [ARG]…]”
echo “”
echo “Enters the Docker CONTAINER and executes the specified COMMAND.”
echo “If COMMAND is not specified, runs an interactive shell in CONTAINER.”
else
PID=$(sudo docker inspect –format “{{.State.Pid}}” “$1″)
if [ -z "$PID" ]; then
echo “WARN Cannot find the given container”
return
fi
shift
OPTS=”–target $PID –mount –uts –ipc –net –pid”
if [ -z "$1" ]; then
# No command given.
# Use su to clear all host environment variables except for TERM,
# initialize the environment variables HOME, SHELL, USER, LOGNAME, PATH,
# and start a login shell.
#sudo $NSENTER “$OPTS” su – root
sudo $NSENTER –target $PID –mount –uts –ipc –net –pid su – root
else
# Use env to clear all host environment variables.
sudo $NSENTER –target $PID –mount –uts –ipc –net –pid env -i $@
fi
fi
}
热心网友
时间:2022-02-27 00:16
用 docker ps 找到你要进入的container的 id,然后用 docker exec 执行一个 bash
如:docker exec -it 40c330755e61 /bin/bash
这样你就进到这个container 里面了,这个bash退出也不会影响之前 docker run 启动的 bash
如果需要其他参数可以参考docker 手册 man docker-exec ,man docker-run 等等
如何打开多个终端进入Docker容器?
打开多个终端进入Docker容器有很多种方法,包括使用 docker attach 命令或 nsenter 工具等。使用 attach 命令有时候并不方便。当多个窗口同时 attach 到同一个容器的时候,所有窗口都会同步显示。nsenter 可以访问另一个进程的名字空间。为了连接到容器,你还需要找到容器的第一个进程的 PID,可以通过下面的...
Linux SCADA
ForceSCADA是力控科技信创产品的重要组成部分,具备完全自主知识产权,支持部署在Linux桌面版、服务器版、嵌入式等系统架构下。使用ForceSCADA可以搭建创新性高、扩展性佳、融合度强的SCADA平台,进而构建高效、智能化的监控中心,先进、灵活的...
如何进入docker容器目录
要访问Docker容器内部的目录,首先,打开终端,运行命令 执行`docker ps`,这将列出所有运行中的容器及其对应的ID。例如,你可能会看到一个容器ID为`b5f5b9c82259`。一旦你找到所需的容器ID,接下来的步骤是导航到该容器的目录。在命令行中,输入以下命令,将`b5f5b9c82259`替换为你的实际容器ID:she...
Linux下配置Docker容器间网络连接的教程
打开第二个终端。启动名称为client1的容器:代码如下:sudo docker run -itd --name=client1 client_img /bin/bash进容器里看一下:代码如下:sudo docker attach client1如果你看不见shell命令提示符,可以使用方向键的向上箭头。让我们来测试一下到server1的连通性:代码如下:curl 172.17.0.3如果一...
如何进入,退出docker的container
-t:进入终端 -i:获得一个交互式的连接,通过获取container的输入 /bin/bash:在container中启动一个bash shell 这样就进入container的内部了:root@af8bae53bdd3:/ 如果有运行中的container,可以在container所在的外部操作系统中运行:docker ps 查看到这个container。如果想看到所有的container,包括运行...
如何进入,退出docker的container
-t:进入终端 -i:获得一个交互式的连接,通过获取container的输入 /bin/bash:在container中启动一个bash shell 这样就进入container的内部了:root@af8bae53bdd3:/ 如果有运行中的container,可以在container所在的外部操作系统中运行:docker ps 查看到这个container。如果想看到所有的container,包括运行...
如何进入,退出docker的container
docker run:启动container ubuntu:你想要启动的image -t:进入终端 -i:获得一个交互式的连接,通过获取container的输入 /bin/bash:在container中启动一个bash shell 这样就进入container的内部了:root@af8bae53bdd3:/ 如果有运行中的container,可以在container所在的外部操作系统中运行:docker ps 查...
Docker容器通用教程
在Windows系统中,如果想要通过WSL和Ubuntu进行Docker容器操作,首先需要确保已经开启梯子。启动步骤如下:1. 在开始菜单中,右键点击并选择“终端(管理员)”。2. 在管理员权限下,输入命令 "wsl --install",系统将自动安装WSL和Ubuntu。如果出现提示 "Error code: Wsl/WININET_E_NAME_NOT_RESOLVED"...
Docker 容器使用
例如我们要查看docker stats 指令的具体使用方法:容器使用获取镜像 如果我们本地没有 ubuntu 镜像,我们可以使用 docker pull 命令来载入 ubuntu 镜像:启动容器 以下命令使用 ubuntu 镜像启动一个容器,参数为以命令行模式进入该容器:参数说明:要退出终端,直接输入exit:启动已停止运行的容器 查看所有的...
docker中的exec和attach命令的区别?
如果Docker容器在启动时使用/bin/bash,attach命令就能直接访问容器内部的bash环境。然而,如果容器使用了不同的启动命令,attach将无法直接进入容器内部。此时,需要通过exec命令在容器内部创建bash实例。attach的主要功能是附着到已运行的容器,而不会在容器中创建新的进程执行额外的命令。它仅提供了一个直接...
Docker:容器管理(启动参数,查看容器和日志,进入和修改容器)
开启一个终端启动容器内部,打印指定的环境变量a 此时在run指令中增加-e设置环境变量,可见-e替换了Dockerfile中指定的环境变量 因为一个镜像可以启动多个容器,所以可以通过设置不同-e达到设置不同配置参数的目的,比如下一个例子在Dockerfile中设置和将环境变量写入yaml文件再供Python调用,执行的内容为打印...