Musím spustiť dva odlišné procesy na ukotviteľnom kontajneri, ktorý vyžaduje dva terminals.What je najlepší spôsob, ako to dosiahnuť?
odpovede:
61 pre odpoveď č. 1Môžete spustiť docker exec -it <container> bash
z viacerých terminálov na spustenie viacerých relácií pripojených k rovnakému kontajneru.
11 pre odpoveď č. 2
Rozšírenie @eltonStoneman"Je to skvelá odpoveď (Pre všetkých tých nových ľudí, ktorí sú ako ja):
Otvorte terminál ukotvenia
Získajte obrázok na pozadí ako kontajner v pozadí:
docker run -d -it <image_id>
- Tip:
docker ps
sa zobrazí, že ste práve vytvorili z uvedeného obrázku.
- Tip:
Podľa odporúčania používateľa @ @tonton:
docker exec -it <container_id> bash
- Teraz terminál terminálu zobrazuje interaktívny terminál pre kontajner.
Otvorte ďalší terminál a vykonajte krok 3 na vytvorenie ďalšieho interaktívneho terminálu do kontajnera. (Plákanie a opakovanie)
1 pre odpoveď č. 3
Ak ste schopní spustiť Kitematic - môžete kliknúť na exec pre otvorenie terminálu vo vybranom kontajneri.
0 pre odpoveď č. 4
Použitím Docker skladať: Povedzme, že máte Compose yml, ktorý umožňuje X-Windows.
Na spustenie terminálov pre grafické IDE (napr. QtCreator), nautilus a terminálové okno môžete postupovať podľa nižšie uvedených krokov.
predpoklady:
- Hostiteľom je Windows 10. 1803
- Obrázok je Ubuntu Xenial
- Docker motor je 18.03.1-ce
- Docker Compose je 1.21.1
- Windows Xming X Server je 7.7.0.25 - pomocou rozhrania IPv4 192.168.1.101
Dockerfile: Dockerfile-dev-ubuntu_xenial - vytvorí obrázok 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
spustiť: - počiatočný terminál Powershell
- Vytvoriť obrázok:
docker-compose -f compose-dev-linux.yml build dev_ubuntu_xenial
- Launch Docker odpojený:
docker-compose -f compose-dev-linux.yml up -d dev_ubuntu_xenial
- Zoznam kontajnerov:
docker ps
- Spustiť kontajner:
docker exec -it <CONTAINER ID> bash
- Spustiť nástroj qtCreator:
user@linuxkit-<generatedid>:~$ qtcreator
spustiť: - nový terminál Powershell
- Spustiť kontajner:
docker exec -it <CONTAINER ID> bash
- Spustiť nautilus:
nautilus
spustiť: - nový terminál Powershell
- Spustiť kontajner:
docker exec -it <CONTAINER ID> bash
- Spustiť terminál:
user@linuxkit-<generatedid>:~$
-1 pre odpoveď č. 5
docker run -it container_name bash
začína nový kontajner s bash promt.
docker exec -it container_name bash
pripája už beží kontajner bash prompt.