/ / Як відкрити кілька терміналів у докер? - докер

Як відкрити кілька терміналів у докері? - докер

Мені потрібно запустити два різних процеси на докер-контейнер, який потребує двох терміналів. Який найкращий спосіб це зробити?

Відповіді:

61 для відповіді № 1

Ви можете бігти docker exec -it <container> bash з декількох терміналів для запуску кількох сеансів, підключених до одного контейнера.


11 для відповіді № 2

Розгорнути @eltonStoneman"Відмінна відповідь" (Для всіх тих нових людей докерів, як я):

  1. Відкрийте докер-термінал

  2. Отримайте зображення як контейнер у фоновому режимі: docker run -d -it <image_id>

    • Порада: docker ps покаже container_id, який ви просто згоріли з вказаного зображення.
  3. Порада за @eltonStoneman: docker exec -it <container_id> bash

    • Тепер ваш докерний термінал показує інтерактивний термінал до контейнера.
  4. Відкрийте інший докерний термінал і виконайте крок 3, щоб створити інший інтерактивний термінал до контейнера. (Промивання та повторення)


1 для відповіді № 3

Якщо ти можеш бігти Kitematic - Ви можете натиснути кнопку виконувати button, щоб відкрити термінал у вибраному контейнері.


0 для відповіді № 4

Використовуючи Docker Compose: Зверніть увагу, що у вас є Comml yml, який дозволяє X-Windows.

Ви можете виконати наведені нижче кроки, щоб запустити термінали для графічних IDE (наприклад, qtCreator), nautilus і вікна термінала.

Припущення:

  • Хост - це Windows 10. 1803
  • Зображення є Ubuntu Xenial
  • Докер двигун 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_xenial - створює зображення 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

Compose.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 окремо: 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. Запустіть nautilus: nautilus

Виконати: - новий термінал Powershell

  1. Стартовий контейнер: docker exec -it <CONTAINER ID> bash
  2. Стартовий термінал: user@linuxkit-<generatedid>:~$

-1 для відповіді № 5

docker run -it container_name bash починається новий контейнер з баш-промтом.

docker exec -it container_name bash приєднується вже працює контейнер " підказка bash