如何在码头打开多个终端?

我需要在一个需要两个终端的码头集装箱上启动两个不同的进程。实现这一目标的最佳方法是什么?

73112 次浏览

可以从多个终端运行 docker exec -it <container> bash来启动连接到同一容器的多个会话。

如果你能够运行 风筝-你可以点击 执行官按钮打开终端在选定的容器。

为了扩展 @eltonStoneman的伟大答案(对于所有像我一样的新码头工人) :

  1. 打开码头终端

  2. 让图像作为一个容器在背景中运行: < strong > docker run -d -it <image_id>

  • 提示: docker ps < em > 将显示刚刚从该图像激活的 Container _ id。
  1. Per@eltonStoneman 的建议: docker exec -it <container_id> bash
  • 现在,您的码头终端正在向容器显示一个交互式终端。
  1. 打开另一个终端并执行步骤3,为容器创建另一个交互式终端

使用 Docker Compose: 假设您有一个 Composyml,它支持 X-Windows。

You can follow the steps below to launch terminals for a graphic IDE (e.g. qtCreator), nautilus and a terminal window.

假设:

  • 主机是 Windows 10.1803
  • 图片是 Ubuntu Xenial
  • Docker 引擎是18.03.1-ce
  • Docker Compose 是1.21.1
  • Windows Xming X Server 是7.7.0.25-使用 IPv4接口192.168.1.101

Dockerfile: Dockerfile-dev-ubuntu _ senial-创建 Docker 映像

FROM ubuntu:xenial
ARG DEBIAN_FRONTEND=noninteractive
LABEL maintainer "Your NAME <your.address@yourmailhost.com>"
RUN apt-get update ; apt-get install -y apt-utils desktop-file-utils dialog nautilus build-essential debhelper fakeroot ccache lsb-release
RUN apt-get install -y autotools-dev autoconf pkg-config libtool curl gedit git wget unzip lintian
RUN apt-get install -y qtcreator valgrind
RUN apt-get install -y sudo \
&& groupadd -r user -g 1000 \
&& useradd -u 1000 -r -g user -m -d /user -s /sbin/nologin -c "Build pkg user" user \
&& chmod 755 /user \
&& echo "user ALL=(root) NOPASSWD:ALL" > /etc/sudoers.d/user \
&& chmod 0440 /etc/sudoers.d/user
WORKDIR /user
USER user
VOLUME ["/buildpkg", "/user/projects", "/user/resources"]
CMD /bin/bash

Yml: compose-dev-linux. yml

version: '3'
services:
# Commands:
#   Build: docker-compose -f compose-dev-linux.yml build dev_ubuntu_xenial
#   Up   : docker-compose -f compose-dev-linux.yml up -d dev_ubuntu_xenial
#   Run  : docker-compose -f compose-dev-linux.yml run dev_ubuntu_xenial
#   Down : docker-compose -f compose-dev-linux.yml down
# Host folders:
#   %USERPROFILE%/Projects
#   %USERPROFILE%/Projects/Docker-builds
#   %USERPROFILE%/Projects/Docker-resources
# Docker configuration file locations:
#   %USERPROFILE%/Dockerfiles/Dockerfile-dev-ubuntu_xenial
#   %USERPROFILE%/compose-dev-linux.yml
dev_ubuntu_xenial:
security_opt:
- seccomp:unconfined
cap_add:
- SYS_ADMIN
environment:
- DISPLAY=192.168.1.101:0
network_mode: host
image: "application-dev-platform/application:ubuntu_xenial"
container_name: application-dev-ubuntu_xenial
command: bash -c "/bin/bash"
tty: true
build:
context: ./Dockerfiles
dockerfile: Dockerfile-dev-ubuntu_xenial
volumes:
- ./Projects:/user/projects
- ./Projects/Docker-builds:/buildpkg
- ./Projects/Docker-resources:/user/resources

运行: -初始 Powershell 终端

  1. 构建图像: docker-compose -f compose-dev-linux.yml build dev_ubuntu_xenial
  2. 发射码头已分离: docker-compose -f compose-dev-linux.yml up -d dev_ubuntu_xenial
  3. 列表容器: docker ps
  4. 发射容器: docker exec -it <CONTAINER ID> bash
  5. 启动 qtCreator: user@linuxkit-<generatedid>:~$ qtcreator

运行: -新的 Powershell 终端

  1. 发射容器: docker exec -it <CONTAINER ID> bash
  2. Launch nautilus: nautilus

Run: - new Powershell terminal

  1. 发射容器: docker exec -it <CONTAINER ID> bash
  2. Launch terminal: user@linuxkit-<generatedid>:~$

docker run -it container_name bash以 bash 提示符启动 一个新的集装箱

docker exec -it container_name bash加入 已经在运行的集装箱 bash 提示符。

首先得到容器的名称 docker container ls 然后运行 docker exec 命令进入该容器 docker exec <container_id> bash

首先,我输入以下命令:

docker exec -it <containerName> bash

但 Docker 说这个集装箱并不存在..。 在那之后,我用集装箱 ID 替换了集装箱名称,这个技巧对我很有效;

如果您想知道每个容器 id 运行以下命令:

sudo docker ps

在此之后,运行此命令以打开新的终端到您的容器:

docker exec -it <containerID> bash

干杯!