Bonjour, c'est haniokasai. Lorsque docker s'attache avec Docker, seul pid 1 peut être utilisé de manière interactive. [^ 1] Ce n'est généralement pas un problème, mais j'ai des problèmes. Dans mon conteneur, Dockerfile appelle un script shell, qui exécute PHP CGI. Dans ce cas, il n'y a aucun moyen de le saisir car le pid de php n'est pas 1. (Vous pouvez voir la sortie avec attach.) Je l'ai donc entré directement dans stdin.
Mise en garde Vous pouvez créer une attache de docker, mais ne la rendez pas interactive. Si c'est le cas, stdin retournera "Fichier texte occupé" et ne tiendra pas. Lors de la fixation, procédez comme suit. (Dans ce cas, l'attachement ne reçoit pas stdin. Vous pouvez choisir entre l'attachement ou l'entrée directe de fichier.)
attach
docker -H DOCKERHOST attacher le nom du conteneur--no-stdin
Tout d'abord, vérifiez le pid de la destination d'entrée standard en haut.
# docker top zzzzzzzz_container
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                25312               25287               0                   16:09               ?                   00:00:00            /bin/sh -c sh /minecraft/resources/run-Main.sh
root                25366               25312               0                   16:10               ?                   00:00:00            sh /minecraft/resources/run-Main.sh
root                25434               25366               0                   16:10               ?                   00:00:00            sh /minecraft/resources/run-BE-BDS.sh
root                25472               25434               13                  16:10               ?                   00:14:22            /minecraft/bin/bedrock_server
Exécuter une entrée standard avec une commande
# echo "help" > /proc/25472/fd/0
Si vous entrez help par défaut dans bedrock_server, l'aide sera renvoyée correctement.
# docker logs zzzzzzzz_container --tail=10
[2019-12-15 08:09:39 INFO] Player disconnected: hanicraft, xuid: 2535460621431466
§2--- Showing help page 1 of 18 (/help <page>) ---
/? [command: CommandName]
/? <page: int>
/alwaysday [lock: Boolean]
/changesetting allow-cheats <value: Boolean>
/changesetting difficulty <value: Difficulty>
/changesetting difficulty <value: int>
/clear [player: target] [itemName: Item] [data: int] [maxCount: int]
§2Tip: Use the <tab> key while typing a command to auto-complete the command or its arguments
Créer un conteneur source
docker create --nom Nom du conteneur--memory=3500mb --network="host" --storage-opt size=2G  --cap-add SYS_PTRACE  -v /proc:/newproc:ro
Le point d'intérêt est
--Ajouter l'autorisation SYS_PTRACE --Monter / proc sur l'hôte en tant que / newproc en lecture seule
Le reste est le même qu'avant.
Dans le container
# echo "help" > /newproc/25472/fd/0
Je l'ai fait avec @itsu_dev. Ce sera intéressant car Itsukun gratte le dessus.
https://serverfault.com/questions/178457/can-i-send-some-text-to-the-stdin-of-an-active-process-running-in-a-screen-sessi https://orebibou.com/2016/04/linux%E3%81%A7%E5%8B%95%E4%BD%9C%E4%B8%AD%E3%81%AE%E3%83%97%E3%83%AD%E3%82%BB%E3%82%B9%E3%81%AE%E5%87%BA%E5%8A%9B%E5%86%85%E5%AE%B9%E3%82%92%E3%81%BF%E3%82%8B/
Recommended Posts