我需要在一个需要两个终端的码头集装箱上启动两个不同的进程。实现这一目标的最佳方法是什么?
可以从多个终端运行 docker exec -it <container> bash来启动连接到同一容器的多个会话。
docker exec -it <container> bash
如果你能够运行 风筝-你可以点击 执行官按钮打开终端在选定的容器。
为了扩展 @eltonStoneman的伟大答案(对于所有像我一样的新码头工人) :
打开码头终端
让图像作为一个容器在背景中运行: < strong > docker run -d -it <image_id>
docker run -d -it <image_id>
docker ps
docker exec -it <container_id> bash
使用 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.
假设:
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 终端
docker-compose -f compose-dev-linux.yml build dev_ubuntu_xenial
docker-compose -f compose-dev-linux.yml up -d dev_ubuntu_xenial
docker exec -it <CONTAINER ID> bash
user@linuxkit-<generatedid>:~$ qtcreator
运行: -新的 Powershell 终端
nautilus
Run: - new Powershell terminal
user@linuxkit-<generatedid>:~$
docker run -it container_name bash以 bash 提示符启动 一个新的集装箱。
docker run -it container_name bash
docker exec -it container_name bash加入 已经在运行的集装箱 bash 提示符。
docker exec -it container_name bash
首先得到容器的名称 docker container ls 然后运行 docker exec 命令进入该容器 docker exec <container_id> bash
docker container ls
docker exec <container_id> bash
首先,我输入以下命令:
docker exec -it <containerName> bash
但 Docker 说这个集装箱并不存在..。 在那之后,我用集装箱 ID 替换了集装箱名称,这个技巧对我很有效;
如果您想知道每个容器 id 运行以下命令:
sudo docker ps
在此之后,运行此命令以打开新的终端到您的容器:
docker exec -it <containerID> bash
干杯!