我需要在一个需要两个码头的码头集装箱上启动两个不同的流程。实现这一点的最佳方法是什么?
x3naxklr1#
您可以从多个终端运行docker exec -it <container> bash来启动连接到同一容器的多个会话。
docker exec -it <container> bash
pxiryf3j2#
进一步扩展@eltonStoneman的伟大回答(对于所有像我这样的新 Docker ):1.打开Docker终端1.让图像作为容器在后台运行:一月一日
docker ps
1.打开另一个终端并执行第3步,以创建另一个与容器交互的终端。(冲洗并重复)
cngwdvgl3#
docker run -it container_name bash使用bash提示启动新容器。docker exec -it container_name bash连接已运行容器的bash提示符。
docker run -it container_name bash
docker exec -it container_name bash
svujldwt4#
首先获取容器docker container ls的名称,然后运行docker exec命令以进入该容器docker exec <container_id> bash
docker container ls
docker exec <container_id> bash
xxb16uws5#
使用Docker合成:假设您有一个启用X-Windows的合成yml。您可以按照以下步骤为图形IDE(例如qtCreator)、nautilus和终端窗口启动终端。
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
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
1.构建映像:docker-compose -f compose-dev-linux.yml build dev_ubuntu_xenial1.发射对接器分离:docker-compose -f compose-dev-linux.yml up -d dev_ubuntu_xenial1.列出容器:docker ps1.发射容器:docker exec -it <CONTAINER ID> bash1.启动qtCreator:user@linuxkit-<generatedid>:~$ qtcreator
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
1.发射容器:docker exec -it <CONTAINER ID> bash1.发射鹦鹉螺号:nautilus
nautilus
1.发射容器:docker exec -it <CONTAINER ID> bash1.发射终端:user@linuxkit-<generatedid>:~$
user@linuxkit-<generatedid>:~$
e37o9pze6#
首先,我输入以下命令:
docker exec -it <containerName> bash
但是docker说这个容器不存在......之后我用containerID替换了containerName,这个技巧对我很有效;如果您想知道每个容器ID,请运行以下命令:
sudo docker ps
在那之后运行这个命令打开新的终端到你的容器:
docker exec -it <containerID> bash
干杯!
q8l4jmvw7#
如果您能够运行Kitematic-您可以单击exec按钮以打开选定容器中的终端。
h4cxqtbf8#
我在终端中启动了一个容器(-i交互式,-t TTY):
-i
-t
docker run -i -t <IMAGE_URL> /bin/bash
我的命令提示符现在以root@484ded1212aa:/开头,其中484ded1212aa是CONTAINER ID。在另一个选项卡(或窗口)中,我使用了该ID:
root@484ded1212aa:/
484ded1212aa
CONTAINER ID
docker exec -i -t 484ded1212aa /bin/bash
现在两个终端选项卡都以root@484ded1212aa:/开头,第二个选项卡包含我在第一个终端中克隆的Git repo(在上面两个命令之间)。这很有用,因为我想在一个选项卡中交互式地更改代码,然后在另一个选项卡中运行它。获取CONTAINER_ID或NAMES的另一种方法是使用以下命令:
CONTAINER_ID
NAMES
它给出了:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 484ded1212aa registry.gitlab.com/molcas/dockerfiles/gcc-4.8 "/bin/bash" 2 hours ago Up 2 hours hardcore_einstein
注意,尽管在两个选项卡中打开了一个容器,但仍然只有一个容器。
8条答案
按热度按时间x3naxklr1#
您可以从多个终端运行
docker exec -it <container> bash
来启动连接到同一容器的多个会话。pxiryf3j2#
进一步扩展@eltonStoneman的伟大回答(对于所有像我这样的新 Docker ):
1.打开Docker终端
1.让图像作为容器在后台运行:一月一日
docker ps
**将显示您刚刚从所述映像启动的container_id。1.打开另一个终端并执行第3步,以创建另一个与容器交互的终端。(冲洗并重复)
cngwdvgl3#
docker run -it container_name bash
使用bash提示启动新容器。docker exec -it container_name bash
连接已运行容器的bash提示符。svujldwt4#
首先获取容器
docker container ls
的名称,然后运行docker exec命令以进入该容器docker exec <container_id> bash
xxb16uws5#
使用Docker合成:假设您有一个启用X-Windows的合成yml。
您可以按照以下步骤为图形IDE(例如qtCreator)、nautilus和终端窗口启动终端。
1.构建映像:
docker-compose -f compose-dev-linux.yml build dev_ubuntu_xenial
1.发射对接器分离:
docker-compose -f compose-dev-linux.yml up -d dev_ubuntu_xenial
1.列出容器:
docker ps
1.发射容器:
docker exec -it <CONTAINER ID> bash
1.启动qtCreator:
user@linuxkit-<generatedid>:~$ qtcreator
1.发射容器:
docker exec -it <CONTAINER ID> bash
1.发射鹦鹉螺号:
nautilus
1.发射容器:
docker exec -it <CONTAINER ID> bash
1.发射终端:
user@linuxkit-<generatedid>:~$
e37o9pze6#
首先,我输入以下命令:
但是docker说这个容器不存在......之后我用containerID替换了containerName,这个技巧对我很有效;
如果您想知道每个容器ID,请运行以下命令:
在那之后运行这个命令打开新的终端到你的容器:
干杯!
q8l4jmvw7#
如果您能够运行Kitematic-您可以单击exec按钮以打开选定容器中的终端。
h4cxqtbf8#
我在终端中启动了一个容器(
-i
交互式,-t
TTY):我的命令提示符现在以
root@484ded1212aa:/
开头,其中484ded1212aa
是CONTAINER ID
。在另一个选项卡(或窗口)中,我使用了该ID:现在两个终端选项卡都以
root@484ded1212aa:/
开头,第二个选项卡包含我在第一个终端中克隆的Git repo(在上面两个命令之间)。这很有用,因为我想在一个选项卡中交互式地更改代码,然后在另一个选项卡中运行它。获取
CONTAINER_ID
或NAMES
的另一种方法是使用以下命令:它给出了:
注意,尽管在两个选项卡中打开了一个容器,但仍然只有一个容器。