Docker 컨테이너에서 사용자 화면을 생성하는 방법은 무엇입니까?

Docker 컨테이너에서 사용자 화면을 생성하는 방법은 무엇입니까?

vdir 실행: UNIX초기화 방식서비스 감독으로from은 runit특정 서비스가 종료된 경우 다시 실행하기 위한 훌륭한 도구입니다. 디렉토리의 변경 inotify사항 을 모니터링합니다. 디렉터리의 스크립트를 영원히 실행합니다.

나는 다음과 같은 구조를 가지고 있습니다 :

$ tree app
app
├── service
│   ├── run
│   └── supervise
├── replay
│   ├── run
│   └── supervise
└── run
    ├── run
    └── supervise

내가하고 싶은 것은 다음과 같습니다.이것및 (링크에서 솔루션을 시도했지만 실패했습니다) app/run/run:app/replay/run

su - user -c screen -S run<<EOF
[...]
# code
EOF

runsvdir// 에서 여러 인스턴스가 실행되는 것을 방지하려면 코드가 차단/대기해야 합니다 .

코드는 컨테이너에서 루트로 실행됩니다 docker. 여기는 아니야 systemd.

나는 피하고 싶었던 여러 프로세스의 PID가 만료된 여러 솔루션을 테스트했습니다. 나는 분명할 수 있는 뭔가를 놓치고 있습니다.

어떤 아이디어가 있나요?

  • 데비안 11은 다음 주까지 ;)
  • 루니 2.1.2-41

댓글/편집: 에서 실행/재생을 강제로 생성하지 않습니다 init. 쉘 스크립트(bash)일 수 있습니다. 한 번만 실행 해야 합니다 screen.

답변1

그런 다음 수정 사항은 다음과 같습니다 docker build ..

docker exec -d -u mevatlave cont screen -d -m -S run ./run
docker exec -d -u mevatlave cont screen -d -m -S replay ./replay.sh
docker exec -it -u mevatlave cont screen -x run

관련 정보