ignacio82

x11docker

Nov 15th, 2019
407
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 71.70 KB | None | 0 0
  1. ==> /home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/share/stderr <==
  2.  
  3. ==> /home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/share/stdout <==
  4.  
  5. ==> /home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/share/container.log <==
  6.  
  7. ==> /home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/message.log <==
  8.  
  9. DEBUGNOTE[07:11:12,591]: check_host(): ps can watch root processes: yes
  10. x11docker[07:11:12,604]: Image name: rstudioxhost:verse
  11. Container command:
  12.  
  13. x11docker WARNING: User ignacio is member of group docker.
  14. That allows unprivileged processes on host to gain root privileges.
  15.  
  16. DEBUGNOTE[07:11:12,988]: storeinfo(): cache=/home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372
  17. DEBUGNOTE[07:11:13,000]: storeinfo(): stdout=/home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/share/stdout
  18. DEBUGNOTE[07:11:13,013]: storeinfo(): stderr=/home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/share/stderr
  19. DEBUGNOTE[07:11:13,048]: storeinfo(): x11dockerpid=114404
  20. DEBUGNOTE[07:11:13,114]:
  21. x11docker version: 6.4.0
  22. docker version: Docker version 19.03.4, build 9013bf583a
  23. Host system: "Debian GNU/Linux bullseye/sid"
  24. Command: '/usr/bin/x11docker' 'rstudioxhost:verse'
  25. Parsed options: -- 'rstudioxhost:verse'
  26. DEBUGNOTE[07:11:13,120]: --xpra: xpra not found.
  27. You can look for the package name of this command at:
  28. https://github.com/mviereck/x11docker/wiki/dependencies#table-of-all-packages
  29. DEBUGNOTE[07:11:13,124]: Dependency check for --xpra: 1
  30. DEBUGNOTE[07:11:13,127]: --xpra not possible: missing dependencies.
  31. DEBUGNOTE[07:11:13,131]: Dependencies of --xpra already checked: 1
  32. DEBUGNOTE[07:11:13,135]: --nxagent: nxagent not found.
  33. You can look for the package name of this command at:
  34. https://github.com/mviereck/x11docker/wiki/dependencies#table-of-all-packages
  35. DEBUGNOTE[07:11:13,139]: Dependency check for --nxagent: 1
  36. DEBUGNOTE[07:11:13,144]: --nxagent not possible: missing dependencies.
  37. DEBUGNOTE[07:11:13,148]: --xephyr: Neither Xephyr nor Xnest found.
  38. You can look for the package name of this command at:
  39. https://github.com/mviereck/x11docker/wiki/dependencies#table-of-all-packages
  40. DEBUGNOTE[07:11:13,153]: Dependency check for --xephyr: 1
  41. DEBUGNOTE[07:11:13,157]: --xephyr not possible: missing dependencies.
  42. DEBUGNOTE[07:11:13,161]: Dependencies of --xephyr already checked: 1
  43. DEBUGNOTE[07:11:13,166]: --kwin-xwayland: Closed source NVIDIA driver does not support Wayland.
  44. DEBUGNOTE[07:11:13,171]: --kwin-xwayland: kwin_wayland not found.
  45. You can look for the package name of this command at:
  46. https://github.com/mviereck/x11docker/wiki/dependencies#table-of-all-packages
  47. DEBUGNOTE[07:11:13,176]: --kwin-xwayland: Xwayland not found.
  48. You can look for the package name of this command at:
  49. https://github.com/mviereck/x11docker/wiki/dependencies#table-of-all-packages
  50. DEBUGNOTE[07:11:13,181]: Dependency check for --kwin-xwayland: 1
  51. DEBUGNOTE[07:11:13,186]: --kwin-xwayland not possible: missing dependencies.
  52. DEBUGNOTE[07:11:13,191]: Dependency check for --hostdisplay: 0
  53. DEBUGNOTE[07:11:13,196]: --xwin: XWin is available in Cygwin on MS Windows only.
  54. DEBUGNOTE[07:11:13,200]: Dependency check for --xwin: 1
  55. DEBUGNOTE[07:11:13,205]: --xwin not possible: missing dependencies.
  56. DEBUGNOTE[07:11:13,210]: --nxagent: nxagent not found.
  57. You can look for the package name of this command at:
  58. https://github.com/mviereck/x11docker/wiki/dependencies#table-of-all-packages
  59. DEBUGNOTE[07:11:13,215]: Dependency check for --nxagent: 1
  60. DEBUGNOTE[07:11:13,220]: --nxagent not possible: missing dependencies.
  61. DEBUGNOTE[07:11:13,225]: --weston-xwayland: Closed source NVIDIA driver does not support Wayland.
  62. DEBUGNOTE[07:11:13,231]: --weston-xwayland: weston not found.
  63. You can look for the package name of this command at:
  64. https://github.com/mviereck/x11docker/wiki/dependencies#table-of-all-packages
  65. DEBUGNOTE[07:11:13,236]: --weston-xwayland: Xwayland not found.
  66. You can look for the package name of this command at:
  67. https://github.com/mviereck/x11docker/wiki/dependencies#table-of-all-packages
  68. DEBUGNOTE[07:11:13,240]: Dependency check for --weston-xwayland: 1
  69. DEBUGNOTE[07:11:13,245]: --weston-xwayland not possible: missing dependencies.
  70. DEBUGNOTE[07:11:13,251]: --xpra: xpra not found.
  71. You can look for the package name of this command at:
  72. https://github.com/mviereck/x11docker/wiki/dependencies#table-of-all-packages
  73. DEBUGNOTE[07:11:13,256]: Dependency check for --xpra: 1
  74. DEBUGNOTE[07:11:13,261]: --xpra not possible: missing dependencies.
  75. DEBUGNOTE[07:11:13,267]: Dependency check for --hostdisplay: 0
  76. DEBUGNOTE[07:11:13,271]: Dependencies of --hostdisplay already checked: 0
  77. x11docker note: Using X server option --hostdisplay
  78.  
  79. DEBUGNOTE[07:11:13,277]: storeinfo(): xserver=--hostdisplay
  80. x11docker WARNING: Clipboard isolation may fail.
  81.  
  82. x11docker note: To allow protection against X security leaks,
  83. please install 'xinit' and one or more of:
  84. xpra, Xephyr, nxagent, weston+Xwayland, kwin_wayland+Xwayland or Xnest,
  85. or run a second Xorg server with option --xorg.
  86.  
  87. x11docker WARNING: Option --hostdisplay provides only low container isolation!
  88. It is recommended to use another X server option like --xpra or --nxagent.
  89.  
  90. To improve security with --hostdisplay x11docker uses untrusted cookies.
  91. This can lead to strange behaviour of some applications.
  92.  
  93. If you encounter application errors, enable option --clipboard
  94. that disables security restrictions for --hostdisplay as a side effect.
  95.  
  96. x11docker note: Option --hostdisplay may fail with proprietary NVIDIA driver
  97. on host. In that case try other X server options like --xpra or --xephyr.
  98.  
  99.  
  100. ==> /home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/xinit.log <==
  101.  
  102. ==> /home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/share/stderr <==
  103.  
  104. ==> /home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/share/stdout <==
  105.  
  106. ==> /home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/share/container.log <==
  107.  
  108. ==> /home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/message.log <==
  109.  
  110. DEBUGNOTE[07:11:12,591]: check_host(): ps can watch root processes: yes
  111. x11docker[07:11:12,604]: Image name: rstudioxhost:verse
  112. Container command:
  113.  
  114. x11docker WARNING: User ignacio is member of group docker.
  115. That allows unprivileged processes on host to gain root privileges.
  116.  
  117. DEBUGNOTE[07:11:12,988]: storeinfo(): cache=/home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372
  118. DEBUGNOTE[07:11:13,000]: storeinfo(): stdout=/home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/share/stdout
  119. DEBUGNOTE[07:11:13,013]: storeinfo(): stderr=/home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/share/stderr
  120. DEBUGNOTE[07:11:13,048]: storeinfo(): x11dockerpid=114404
  121. DEBUGNOTE[07:11:13,114]:
  122. x11docker version: 6.4.0
  123. docker version: Docker version 19.03.4, build 9013bf583a
  124. Host system: "Debian GNU/Linux bullseye/sid"
  125. Command: '/usr/bin/x11docker' 'rstudioxhost:verse'
  126. Parsed options: -- 'rstudioxhost:verse'
  127. DEBUGNOTE[07:11:13,120]: --xpra: xpra not found.
  128. You can look for the package name of this command at:
  129. https://github.com/mviereck/x11docker/wiki/dependencies#table-of-all-packages
  130. DEBUGNOTE[07:11:13,124]: Dependency check for --xpra: 1
  131. DEBUGNOTE[07:11:13,127]: --xpra not possible: missing dependencies.
  132. DEBUGNOTE[07:11:13,131]: Dependencies of --xpra already checked: 1
  133. DEBUGNOTE[07:11:13,135]: --nxagent: nxagent not found.
  134. You can look for the package name of this command at:
  135. https://github.com/mviereck/x11docker/wiki/dependencies#table-of-all-packages
  136. DEBUGNOTE[07:11:13,139]: Dependency check for --nxagent: 1
  137. DEBUGNOTE[07:11:13,144]: --nxagent not possible: missing dependencies.
  138. DEBUGNOTE[07:11:13,148]: --xephyr: Neither Xephyr nor Xnest found.
  139. You can look for the package name of this command at:
  140. https://github.com/mviereck/x11docker/wiki/dependencies#table-of-all-packages
  141. DEBUGNOTE[07:11:13,153]: Dependency check for --xephyr: 1
  142. DEBUGNOTE[07:11:13,157]: --xephyr not possible: missing dependencies.
  143. DEBUGNOTE[07:11:13,161]: Dependencies of --xephyr already checked: 1
  144. DEBUGNOTE[07:11:13,166]: --kwin-xwayland: Closed source NVIDIA driver does not support Wayland.
  145. DEBUGNOTE[07:11:13,171]: --kwin-xwayland: kwin_wayland not found.
  146. You can look for the package name of this command at:
  147. https://github.com/mviereck/x11docker/wiki/dependencies#table-of-all-packages
  148. DEBUGNOTE[07:11:13,176]: --kwin-xwayland: Xwayland not found.
  149. You can look for the package name of this command at:
  150. https://github.com/mviereck/x11docker/wiki/dependencies#table-of-all-packages
  151. DEBUGNOTE[07:11:13,181]: Dependency check for --kwin-xwayland: 1
  152. DEBUGNOTE[07:11:13,186]: --kwin-xwayland not possible: missing dependencies.
  153. DEBUGNOTE[07:11:13,191]: Dependency check for --hostdisplay: 0
  154. DEBUGNOTE[07:11:13,196]: --xwin: XWin is available in Cygwin on MS Windows only.
  155. DEBUGNOTE[07:11:13,200]: Dependency check for --xwin: 1
  156. DEBUGNOTE[07:11:13,205]: --xwin not possible: missing dependencies.
  157. DEBUGNOTE[07:11:13,210]: --nxagent: nxagent not found.
  158. You can look for the package name of this command at:
  159. https://github.com/mviereck/x11docker/wiki/dependencies#table-of-all-packages
  160. DEBUGNOTE[07:11:13,215]: Dependency check for --nxagent: 1
  161. DEBUGNOTE[07:11:13,220]: --nxagent not possible: missing dependencies.
  162. DEBUGNOTE[07:11:13,225]: --weston-xwayland: Closed source NVIDIA driver does not support Wayland.
  163. DEBUGNOTE[07:11:13,231]: --weston-xwayland: weston not found.
  164. You can look for the package name of this command at:
  165. https://github.com/mviereck/x11docker/wiki/dependencies#table-of-all-packages
  166. DEBUGNOTE[07:11:13,236]: --weston-xwayland: Xwayland not found.
  167. You can look for the package name of this command at:
  168. https://github.com/mviereck/x11docker/wiki/dependencies#table-of-all-packages
  169. DEBUGNOTE[07:11:13,240]: Dependency check for --weston-xwayland: 1
  170. DEBUGNOTE[07:11:13,245]: --weston-xwayland not possible: missing dependencies.
  171. DEBUGNOTE[07:11:13,251]: --xpra: xpra not found.
  172. You can look for the package name of this command at:
  173. https://github.com/mviereck/x11docker/wiki/dependencies#table-of-all-packages
  174. DEBUGNOTE[07:11:13,256]: Dependency check for --xpra: 1
  175. DEBUGNOTE[07:11:13,261]: --xpra not possible: missing dependencies.
  176. DEBUGNOTE[07:11:13,267]: Dependency check for --hostdisplay: 0
  177. DEBUGNOTE[07:11:13,271]: Dependencies of --hostdisplay already checked: 0
  178. x11docker note: Using X server option --hostdisplay
  179.  
  180. DEBUGNOTE[07:11:13,277]: storeinfo(): xserver=--hostdisplay
  181. x11docker WARNING: Clipboard isolation may fail.
  182.  
  183. x11docker note: To allow protection against X security leaks,
  184. please install 'xinit' and one or more of:
  185. xpra, Xephyr, nxagent, weston+Xwayland, kwin_wayland+Xwayland or Xnest,
  186. or run a second Xorg server with option --xorg.
  187.  
  188. x11docker WARNING: Option --hostdisplay provides only low container isolation!
  189. It is recommended to use another X server option like --xpra or --nxagent.
  190.  
  191. To improve security with --hostdisplay x11docker uses untrusted cookies.
  192. This can lead to strange behaviour of some applications.
  193.  
  194. If you encounter application errors, enable option --clipboard
  195. that disables security restrictions for --hostdisplay as a side effect.
  196.  
  197. x11docker note: Option --hostdisplay may fail with proprietary NVIDIA driver
  198. on host. In that case try other X server options like --xpra or --xephyr.
  199.  
  200.  
  201. ==> /home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/xinit.log <==
  202.  
  203. ==> /home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/message.log <==
  204. DEBUGNOTE[07:11:13,359]: waitforlogentry(): tailstdout: Waiting for logentry "x11docker=ready" in store.info
  205. DEBUGNOTE[07:11:13,360]: waitforlogentry(): tailstderr: Waiting for logentry "x11docker=ready" in store.info
  206. DEBUGNOTE[07:11:13,381]: storepid(): Stored pid '114934' of 'watchpidlist': 114934 pts/4 00:00:00 bash
  207. DEBUGNOTE[07:11:13,407]: storepid(): Stored pid '114947' of 'watchmessagefifo': 114947 pts/4 00:00:00 bash
  208. x11docker[07:11:13,443]: Virtual screen size: 3840x2160
  209.  
  210. x11docker[07:11:13,455]: Physical screen size:
  211. Screen 0: minimum 8 x 8, current 3840 x 2160, maximum 32767 x 32767
  212.  
  213. x11docker[07:11:13,472]: Detected host window manager: cinnamon --sm-disable
  214.  
  215. DEBUGNOTE[07:11:13,495]: storeinfo(): DISPLAY=:0
  216. DEBUGNOTE[07:11:13,506]: storeinfo(): XAUTHORITY=/home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/share/Xauthority.client
  217. DEBUGNOTE[07:11:13,518]: storeinfo(): XSOCKET=/tmp/.X11-unix/X0
  218. DEBUGNOTE[07:11:13,531]: storeinfo(): XDG_RUNTIME_DIR=/run/user/738202
  219. DEBUGNOTE[07:11:13,541]: storeinfo(): Xenv= DISPLAY=:0 XAUTHORITY=/home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/share/Xauthority.client XSOCKET=/tmp/.X11-unix/X0 XDG_RUNTIME_DIR=/run/user/738202
  220. x11docker[07:11:13,695]: --init: Found tini binary: /usr/bin/docker-init
  221.  
  222. DEBUGNOTE[07:11:13,700]: storeinfo(): tini=/usr/bin/docker-init
  223. DEBUGNOTE[07:11:13,716]: Users and terminal:
  224. x11docker was started by: ignacio
  225. As host user serves (running X, storing cache): ignacio
  226. Container user will be: ignacio
  227. Container user password: x11docker
  228. Getting permission to run docker with: eval
  229. Terminal for password frontend: bash -c
  230. Running in a terminal: yes
  231. Running on console: no
  232. Running over SSH: no
  233. Running sourced: no
  234. bash $-: hB
  235. DEBUGNOTE[07:11:13,720]: storeinfo(): containername=x11docker_X0_rstudioxhost-verse_30672295372
  236. DEBUGNOTE[07:11:14,088]: Docker command:
  237. docker run --tty --rm --detach \
  238. --name x11docker_X0_rstudioxhost-verse_30672295372 \
  239. --user 738202:89939 \
  240. --env USER=ignacio \
  241. --userns host \
  242. --cap-drop ALL \
  243. --security-opt no-new-privileges \
  244. --security-opt label=type:container_runtime_t \
  245. --volume '/usr/bin/docker-init':'/usr/local/bin/tini':ro \
  246. --tmpfs /run --tmpfs /run/lock \
  247. --volume '/home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/share':'/x11docker':rw \
  248. --volume '/tmp/.X11-unix/X0':'/X0':rw \
  249. --workdir '/tmp' \
  250. --entrypoint env \
  251. --env 'container=docker' \
  252. --env 'XAUTHORITY=/x11docker/Xauthority.client' \
  253. --env 'DISPLAY=:0' \
  254. --env 'XDG_RUNTIME_DIR=/tmp/XDG_RUNTIME_DIR' \
  255. -- rstudioxhost:verse /usr/local/bin/tini -- /bin/sh - /x11docker/containerrc
  256. x11docker[07:11:14,300]: Generated dockerrc:
  257. 1 #! /usr/bin/env bash
  258. 2
  259. 3 # dockerrc:
  260. 4 # This script runs as root (or member of group docker) on host.
  261. 5 # - inspect image
  262. 6 # - pull image if needed
  263. 7 # - create containerrc
  264. 8 # - set up systemd/elogind cgroup if needed
  265. 9 # - run window manager in container or from host if needed
  266. 10
  267. 11 trap '' SIGINT
  268. 12
  269. 13 askyesno ()
  270. 14 {
  271. 15 local Choice;
  272. 16 read -t60 -n1 -p "(timeout after 60s assuming no) [Y|n]" Choice;
  273. 17 [ "$?" = '0' ] && {
  274. 18 [[ "$Choice" == [YyJj]* ]] || [ -z "$Choice" ] && return 0
  275. 19 };
  276. 20 return 1
  277. 21 }
  278. 22 checkpid ()
  279. 23 {
  280. 24 [ -e "/proc/${1:-NONSENSE}" ]
  281. 25 }
  282. 26 escapestring ()
  283. 27 {
  284. 28 echo "${1:-}" | LC_ALL=C sed -e 's/[^a-zA-Z0-9,._+@=:/-]/\\&/g; 1{$s/^$/""/}; 1!s/^/"/; $!s/$/"/'
  285. 29 }
  286. 30 mysleep ()
  287. 31 {
  288. 32 sleep "${1:-1}" 2> /dev/null || sleep 1
  289. 33 }
  290. 34 pspid ()
  291. 35 {
  292. 36 LC_ALL=C ps -p "${1:-}" 2> /dev/null | grep -v 'TIME'
  293. 37 }
  294. 38 rmcr ()
  295. 39 {
  296. 40 case "${1:-}" in
  297. 41 "")
  298. 42 sed "s/$(printf "\r")//g"
  299. 43 ;;
  300. 44 *)
  301. 45 sed -i "s/$(printf "\r")//g" "${1:-}"
  302. 46 ;;
  303. 47 esac
  304. 48 }
  305. 49 rocknroll ()
  306. 50 {
  307. 51 [ -s "$Timetosaygoodbyefile" ] && return 1;
  308. 52 [ -e "$Timetosaygoodbyefile" ] || return 1;
  309. 53 return 0
  310. 54 }
  311. 55 saygoodbye ()
  312. 56 {
  313. 57 debugnote "time to say goodbye ($*)";
  314. 58 [ -e "$Timetosaygoodbyefile" ] && echo timetosaygoodbye >> $Timetosaygoodbyefile;
  315. 59 [ -e "$Timetosaygoodbyefifo" ] && echo timetosaygoodbye >> $Timetosaygoodbyefifo
  316. 60 }
  317. 61 storeinfo ()
  318. 62 {
  319. 63 [ -e "$Storeinfofile" ] || return 1;
  320. 64 case "${1:-}" in
  321. 65 dump)
  322. 66 grep "^${2:-}=" $Storeinfofile | sed "s/^${2:-}=//"
  323. 67 ;;
  324. 68 drop)
  325. 69 sed -i "/^${2:-}=/d" $Storeinfofile
  326. 70 ;;
  327. 71 test)
  328. 72 grep -q "^${2:-}=" $Storeinfofile
  329. 73 ;;
  330. 74 *)
  331. 75 debugnote "storeinfo(): ${1:-}";
  332. 76 grep -q "^$(echo "${1:-}" | cut -d= -f1)=" $Storeinfofile && {
  333. 77 sed -i "/^$(echo "${1:-}" | cut -d= -f1)=/d" $Storeinfofile
  334. 78 };
  335. 79 echo "${1:-}" >> $Storeinfofile
  336. 80 ;;
  337. 81 esac
  338. 82 }
  339. 83 storepid ()
  340. 84 {
  341. 85 case "${1:-}" in
  342. 86 dump)
  343. 87 grep -w "${2:-}" "$Storepidfile" | cut -d' ' -f1
  344. 88 ;;
  345. 89 test)
  346. 90 grep -q -w "${2:-}" "$Storepidfile"
  347. 91 ;;
  348. 92 *)
  349. 93 echo "${1:-NOPID}" "${2:-NONAME}" >> "$Storepidfile";
  350. 94 debugnote "storepid(): Stored pid '${1:-}' of '${2:-}': $(pspid ${1:-} ||:)"
  351. 95 ;;
  352. 96 esac
  353. 97 }
  354. 98 waitforlogentry ()
  355. 99 {
  356. 100 local Startzeit Uhrzeit Dauer Count=0 Schlaf;
  357. 101 local Errorkeys="${4:-}";
  358. 102 local Warten="${5:-60}";
  359. 103 Startzeit="$(date +%s ||:)";
  360. 104 Startzeit="${Startzeit:-0}";
  361. 105 [ "$Warten" = "infinity" ] && Warten=32000;
  362. 106 debugnote "waitforlogentry(): ${1:-}: Waiting for logentry \"${3:-}\" in $(basename ${2:-})";
  363. 107 while ! grep -q "${3:-}" < "${2:-}"; do
  364. 108 Count="$(( $Count + 1 ))";
  365. 109 Uhrzeit="$(date +%s ||:)";
  366. 110 Uhrzeit="${Uhrzeit:-0}";
  367. 111 Dauer="$(( $Uhrzeit - $Startzeit ))";
  368. 112 Schlaf="$(( $Count / 10 ))";
  369. 113 [ "$Schlaf" = "0" ] && Schlaf="0.5";
  370. 114 mysleep "$Schlaf";
  371. 115 [ "$Dauer" -gt "10" ] && debugnote "waitforlogentry(): ${1:-}: Waiting since ${Dauer}s for log entry \"${3:-}\" in $(basename ${2:-})";
  372. 116 [ "$Dauer" -gt "$Warten" ] && error "waitforlogentry(): ${1:-}: Timeout waiting for log entry \"${3:-}\" in $(basename ${2:-})
  373. 117 Last lines of logfile $(basename ${2:-}):
  374. 118 $(tail "${2:-}")";
  375. 119 [ "$Errorkeys" ] && grep -i -q -E "$Errorkeys" < "${2:-}" && error "waitforlogentry(): ${1:-}: Found error message in logfile.
  376. 120 Last lines of logfile $(basename ${2:-}):
  377. 121 $(tail "${2:-}")";
  378. 122 rocknroll || {
  379. 123 debugnote "waitforlogentry(): ${1:-}: Stopped waiting for ${3:-} in $(basename ${2:-}) due to terminating signal.";
  380. 124 return 1
  381. 125 };
  382. 126 done;
  383. 127 debugnote "waitforlogentry(): ${1:-}: Found log entry \"${3:-}\" in $(basename ${2:-}).";
  384. 128 return 0
  385. 129 }
  386. 130
  387. 131 warning() {
  388. 132 echo "$*:WARNING" | sed "s/\$/ /" >>$Messagefile
  389. 133 }
  390. 134 note() {
  391. 135 echo "$*:NOTE" | sed "s/\$/ /" >>$Messagefile
  392. 136 }
  393. 137 verbose() {
  394. 138 echo "$*:VERBOSE" | sed "s/\$/ /" >>$Messagefile
  395. 139 }
  396. 140 debugnote() {
  397. 141 echo "$*:DEBUGNOTE" | sed "s/\$/ /" >>$Messagefile
  398. 142 }
  399. 143 error() {
  400. 144 echo "$*:ERROR" | sed "s/\$/ /" >>$Messagefile
  401. 145 exit 64
  402. 146 }
  403. 147 stdout() {
  404. 148 echo "$*:STDOUT" | sed "s/\$/ /" >>$Messagefile
  405. 149 }
  406. 150
  407. 151 Containercommand=""
  408. 152 Imagename="rstudioxhost:verse"
  409. 153 Messagefile='/home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/share/message.fifo'
  410. 154 Newxenv=' DISPLAY=:0 XAUTHORITY=/home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/share/Xauthority.client XSOCKET=/tmp/.X11-unix/X0 XDG_RUNTIME_DIR=/run/user/738202'
  411. 155 export PATH='/usr/local/buildtools/java/jdk/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games'
  412. 156 Storeinfofile='/home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/share/store.info'
  413. 157 Storepidfile='/home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/store.pids'
  414. 158 Timetosaygoodbyefile='/home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/share/timetosaygoodbye'
  415. 159 Timetosaygoodbyefifo='/home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/share/timetosaygoodbye.fifo'
  416. 160 Xserver='--hostdisplay'
  417. 161 Workdir=''
  418. 162
  419. 163 Containerid=
  420. 164 Containerip=
  421. 165 Dockerlogspid=''
  422. 166 Dockerpull=
  423. 167 Exec=
  424. 168 Entrypoint=
  425. 169 Failure=
  426. 170 Imageuser=
  427. 171 Inspect=
  428. 172 Line=
  429. 173 Pid1pid=
  430. 174 Runtime=
  431. 175 Signal=
  432. 176 Windowmanager=
  433. 177 Windowmanagercommand=
  434. 178 Wmcontainerid=
  435. 179 Wmdockercommand=
  436. 180 Workdir=
  437. 181 debugnote 'Running dockerrc: Setup as root or as user docker on host.'
  438. 182
  439. 183
  440. 184 # Check whether docker daemon is running, get docker info
  441. 185 docker info >>/home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/docker.info 2>>/home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/share/container.log || {
  442. 186 error "Calling docker daemon failed.
  443. 187 Is docker daemon running at all?
  444. 188 Try to start docker daemon with: systemctl start docker
  445. 189 Last lines of log:
  446. 190 $(rmcr < '/home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/share/container.log' | tail)"
  447. 191 }
  448. 192
  449. 193 # Check default runtime
  450. 194 Runtime="$(grep 'Default Runtime' < '/home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/docker.info' | awk '{print $3}')"
  451. 195 debugnote "dockerrc: Found default Runtime: $Runtime"
  452. 196 debugnote "dockerrc: All $(grep 'Runtimes' < '/home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/docker.info')"
  453. 197 [ "$Runtime" != '' ] && {
  454. 198 case $Runtime in
  455. 199 kata-runtime) warning 'Found default docker runtime kata-runtime.
  456. 200 Please run x11docker with --runtime=kata-runtime to avoid issues.' ;;
  457. 201 nvidia) [ 'no' = 'yes' ] && warning 'Option --gpu: Found default docker runtime nvidia.
  458. 202 Please run x11docker with --runtime=nvidia to avoid issues.' ;;
  459. 203 runc|crun) ;;
  460. 204 *) warning "Found unknown container runtime: $Runtime
  461. 205 Please report at: https://github.com/mviereck/x11docker" ;;
  462. 206 esac
  463. 207 }
  464. 208 debugnote "dockerrc: Container Runtime: $Runtime"
  465. 209 storeinfo "runtime=$Runtime"
  466. 210
  467. 211 # Refresh images.list for x11docker-gui
  468. 212 docker images 2>>/home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/share/container.log | grep -v REPOSITORY | awk '{print $1 ":" $2}' >>/home/ignacio/.cache/x11docker/docker.imagelist.sort
  469. 213 rmcr /home/ignacio/.cache/x11docker/docker.imagelist.sort
  470. 214 while read -r Line ; do
  471. 215 grep -q "<none>" <<<$Line || echo $Line >> /home/ignacio/.cache/x11docker/docker.imagelist
  472. 216 done < <(sort < /home/ignacio/.cache/x11docker/docker.imagelist.sort)
  473. 217 rm /home/ignacio/.cache/x11docker/docker.imagelist.sort
  474. 218
  475. 219 # Check if image rstudioxhost:verse is available locally
  476. 220 Dockerpull=no
  477. 221 grep -x -q 'rstudioxhost:verse' < /home/ignacio/.cache/x11docker/docker.imagelist || grep -x -q 'rstudioxhost:verse:latest' < /home/ignacio/.cache/x11docker/docker.imagelist || {
  478. 222 docker inspect rstudioxhost:verse >>/home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/share/container.log 2>&1 || {
  479. 223 echo 'Image rstudioxhost:verse not found locally.' >&2
  480. 224 echo 'Do you want to pull it from docker hub?' >&2
  481. 225 askyesno && Dockerpull=yes || error "Image 'rstudioxhost:verse' not available locally and not pulled from docker hub."
  482. 226 }
  483. 227 }
  484. 228
  485. 229 rocknroll || exit 64
  486. 230
  487. 231 [ "$Dockerpull" = 'yes' ] && {
  488. 232 note "Pulling image 'rstudioxhost:verse' from docker hub"
  489. 233 docker pull rstudioxhost:verse 1>&2 || error "Pulling docker image 'rstudioxhost:verse' seems to have failed!"
  490. 234 }
  491. 235
  492. 236 rocknroll || exit 64
  493. 237
  494. 238 Inspect="$(docker inspect rstudioxhost:verse --format='{{.Config.Entrypoint}}{{.Config.Cmd}}[{{.Config.User}}][{{.Config.WorkingDir}}]')"
  495. 239
  496. 240 # Check CMD
  497. 241 [ -z "$Containercommand" ] && {
  498. 242 # extract image command from image if not given on cli
  499. 243 Containercommand="$(cut -d] -f2 <<< "$Inspect" | cut -d[ -f2)"
  500. 244 debugnote "dockerrc: Image CMD: $Containercommand"
  501. 245 echo "$Containercommand" | grep -q /x11docker/containerrc && error 'Recursion error: Found CMD /x11docker/containerrc in image.
  502. 246 Did you use docker commit with an x11docker container?
  503. 247 Please build new images with a Dockerfile instead of using docker commit,
  504. 248 or provide a different container command.'
  505. 249 }
  506. 250
  507. 251 # Check USER
  508. 252 Imageuser="$(cut -d[ -f4 <<< "$Inspect" | cut -d] -f1)"
  509. 253 debugnote "dockerrc: Image USER: $Imageuser"
  510. 254 [ "$Imageuser" ] && note "Found 'USER $Imageuser' in image.
  511. 255 If you want to run with user $Imageuser instead of host user ignacio,
  512. 256 than run with --user=RETAIN."
  513. 257 storeinfo containeruser="ignacio"
  514. 258
  515. 259 # Check ENTRYPOINT
  516. 260 Entrypoint="$(cut -d] -f1 <<< "$Inspect" | cut -d[ -f2)"
  517. 261 debugnote "dockerrc: Image ENTRYPOINT: $Entrypoint"
  518. 262 echo "$Entrypoint" | grep -qE 'tini|init|systemd' && {
  519. 263 note "There seems to be an init system in ENTRYPOINT of image:
  520. 264 $Entrypoint
  521. 265 Will disable it as x11docker already runs an init with option --tini.
  522. 266 To allow this ENTRYPOINT, run x11docker with option --init=none."
  523. 267 Entrypoint=
  524. 268 }
  525. 269
  526. 270 # Check WORKDIR
  527. 271 Workdir="$(cut -d[ -f5 <<< "$Inspect" | cut -d] -f1)"
  528. 272 debugnote "dockerrc: Image WORKDIR: $Workdir"
  529. 273 [ "$Workdir" ] && note "Found 'WORKDIR $Workdir' in image.
  530. 274 You can change it with option --workdir=DIR."
  531. 275
  532. 276 [ -z "$Containercommand$Entrypoint" ] && error 'No container command specified and no CMD or ENTRYPOINT found in image.'
  533. 277
  534. 278 ######## Create containerrc ########
  535. 279
  536. 280 { echo '#! /bin/sh'
  537. 281 echo ''
  538. 282 echo '# containerrc'
  539. 283 echo '# Created startscript for docker run used as container command.'
  540. 284 echo '# Runs as unprivileged user in container.'
  541. 285 echo ''
  542. 286 echo 'exec 6>&1 7>&2'
  543. 287 echo 'exec >>/x11docker/container.log 2>&1'
  544. 288 echo ''
  545. 289 echo 'mysleep ()
  546. 290 {
  547. 291 sleep "${1:-1}" 2> /dev/null || sleep 1
  548. 292 }'
  549. 293 echo 'rocknroll ()
  550. 294 {
  551. 295 [ -s "$Timetosaygoodbyefile" ] && return 1;
  552. 296 [ -e "$Timetosaygoodbyefile" ] || return 1;
  553. 297 return 0
  554. 298 }'
  555. 299 echo 'saygoodbye ()
  556. 300 {
  557. 301 debugnote "time to say goodbye ($*)";
  558. 302 [ -e "$Timetosaygoodbyefile" ] && echo timetosaygoodbye >> $Timetosaygoodbyefile;
  559. 303 [ -e "$Timetosaygoodbyefifo" ] && echo timetosaygoodbye >> $Timetosaygoodbyefifo
  560. 304 }'
  561. 305 echo 'storeinfo ()
  562. 306 {
  563. 307 [ -e "$Storeinfofile" ] || return 1;
  564. 308 case "${1:-}" in
  565. 309 dump)
  566. 310 grep "^${2:-}=" $Storeinfofile | sed "s/^${2:-}=//"
  567. 311 ;;
  568. 312 drop)
  569. 313 sed -i "/^${2:-}=/d" $Storeinfofile
  570. 314 ;;
  571. 315 test)
  572. 316 grep -q "^${2:-}=" $Storeinfofile
  573. 317 ;;
  574. 318 *)
  575. 319 debugnote "storeinfo(): ${1:-}";
  576. 320 grep -q "^$(echo "${1:-}" | cut -d= -f1)=" $Storeinfofile && {
  577. 321 sed -i "/^$(echo "${1:-}" | cut -d= -f1)=/d" $Storeinfofile
  578. 322 };
  579. 323 echo "${1:-}" >> $Storeinfofile
  580. 324 ;;
  581. 325 esac
  582. 326 }'
  583. 327 echo 'waitforlogentry ()
  584. 328 {
  585. 329 local Startzeit Uhrzeit Dauer Count=0 Schlaf;
  586. 330 local Errorkeys="${4:-}";
  587. 331 local Warten="${5:-60}";
  588. 332 Startzeit="$(date +%s ||:)";
  589. 333 Startzeit="${Startzeit:-0}";
  590. 334 [ "$Warten" = "infinity" ] && Warten=32000;
  591. 335 debugnote "waitforlogentry(): ${1:-}: Waiting for logentry \"${3:-}\" in $(basename ${2:-})";
  592. 336 while ! grep -q "${3:-}" < "${2:-}"; do
  593. 337 Count="$(( $Count + 1 ))";
  594. 338 Uhrzeit="$(date +%s ||:)";
  595. 339 Uhrzeit="${Uhrzeit:-0}";
  596. 340 Dauer="$(( $Uhrzeit - $Startzeit ))";
  597. 341 Schlaf="$(( $Count / 10 ))";
  598. 342 [ "$Schlaf" = "0" ] && Schlaf="0.5";
  599. 343 mysleep "$Schlaf";
  600. 344 [ "$Dauer" -gt "10" ] && debugnote "waitforlogentry(): ${1:-}: Waiting since ${Dauer}s for log entry \"${3:-}\" in $(basename ${2:-})";
  601. 345 [ "$Dauer" -gt "$Warten" ] && error "waitforlogentry(): ${1:-}: Timeout waiting for log entry \"${3:-}\" in $(basename ${2:-})
  602. 346 Last lines of logfile $(basename ${2:-}):
  603. 347 $(tail "${2:-}")";
  604. 348 [ "$Errorkeys" ] && grep -i -q -E "$Errorkeys" < "${2:-}" && error "waitforlogentry(): ${1:-}: Found error message in logfile.
  605. 349 Last lines of logfile $(basename ${2:-}):
  606. 350 $(tail "${2:-}")";
  607. 351 rocknroll || {
  608. 352 debugnote "waitforlogentry(): ${1:-}: Stopped waiting for ${3:-} in $(basename ${2:-}) due to terminating signal.";
  609. 353 return 1
  610. 354 };
  611. 355 done;
  612. 356 debugnote "waitforlogentry(): ${1:-}: Found log entry \"${3:-}\" in $(basename ${2:-}).";
  613. 357 return 0
  614. 358 }'
  615. 359 echo 'calculate() {'
  616. 360 echo ' LC_ALL=C printf %.3f\\n "$((10**9 * $@))e-9"'
  617. 361 echo '}'
  618. 362 echo '
  619. 363 warning() {
  620. 364 echo "$*:WARNING" | sed "s/\$/ /" >>$Messagefile
  621. 365 }
  622. 366 note() {
  623. 367 echo "$*:NOTE" | sed "s/\$/ /" >>$Messagefile
  624. 368 }
  625. 369 verbose() {
  626. 370 echo "$*:VERBOSE" | sed "s/\$/ /" >>$Messagefile
  627. 371 }
  628. 372 debugnote() {
  629. 373 echo "$*:DEBUGNOTE" | sed "s/\$/ /" >>$Messagefile
  630. 374 }
  631. 375 error() {
  632. 376 echo "$*:ERROR" | sed "s/\$/ /" >>$Messagefile
  633. 377 exit 64
  634. 378 }
  635. 379 stdout() {
  636. 380 echo "$*:STDOUT" | sed "s/\$/ /" >>$Messagefile
  637. 381 }'
  638. 382 echo 'Messagefile=/x11docker/message.fifo'
  639. 383 echo 'Storeinfofile=/x11docker/store.info'
  640. 384 echo 'Timetosaygoodbyefile=/x11docker/timetosaygoodbye'
  641. 385 echo ''
  642. 386 echo 'waitforlogentry containerrc $Storeinfofile containerrootrc=ready infinity'
  643. 387 echo 'debugnote "Running containerrc: Unprivileged user commands in container"'
  644. 388 echo ''
  645. 389 echo "Containercommand=\"$Containercommand\""
  646. 390 echo "Entrypoint=\"$Entrypoint\""
  647. 391 echo ''
  648. 392 echo 'verbose "containerrc: Container system:'
  649. 393 echo '$(cat /etc/os-release 2>&1 ||:)"'
  650. 394 echo ''
  651. 395 } >> /home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/share/containerrc
  652. 396 {
  653. 397 echo ''
  654. 398 echo '# USER and HOME'
  655. 399 echo 'Containeruser="$(storeinfo dump containeruser)"'
  656. 400 echo 'Containeruserhome="/fakehome/ignacio"'
  657. 401 echo 'export USER="$Containeruser"'
  658. 402 echo 'export HOME="$Containeruserhome"'
  659. 403 echo ''
  660. 404 echo '# XDG_RUNTIME_DIR'
  661. 405 echo 'Containeruseruid=$(id -u $Containeruser)'
  662. 406 echo 'export XDG_RUNTIME_DIR=/tmp/XDG_RUNTIME_DIR'
  663. 407 echo '[ -e /run/user/$Containeruseruid ] && ln -s /run/user/$Containeruseruid $XDG_RUNTIME_DIR || mkdir -p -m700 $XDG_RUNTIME_DIR'
  664. 408 echo ''
  665. 409 echo 'mkdir -p $Containeruserhome'
  666. 410 echo '# Copy files from /etc/skel into empty HOME'
  667. 411 echo '[ -d /etc/skel ] && [ -z "$(ls -A "/fakehome/ignacio" 2>/dev/null | grep -v gnupg)" ] && {'
  668. 412 echo ' debugnote "containerrc: HOME is empty. Copying from /etc/skel"'
  669. 413 echo ' cp -n -R /etc/skel/. $Containeruserhome'
  670. 414 echo ' :'
  671. 415 echo '} || {'
  672. 416 echo ' debugnote "containerrc: HOME not empty. Not copying from /etc/skel"'
  673. 417 echo '}'
  674. 418 echo ''
  675. 419 echo '# Create softlink to X unix socket'
  676. 420 echo '[ -e /tmp/.X11-unix/X0 ] || ln -s /X0 /tmp/.X11-unix'
  677. 421 echo ''
  678. 422 echo 'unset WAYLAND_DISPLAY'
  679. 423 echo ''
  680. 424 echo 'export XDG_SESSION_TYPE=x11'
  681. 425 echo ''
  682. 426 echo ''
  683. 427 echo 'bash --version >/dev/null 2>&1 && export SHELL=/bin/bash || export SHELL=/bin/sh'
  684. 428 echo 'export TERM=xterm'
  685. 429 echo 'storeinfo test locale && export LANG="$(storeinfo dump locale)"'
  686. 430 echo '[ -e "/usr/share/zoneinfo/America/Los_Angeles" ] || export TZ=UTC+08'
  687. 431 echo '[ "$(date -Ihours)" != "2019-11-15T07-08:00" ] && export TZ=UTC+08'
  688. 432 echo '[ "$DEBIAN_FRONTEND" = noninteractive ] && unset DEBIAN_FRONTEND && export DEBIAN_FRONTEND'
  689. 433 echo '[ "$DEBIAN_FRONTEND" = newt ] && unset DEBIAN_FRONTEND && export DEBIAN_FRONTEND'
  690. 434 echo '# container environment (--env)'
  691. 435 echo "export 'container=docker'"
  692. 436 echo "export 'XAUTHORITY=/x11docker/Xauthority.client'"
  693. 437 echo "export 'DISPLAY=:0'"
  694. 438 echo "export 'XDG_RUNTIME_DIR=/tmp/XDG_RUNTIME_DIR'"
  695. 439 echo ''
  696. 440 echo 'env >> /x11docker/container.environment'
  697. 441 echo 'verbose "Container environment:'
  698. 442 echo '$(env | sort)"'
  699. 443 echo ''
  700. 444 echo 'cd "$HOME"'
  701. 445 [ "$Workdir" ] && echo "[ -d \"$Workdir\" ] && cd \"$Workdir\" # WORKDIR in image"
  702. 446 echo ''
  703. 447 echo "debugnote \"containerrc: Running container command:
  704. 448 \$Dbus $Entrypoint $Containercommand
  705. 449 \""
  706. 450 echo ''
  707. 451 echo 'exec 1>&6 2>&7 6>&- 7>&-'
  708. 452 echo "$Exec \$Dbus $Entrypoint $Containercommand >>/x11docker/stdout 2>>/x11docker/stderr"
  709. 453 echo "storeinfo cmdexitcode=\$?"
  710. 454 } >> /home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/share/containerrc
  711. 455 ######## End of containerrc ########
  712. 456
  713. 457 # Write containerrc into x11docker.log
  714. 458 nl -ba >> /home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/share/x11docker.log < /home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/share/containerrc
  715. 459
  716. 460 # Send signal to run X and wait for X to be ready
  717. 461 storeinfo readyforX=ready
  718. 462 waitforlogentry 'dockerrc' /home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/xinit.log 'xinitrc is ready' 'xinit: giving up|unable to connect to X server|Connection refused|server error|Only console users are allowed'
  719. 463
  720. 464 rocknroll || exit 64
  721. 465
  722. 466
  723. 467 rocknroll || exit 64
  724. 468
  725. 469
  726. 470 #### run docker image ####
  727. 471 read Containerid < <(docker run --tty --rm --detach \
  728. 472 --name x11docker_X0_rstudioxhost-verse_30672295372 \
  729. 473 --user 738202:89939 \
  730. 474 --env USER=ignacio \
  731. 475 --userns host \
  732. 476 --cap-drop ALL \
  733. 477 --security-opt no-new-privileges \
  734. 478 --security-opt label=type:container_runtime_t \
  735. 479 --volume '/usr/bin/docker-init':'/usr/local/bin/tini':ro \
  736. 480 --tmpfs /run --tmpfs /run/lock \
  737. 481 --volume '/home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/share':'/x11docker':rw \
  738. 482 --volume '/tmp/.X11-unix/X0':'/X0':rw \
  739. 483 --workdir '/tmp' \
  740. 484 --entrypoint env \
  741. 485 --env 'container=docker' \
  742. 486 --env 'XAUTHORITY=/x11docker/Xauthority.client' \
  743. 487 --env 'DISPLAY=:0' \
  744. 488 --env 'XDG_RUNTIME_DIR=/tmp/XDG_RUNTIME_DIR' \
  745. 489 -- rstudioxhost:verse /usr/local/bin/tini -- /bin/sh - /x11docker/containerrc 2>>/home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/share/container.log | rmcr)
  746. 490 ##########################
  747. 491
  748. 492
  749. 493 [ "$Containerid" ] || {
  750. 494 error "Startup of docker failed. Did not receive a container ID.
  751. 495
  752. 496 Last lines of container log:
  753. 497 $(rmcr < /home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/share/container.log | tail)"
  754. 498 }
  755. 499 storeinfo containerid="$Containerid"
  756. 500 # Wait for container to be ready
  757. 501 for ((Count=1 ; Count<=40 ; Count++)); do
  758. 502 docker exec x11docker_X0_rstudioxhost-verse_30672295372 sh -c : 2>&1 | rmcr >>/home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/share/container.log && { debugnote 'dockerrc: Container is up and running.' ; break ; } || debugnote "dockerrc: Container not ready on $Count. attempt, trying again."
  759. 503 rocknroll || exit 64
  760. 504 mysleep 0.1
  761. 505 done
  762. 506
  763. 507 # Wait for pid 1 in container
  764. 508 for ((Count=1 ; Count<=40 ; Count++)); do
  765. 509 Pid1pid="$(docker inspect --format '{{.State.Pid}}' x11docker_X0_rstudioxhost-verse_30672295372 2>>/home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/share/container.log | rmcr)"
  766. 510 debugnote "dockerrc: $Count. check for PID 1: $Pid1pid"
  767. 511 checkpid "$Pid1pid" && break
  768. 512 rocknroll || exit 64
  769. 513 mysleep 0.1
  770. 514 done
  771. 515 storeinfo pid1pid="$Pid1pid"
  772. 516
  773. 517 # Get IP of container
  774. 518 Containerip="$(docker inspect --format '{{ .NetworkSettings.IPAddress }}' x11docker_X0_rstudioxhost-verse_30672295372 2>>/home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/share/container.log)"
  775. 519 storeinfo containerip=$Containerip
  776. 520
  777. 521 # Check log for startup failure
  778. 522 Failure="$(rmcr < /home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/share/container.log | grep -v grep | grep -E 'Error response from daemon|OCI runtime exec' ||:)"
  779. 523 [ "$Failure" ] && {
  780. 524 echo "$Failure" >>/home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/share/container.log
  781. 525 error "Got error message from docker daemon:
  782. 526 $Failure
  783. 527
  784. 528 Last lines of logfile:
  785. 529 "
  786. 530 }
  787. 531
  788. 532 # copy containerrootrc inside of container to avoid possible noexec of host home.
  789. 533 docker exec --tty x11docker_X0_rstudioxhost-verse_30672295372 sh -c 'cp /x11docker/containerrootrc /tmp/containerrootrc ; chmod 644 /tmp/containerrootrc' 2>&1 | rmcr >>/home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/share/container.log
  790. 534 # run container root setup. containerrc will wait until setup script is ready.
  791. 535 docker exec --tty -u root x11docker_X0_rstudioxhost-verse_30672295372 /bin/sh /tmp/containerrootrc 2>&1 | rmcr >>/home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/share/container.log
  792. 536
  793. 537 storeinfo dockerrc=ready
  794. 538
  795. 539 [ "$Containerid" ] || [ "$Wmcontainerid" ] && {
  796. 540 # wait for signal of finish()
  797. 541 read Signal </home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/dockerrc.stopfifo
  798. 542 [ "$Signal" = "stop" ] && {
  799. 543 [ "$Containerid" ] && docker stop $Containerid >> /home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/share/container.log 2>&1 &
  800. 544 [ "$Wmcontainerid" ] && docker stop $Wmcontainerid >> /home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/share/container.log 2>&1 &
  801. 545 [ "$Dockerlogspid" ] && kill $Dockerlogspid >> /home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/share/container.log 2>&1 &
  802. 546 }
  803. 547 } & storepid $! dockerstopshell
  804. 548 exit 0
  805.  
  806. x11docker[07:11:14,403]: Generated containerrootrc:
  807. 1 #! /bin/sh
  808. 2
  809. 3 # containerrootrc
  810. 4 # This Script is executed as root in container.
  811. 5 # - Create container user
  812. 6 # - Time zone
  813. 7 # - Install NVIDIA driver if requested
  814. 8 # - Set up init system services and DBus for --init=systemd|openrc|runit|sysvinit
  815. 9
  816. 10 # redirect output to have it available before 'docker logs' starts. --init=runit (void) would eat up the output at all for unknown reasons.
  817. 11 exec 1>>/x11docker/container.log 2>&1
  818. 12
  819. 13 storeinfo ()
  820. 14 {
  821. 15 [ -e "$Storeinfofile" ] || return 1;
  822. 16 case "${1:-}" in
  823. 17 dump)
  824. 18 grep "^${2:-}=" $Storeinfofile | sed "s/^${2:-}=//"
  825. 19 ;;
  826. 20 drop)
  827. 21 sed -i "/^${2:-}=/d" $Storeinfofile
  828. 22 ;;
  829. 23 test)
  830. 24 grep -q "^${2:-}=" $Storeinfofile
  831. 25 ;;
  832. 26 *)
  833. 27 debugnote "storeinfo(): ${1:-}";
  834. 28 grep -q "^$(echo "${1:-}" | cut -d= -f1)=" $Storeinfofile && {
  835. 29 sed -i "/^$(echo "${1:-}" | cut -d= -f1)=/d" $Storeinfofile
  836. 30 };
  837. 31 echo "${1:-}" >> $Storeinfofile
  838. 32 ;;
  839. 33 esac
  840. 34 }
  841. 35 rocknroll ()
  842. 36 {
  843. 37 [ -s "$Timetosaygoodbyefile" ] && return 1;
  844. 38 [ -e "$Timetosaygoodbyefile" ] || return 1;
  845. 39 return 0
  846. 40 }
  847. 41
  848. 42 warning() {
  849. 43 echo "$*:WARNING" | sed "s/\$/ /" >>$Messagefile
  850. 44 }
  851. 45 note() {
  852. 46 echo "$*:NOTE" | sed "s/\$/ /" >>$Messagefile
  853. 47 }
  854. 48 verbose() {
  855. 49 echo "$*:VERBOSE" | sed "s/\$/ /" >>$Messagefile
  856. 50 }
  857. 51 debugnote() {
  858. 52 echo "$*:DEBUGNOTE" | sed "s/\$/ /" >>$Messagefile
  859. 53 }
  860. 54 error() {
  861. 55 echo "$*:ERROR" | sed "s/\$/ /" >>$Messagefile
  862. 56 exit 64
  863. 57 }
  864. 58 stdout() {
  865. 59 echo "$*:STDOUT" | sed "s/\$/ /" >>$Messagefile
  866. 60 }
  867. 61 Messagefile=/x11docker/message.fifo
  868. 62 Storeinfofile='/x11docker/store.info'
  869. 63 Timetosaygoodbyefile=/x11docker/timetosaygoodbye
  870. 64
  871. 65 debugnote 'Running containerrootrc: Setup as root in container'
  872. 66
  873. 67 # Check type of libc
  874. 68 ldd --version 2>&1 | grep -q 'musl libc' && Containerlibc='musl'
  875. 69 ldd --version 2>&1 | grep -q -E 'GLIBC|GNU libc' && Containerlibc='glibc'
  876. 70 debugnote "containerrootrc: Container libc: $Containerlibc"
  877. 71
  878. 72 # Prepare X environment
  879. 73 # Create some system dirs with needed permissions
  880. 74 mkdir -v -p /var/lib/dbus /var/run/dbus
  881. 75 mkdir -v -p -m 1777 /tmp/.ICE-unix /tmp/.X11-unix /tmp/.font-unix
  882. 76 chmod -c 1777 /tmp/.ICE-unix /tmp/.X11-unix /tmp/.font-unix
  883. 77 export DISPLAY=:0 XAUTHORITY=/x11docker/Xauthority.client
  884. 78 [ -e /X0 ] && ln -s /X0 /tmp/.X11-unix/X0
  885. 79 ls -l /X0
  886. 80 ls -l /tmp/.X11-unix/X0
  887. 81
  888. 82 # Time zone
  889. 83 [ ! -d /usr/share/zoneinfo ] && [ "$Containerlibc" = "glibc" ] && {
  890. 84 mkdir -p /usr/share/zoneinfo/America
  891. 85 cp '/x11docker/libc.localtime' '/usr/share/zoneinfo/America/Los_Angeles'
  892. 86 }
  893. 87 [ -e '/usr/share/zoneinfo/America/Los_Angeles' ] && ln -f -s '/usr/share/zoneinfo/America/Los_Angeles' /etc/localtime
  894. 88
  895. 89 # Container system
  896. 90 Containersystem="$(grep '^ID=' /etc/os-release 2>/dev/null | cut -d= -f2 || echo 'unknown')"
  897. 91 verbose "Container system ID: $Containersystem"
  898. 92
  899. 93 # Environment variables
  900. 94 export 'container=docker'
  901. 95 export 'XAUTHORITY=/x11docker/Xauthority.client'
  902. 96 export 'DISPLAY=:0'
  903. 97 export 'XDG_RUNTIME_DIR=/tmp/XDG_RUNTIME_DIR'
  904. 98
  905. 99 # Check container user
  906. 100 Containeruser="$(storeinfo dump containeruser)"
  907. 101
  908. 102 mkdir -v -m 777 /fakehome
  909. 103 Containeruserhome='/fakehome/ignacio'
  910. 104
  911. 105 # Create user entry in /etc/passwd (and delete possibly existing same uid)
  912. 106 cat /etc/passwd | grep -v ':738202:' > /tmp/passwd
  913. 107
  914. 108 # Disable possible /etc/shadow passwords for other users
  915. 109 sed -i 's%:x:%:-:%' /tmp/passwd
  916. 110 echo 'ignacio:x:738202:89939:ignacio,,,:/fakehome/ignacio:/bin/sh' >> /tmp/passwd
  917. 111
  918. 112 rm /etc/passwd
  919. 113 mv /tmp/passwd /etc/passwd || warning 'Unable to change /etc/passwd. That may be a security risk.'
  920. 114
  921. 115 # Create password entry for container user in /etc/shadow
  922. 116 rm -v /etc/shadow || warning 'Cannot change /etc/shadow. That may be a security risk.'
  923. 117 echo "ignacio:sac19FwGGTx/A:17293:0:99999:7:::" > /etc/shadow
  924. 118 echo 'root:*:17219:0:99999:7:::' >> /etc/shadow
  925. 119
  926. 120 # Create user group entry (and delete possibly existing same gid)
  927. 121 cat /etc/group | grep -v ':89939:' > /tmp/group
  928. 122 echo "primarygroup:x:89939:" >> /tmp/group
  929. 123 mv /tmp/group /etc/group
  930. 124
  931. 125 # Create /etc/sudoers, delete /etc/sudoers.d. Overwrite possible sudo setups in image.
  932. 126 [ -e /etc/sudoers.d ] && rm -v -R /etc/sudoers.d
  933. 127 [ -e /etc/sudoers ] && rm -v /etc/sudoers
  934. 128 echo '# /etc/sudoers created by x11docker' > /etc/sudoers
  935. 129 echo 'root ALL=(ALL) ALL' >> /etc/sudoers
  936. 130
  937. 131 # Restrict PAM configuration of su and sudo
  938. 132 mkdir -p /etc/pam.d
  939. 133 [ -e /etc/pam.d/sudo ] && rm -v /etc/pam.d/sudo
  940. 134 case "$Containersystem" in
  941. 135 fedora)
  942. 136 echo '#%PAM-1.0' > /etc/pam.d/su
  943. 137 echo 'auth sufficient pam_rootok.so' >> /etc/pam.d/su
  944. 138 echo 'account sufficient pam_succeed_if.so uid = 0 use_uid quiet' >> /etc/pam.d/su
  945. 139 echo 'session include system-auth' >> /etc/pam.d/su
  946. 140 ;;
  947. 141 *)
  948. 142 echo '#%PAM-1.0' > /etc/pam.d/su
  949. 143 echo 'auth sufficient pam_rootok.so' >> /etc/pam.d/su # allow root to switch user without a password
  950. 144 echo '@include common-auth' >> /etc/pam.d/su
  951. 145 echo '@include common-account' >> /etc/pam.d/su
  952. 146 echo '@include common-session' >> /etc/pam.d/su
  953. 147 ;;
  954. 148 esac
  955. 149
  956. 150 # Set up container user groups
  957. 151 [ -e "$Containeruserhome" ] || {
  958. 152 # only create HOME here if capability CHOWN is allowed.
  959. 153 :>/tmp/chowntestfile
  960. 154 chown "$Containeruser" /tmp/chowntestfile && {
  961. 155 mkdir -v -p "$Containeruserhome"
  962. 156 chown "$Containeruser" "$Containeruserhome"
  963. 157 }
  964. 158 rm /tmp/chowntestfile
  965. 159 }
  966. 160
  967. 161 rocknroll || exit 64
  968. 162
  969. 163
  970. 164 # disable getty in inittab
  971. 165 [ -e /etc/inittab ] && sed -i 's/.*getty/##getty disabled by x11docker## \0/' /etc/inittab
  972. 166
  973. 167
  974. 168 rocknroll || exit 64
  975. 169
  976. 170 storeinfo containerrootrc=ready
  977. 171
  978.  
  979. x11docker[07:11:14,416]: Generated xinitrc:
  980. 1 #! /bin/sh
  981. 2 disable_xhost ()
  982. 3 {
  983. 4 local Line=;
  984. 5 command -v xhost > /dev/null || {
  985. 6 warning "Command 'xhost' not found.
  986. 7 Can not check for possibly allowed network access to X.
  987. 8 Please install 'xhost'.";
  988. 9 return 1
  989. 10 };
  990. 11 xhost 2>&1 | tail -n +2 /dev/stdin | while read -r Line; do
  991. 12 debugnote "xhost: Removing entry $Line";
  992. 13 xhost -$Line;
  993. 14 done;
  994. 15 xhost -;
  995. 16 [ "$(xhost 2>&1 | wc -l)" -gt "1" ] && {
  996. 17 warning "Remaining xhost permissions found on display ${DISPLAY:-}
  997. 18 $(xhost 2>&1 )";
  998. 19 return 1
  999. 20 };
  1000. 21 xhost 2>&1 | grep "access control disabled" && {
  1001. 22 warning "Failed to restrict xhost permissions.
  1002. 23 Access to display ${DISPLAY:-} is allowed for everyone.";
  1003. 24 return 1
  1004. 25 };
  1005. 26 return 0
  1006. 27 }
  1007. 28 pspid ()
  1008. 29 {
  1009. 30 LC_ALL=C ps -p "${1:-}" 2> /dev/null | grep -v 'TIME'
  1010. 31 }
  1011. 32 rocknroll ()
  1012. 33 {
  1013. 34 [ -s "$Timetosaygoodbyefile" ] && return 1;
  1014. 35 [ -e "$Timetosaygoodbyefile" ] || return 1;
  1015. 36 return 0
  1016. 37 }
  1017. 38 storeinfo ()
  1018. 39 {
  1019. 40 [ -e "$Storeinfofile" ] || return 1;
  1020. 41 case "${1:-}" in
  1021. 42 dump)
  1022. 43 grep "^${2:-}=" $Storeinfofile | sed "s/^${2:-}=//"
  1023. 44 ;;
  1024. 45 drop)
  1025. 46 sed -i "/^${2:-}=/d" $Storeinfofile
  1026. 47 ;;
  1027. 48 test)
  1028. 49 grep -q "^${2:-}=" $Storeinfofile
  1029. 50 ;;
  1030. 51 *)
  1031. 52 debugnote "storeinfo(): ${1:-}";
  1032. 53 grep -q "^$(echo "${1:-}" | cut -d= -f1)=" $Storeinfofile && {
  1033. 54 sed -i "/^$(echo "${1:-}" | cut -d= -f1)=/d" $Storeinfofile
  1034. 55 };
  1035. 56 echo "${1:-}" >> $Storeinfofile
  1036. 57 ;;
  1037. 58 esac
  1038. 59 }
  1039. 60 storepid ()
  1040. 61 {
  1041. 62 case "${1:-}" in
  1042. 63 dump)
  1043. 64 grep -w "${2:-}" "$Storepidfile" | cut -d' ' -f1
  1044. 65 ;;
  1045. 66 test)
  1046. 67 grep -q -w "${2:-}" "$Storepidfile"
  1047. 68 ;;
  1048. 69 *)
  1049. 70 echo "${1:-NOPID}" "${2:-NONAME}" >> "$Storepidfile";
  1050. 71 debugnote "storepid(): Stored pid '${1:-}' of '${2:-}': $(pspid ${1:-} ||:)"
  1051. 72 ;;
  1052. 73 esac
  1053. 74 }
  1054. 75
  1055. 76 warning() {
  1056. 77 echo "$*:WARNING" | sed "s/\$/ /" >>$Messagefile
  1057. 78 }
  1058. 79 note() {
  1059. 80 echo "$*:NOTE" | sed "s/\$/ /" >>$Messagefile
  1060. 81 }
  1061. 82 verbose() {
  1062. 83 echo "$*:VERBOSE" | sed "s/\$/ /" >>$Messagefile
  1063. 84 }
  1064. 85 debugnote() {
  1065. 86 echo "$*:DEBUGNOTE" | sed "s/\$/ /" >>$Messagefile
  1066. 87 }
  1067. 88 error() {
  1068. 89 echo "$*:ERROR" | sed "s/\$/ /" >>$Messagefile
  1069. 90 exit 64
  1070. 91 }
  1071. 92 stdout() {
  1072. 93 echo "$*:STDOUT" | sed "s/\$/ /" >>$Messagefile
  1073. 94 }
  1074. 95 getscreensize() {
  1075. 96 CurrentXaxis="$(xrandr | grep primary | cut -d' ' -f4 | cut -dx -f1 )"
  1076. 97 CurrentYaxis="$(xrandr | grep primary | cut -d' ' -f4 | cut -dx -f2 | cut -d+ -f1)"
  1077. 98 }
  1078. 99 checkscreensize() {
  1079. 100 getscreensize
  1080. 101 [ "$Xaxis" = "$CurrentXaxis" ] || return 1
  1081. 102 [ "$Yaxis" = "$CurrentYaxis" ] || return 1
  1082. 103 return 0
  1083. 104 }
  1084. 105 getprimary() {
  1085. 106 xrandr | grep -q primary || xrandr --output $(xrandr | grep ' connected' | head -n1 | cut -d' ' -f1) --primary
  1086. 107 echo $(xrandr | grep primary | cut -d' ' -f1)
  1087. 108 }
  1088. 109
  1089. 110 Messagefile='/home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/share/message.fifo'
  1090. 111 Output="$(getprimary)"
  1091. 112 Storeinfofile='/home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/share/store.info'
  1092. 113 Storepidfile='/home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/store.pids'
  1093. 114 Timetosaygoodbyefile='/home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/share/timetosaygoodbye'
  1094. 115
  1095. 116 export PATH='/usr/local/buildtools/java/jdk/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games'
  1096. 117 export DISPLAY=:0 XAUTHORITY=/home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/share/Xauthority.client XSOCKET=/tmp/.X11-unix/X0 XDG_RUNTIME_DIR=/run/user/738202
  1097. 118
  1098. 119 Cookie=''
  1099. 120 Line=''
  1100. 121 Var=''
  1101. 122
  1102. 123 debugnote 'Running xinitrc'
  1103. 124
  1104. 125 # background color
  1105. 126
  1106. 127 # create new XAUTHORITY cookies
  1107. 128 :> /home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/share/Xauthority.client
  1108. 129
  1109. 130 export XAUTHORITY=/home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/Xauthority.host.0
  1110. 131 xhost | grep -q 'SI:localuser:ignacio' || { xhost +SI:localuser:ignacio ; Xhostentry='yes' ; }
  1111. 132
  1112. 133 echo 'Requesting untrusted cookie from X server'
  1113. 134 xauth -v -i -f /home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/share/Xauthority.client generate :0 . untrusted timeout 3600
  1114. 135
  1115. 136 [ -s '/home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/share/Xauthority.client' ] || {
  1116. 137 [ 'untrusted' = 'untrusted' ] && note 'Could not create untrusted cookie.
  1117. 138 Maybe your X server misses extension SECURITY.'
  1118. 139 warning 'Memory access failures and rendering glitches
  1119. 140 may occure due to unrestricted cookie.
  1120. 141 Avoid them with isolation breaking option --hostipc,
  1121. 142 or use another X server option like --xpra or --nxagent.'
  1122. 143 [ 'untrusted' = 'untrusted' ] && warning 'SECURITY RISK! Keylogging and remote host control
  1123. 144 may be possible! Better avoid using option --hostdisplay,
  1124. 145 rather use --xpra or --nxagent.'
  1125. 146 cp /home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/Xauthority.host.0 /home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/share/Xauthority.client
  1126. 147 }
  1127. 148 [ -s '/home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/share/Xauthority.client' ] || {
  1128. 149 # still no cookie? try to create one without extension security
  1129. 150 debugnote 'xinitrc: Failed to retrieve trusted cookie from X server. Will bake one myself.'
  1130. 151 echo 'Failed to retrieve trusted cookie from X server. Will bake one myself.'
  1131. 152 xauth -v -i -f /home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/share/Xauthority.client add :0 . 9d970e38294143ff9d862ac7df0166ab
  1132. 153 ls -l /home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/share/Xauthority.client
  1133. 154 }
  1134. 155
  1135. 156 # Prepare cookie with localhost identification disabled by ffff, needed if X socket is shared. ffff means 'familiy wild'
  1136. 157 Cookie="$(xauth -i -f /home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/share/Xauthority.client nlist | sed -e 's/^..../ffff/')"
  1137. 158 echo "$Cookie" | xauth -v -i -f /home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/share/Xauthority.client nmerge -
  1138. 159
  1139. 160 debugnote "xinitrc: Created cookie: $(xauth -f /home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/share/Xauthority.client list 2>&1)"
  1140. 161 ls -l /home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/share/Xauthority.client
  1141. 162 cp /home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/share/Xauthority.client /home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/Xauthority.server
  1142. 163 chmod 644 /home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/share/Xauthority.client
  1143. 164
  1144. 165 [ -s '/home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/share/Xauthority.client' ] || warning 'Cookie creation failed!'
  1145. 166 [ '$Xhostentry' = 'yes' ] && env XAUTHORITY=/home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/Xauthority.host.0 xhost -SI:localuser:ignacio
  1146. 167 export XAUTHORITY=/home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/share/Xauthority.client
  1147. 168 [ 'yes' = 'no' ] || [ ! -s '/home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/share/Xauthority.client' ] && unset XAUTHORITY && warning '--hostdisplay: X server :0 runs without cookie authentication.'
  1148. 169
  1149. 170 verbose "Output of xrandr on :0
  1150. 171 $(xrandr)"
  1151. 172
  1152. 173 echo 'xinitrc: xinitrc is ready'
  1153. 174 storeinfo xinitrc=ready
  1154. 175
  1155. 176 # wait for the end
  1156. 177 read Var </home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/share/timetosaygoodbye.fifo
  1157.  
  1158. DEBUGNOTE[07:11:14,441]: storepid(): Stored pid '115527' of 'containershell': 115527 pts/4 00:00:00 bash
  1159. DEBUGNOTE[07:11:14,441]: Running xtermrc: Ask for password if needed (no)
  1160. DEBUGNOTE[07:11:14,450]: waitforlogentry(): start_xserver(): Waiting for logentry "readyforX=ready" in store.info
  1161. DEBUGNOTE[07:11:14,454]: Running dockerrc: Setup as root or as user docker on host.
  1162.  
  1163. ==> /home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/share/container.log <==
  1164. WARNING: No swap limit support
  1165.  
  1166. ==> /home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/message.log <==
  1167. DEBUGNOTE[07:11:14,530]: dockerrc: Found default Runtime: runc
  1168. DEBUGNOTE[07:11:14,542]: dockerrc: All Runtimes: nvidia runc
  1169. DEBUGNOTE[07:11:14,554]: dockerrc: Container Runtime: runc
  1170. DEBUGNOTE[07:11:14,567]: storeinfo(): runtime=runc
  1171. DEBUGNOTE[07:11:14,679]: dockerrc: Image CMD: /bin/sh -c /usr/lib/rstudio/bin/rstudio
  1172. DEBUGNOTE[07:11:14,692]: dockerrc: Image USER: developer
  1173. 1 #! /bin/sh
  1174. 2
  1175. 3 # containerrc
  1176. 4 # Created startscript for docker run used as container command.
  1177. 5 # Runs as unprivileged user in container.
  1178. 6
  1179. 7 exec 6>&1 7>&2
  1180. 8 exec >>/x11docker/container.log 2>&1
  1181. 9
  1182. 10 mysleep ()
  1183. 11 {
  1184. 12 sleep "${1:-1}" 2> /dev/null || sleep 1
  1185. 13 }
  1186. 14 rocknroll ()
  1187. 15 {
  1188. 16 [ -s "$Timetosaygoodbyefile" ] && return 1;
  1189. 17 [ -e "$Timetosaygoodbyefile" ] || return 1;
  1190. 18 return 0
  1191. 19 }
  1192. 20 saygoodbye ()
  1193. 21 {
  1194. 22 debugnote "time to say goodbye ($*)";
  1195. 23 [ -e "$Timetosaygoodbyefile" ] && echo timetosaygoodbye >> $Timetosaygoodbyefile;
  1196. 24 [ -e "$Timetosaygoodbyefifo" ] && echo timetosaygoodbye >> $Timetosaygoodbyefifo
  1197. 25 }
  1198. 26 storeinfo ()
  1199. 27 {
  1200. 28 [ -e "$Storeinfofile" ] || return 1;
  1201. 29 case "${1:-}" in
  1202. 30 dump)
  1203. 31 grep "^${2:-}=" $Storeinfofile | sed "s/^${2:-}=//"
  1204. 32 ;;
  1205. 33 drop)
  1206. 34 sed -i "/^${2:-}=/d" $Storeinfofile
  1207. 35 ;;
  1208. 36 test)
  1209. 37 grep -q "^${2:-}=" $Storeinfofile
  1210. 38 ;;
  1211. 39 *)
  1212. 40 debugnote "storeinfo(): ${1:-}";
  1213. 41 grep -q "^$(echo "${1:-}" | cut -d= -f1)=" $Storeinfofile && {
  1214. 42 sed -i "/^$(echo "${1:-}" | cut -d= -f1)=/d" $Storeinfofile
  1215. 43 };
  1216. 44 echo "${1:-}" >> $Storeinfofile
  1217. 45 ;;
  1218. 46 esac
  1219. 47 }
  1220. 48 waitforlogentry ()
  1221. 49 {
  1222. 50 local Startzeit Uhrzeit Dauer Count=0 Schlaf;
  1223. 51 local Errorkeys="${4:-}";
  1224. 52 local Warten="${5:-60}";
  1225. 53 Startzeit="$(date +%s ||:)";
  1226. 54 Startzeit="${Startzeit:-0}";
  1227. 55 [ "$Warten" = "infinity" ] && Warten=32000;
  1228. 56 debugnote "waitforlogentry(): ${1:-}: Waiting for logentry \"${3:-}\" in $(basename ${2:-})";
  1229. 57 while ! grep -q "${3:-}" < "${2:-}"; do
  1230. 58 Count="$(( $Count + 1 ))";
  1231. 59 Uhrzeit="$(date +%s ||:)";
  1232. 60 Uhrzeit="${Uhrzeit:-0}";
  1233. 61 Dauer="$(( $Uhrzeit - $Startzeit ))";
  1234. 62 Schlaf="$(( $Count / 10 ))";
  1235. 63 [ "$Schlaf" = "0" ] && Schlaf="0.5";
  1236. 64 mysleep "$Schlaf";
  1237. 65 [ "$Dauer" -gt "10" ] && debugnote "waitforlogentry(): ${1:-}: Waiting since ${Dauer}s for log entry \"${3:-}\" in $(basename ${2:-})";
  1238. 66 [ "$Dauer" -gt "$Warten" ] && error "waitforlogentry(): ${1:-}: Timeout waiting for log entry \"${3:-}\" in $(basename ${2:-})
  1239. 67 Last lines of logfile $(basename ${2:-}):
  1240. 68 $(tail "${2:-}")";
  1241. 69 [ "$Errorkeys" ] && grep -i -q -E "$Errorkeys" < "${2:-}" && error "waitforlogentry(): ${1:-}: Found error message in logfile.
  1242. 70 Last lines of logfile $(basename ${2:-}):
  1243. 71 $(tail "${2:-}")";
  1244. 72 rocknroll || {
  1245. 73 debugnote "waitforlogentry(): ${1:-}: Stopped waiting for ${3:-} in $(basename ${2:-}) due to terminating signal.";
  1246. 74 return 1
  1247. 75 };
  1248. 76 done;
  1249. 77 debugnote "waitforlogentry(): ${1:-}: Found log entry \"${3:-}\" in $(basename ${2:-}).";
  1250. 78 return 0
  1251. 79 }
  1252. 80 calculate() {
  1253. 81 LC_ALL=C printf %.3f\\n "$((10**9 * $@))e-9"
  1254. 82 }
  1255. 83
  1256. 84 warning() {
  1257. 85 echo "$*:WARNING" | sed "s/\$/ /" >>$Messagefile
  1258. 86 }
  1259. 87 note() {
  1260. 88 echo "$*:NOTE" | sed "s/\$/ /" >>$Messagefile
  1261. 89 }
  1262. 90 verbose() {
  1263. 91 echo "$*:VERBOSE" | sed "s/\$/ /" >>$Messagefile
  1264. 92 }
  1265. 93 debugnote() {
  1266. 94 echo "$*:DEBUGNOTE" | sed "s/\$/ /" >>$Messagefile
  1267. 95 }
  1268. 96 error() {
  1269. 97 echo "$*:ERROR" | sed "s/\$/ /" >>$Messagefile
  1270. 98 exit 64
  1271. 99 }
  1272. 100 stdout() {
  1273. 101 echo "$*:STDOUT" | sed "s/\$/ /" >>$Messagefile
  1274. 102 }
  1275. 103 Messagefile=/x11docker/message.fifo
  1276. 104 Storeinfofile=/x11docker/store.info
  1277. 105 Timetosaygoodbyefile=/x11docker/timetosaygoodbye
  1278. 106
  1279. 107 waitforlogentry containerrc $Storeinfofile containerrootrc=ready infinity
  1280. 108 debugnote "Running containerrc: Unprivileged user commands in container"
  1281. 109
  1282. 110 Containercommand="/bin/sh -c /usr/lib/rstudio/bin/rstudio"
  1283. 111 Entrypoint=""
  1284. 112
  1285. 113 verbose "containerrc: Container system:
  1286. 114 $(cat /etc/os-release 2>&1 ||:)"
  1287. 115
  1288. 116
  1289. 117 # USER and HOME
  1290. 118 Containeruser="$(storeinfo dump containeruser)"
  1291. 119 Containeruserhome="/fakehome/ignacio"
  1292. 120 export USER="$Containeruser"
  1293. 121 export HOME="$Containeruserhome"
  1294. 122
  1295. 123 # XDG_RUNTIME_DIR
  1296. 124 Containeruseruid=$(id -u $Containeruser)
  1297. 125 export XDG_RUNTIME_DIR=/tmp/XDG_RUNTIME_DIR
  1298. 126 [ -e /run/user/$Containeruseruid ] && ln -s /run/user/$Containeruseruid $XDG_RUNTIME_DIR || mkdir -p -m700 $XDG_RUNTIME_DIR
  1299. 127
  1300. 128 mkdir -p $Containeruserhome
  1301. 129 # Copy files from /etc/skel into empty HOME
  1302. 130 [ -d /etc/skel ] && [ -z "$(ls -A "/fakehome/ignacio" 2>/dev/null | grep -v gnupg)" ] && {
  1303. 131 debugnote "containerrc: HOME is empty. Copying from /etc/skel"
  1304. 132 cp -n -R /etc/skel/. $Containeruserhome
  1305. 133 :
  1306. 134 } || {
  1307. 135 debugnote "containerrc: HOME not empty. Not copying from /etc/skel"
  1308. 136 }
  1309. 137
  1310. 138 # Create softlink to X unix socket
  1311. 139 [ -e /tmp/.X11-unix/X0 ] || ln -s /X0 /tmp/.X11-unix
  1312. 140
  1313. 141 unset WAYLAND_DISPLAY
  1314. 142
  1315. 143 export XDG_SESSION_TYPE=x11
  1316. 144
  1317. 145
  1318. 146 bash --version >/dev/null 2>&1 && export SHELL=/bin/bash || export SHELL=/bin/sh
  1319. 147 export TERM=xterm
  1320. 148 storeinfo test locale && export LANG="$(storeinfo dump locale)"
  1321. 149 [ -e "/usr/share/zoneinfo/America/Los_Angeles" ] || export TZ=UTC+08
  1322. 150 [ "$(date -Ihours)" != "2019-11-15T07-08:00" ] && export TZ=UTC+08
  1323. 151 [ "$DEBIAN_FRONTEND" = noninteractive ] && unset DEBIAN_FRONTEND && export DEBIAN_FRONTEND
  1324. 152 [ "$DEBIAN_FRONTEND" = newt ] && unset DEBIAN_FRONTEND && export DEBIAN_FRONTEND
  1325. 153 # container environment (--env)
  1326. 154 export 'container=docker'
  1327. 155 export 'XAUTHORITY=/x11docker/Xauthority.client'
  1328. 156 export 'DISPLAY=:0'
  1329. 157 export 'XDG_RUNTIME_DIR=/tmp/XDG_RUNTIME_DIR'
  1330. 158
  1331. 159 env >> /x11docker/container.environment
  1332. 160 verbose "Container environment:
  1333. 161 $(env | sort)"
  1334. 162
  1335. 163 cd "$HOME"
  1336. 164 [ -d "/home/developer" ] && cd "/home/developer" # WORKDIR in image
  1337. 165
  1338. 166 debugnote "containerrc: Running container command:
  1339. 167 $Dbus /bin/sh -c /usr/lib/rstudio/bin/rstudio
  1340. 168 "
  1341. 169
  1342. 170 exec 1>&6 2>&7 6>&- 7>&-
  1343. 171 $Dbus /bin/sh -c /usr/lib/rstudio/bin/rstudio >>/x11docker/stdout 2>>/x11docker/stderr
  1344. 172 storeinfo cmdexitcode=$?
  1345. x11docker note: Found 'USER developer' in image.
  1346. If you want to run with user developer instead of host user ignacio,
  1347. than run with --user=RETAIN.
  1348.  
  1349. DEBUGNOTE[07:11:14,722]: storeinfo(): containeruser=ignacio
  1350. DEBUGNOTE[07:11:14,737]: dockerrc: Image ENTRYPOINT:
  1351. DEBUGNOTE[07:11:14,751]: dockerrc: Image WORKDIR: /home/developer
  1352. x11docker note: Found 'WORKDIR /home/developer' in image.
  1353. You can change it with option --workdir=DIR.
  1354.  
  1355. DEBUGNOTE[07:11:14,782]: storeinfo(): readyforX=ready
  1356. DEBUGNOTE[07:11:14,798]: waitforlogentry(): dockerrc: Waiting for logentry "xinitrc is ready" in xinit.log
  1357. DEBUGNOTE[07:11:14,968]: waitforlogentry(): start_xserver(): Found log entry "readyforX=ready" in store.info.
  1358.  
  1359. ==> /home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/xinit.log <==
  1360. Requesting untrusted cookie from X server
  1361. Ignoring locks on authority file /home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/share/Xauthority.client
  1362. authorization id is 1226
  1363. Ignoring locks and writing authority file /home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/share/Xauthority.client
  1364.  
  1365. ==> /home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/message.log <==
  1366. DEBUGNOTE[07:11:15,010]: Running xinitrc
  1367.  
  1368. ==> /home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/xinit.log <==
  1369. Ignoring locks on authority file /home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/share/Xauthority.client
  1370. 1 entries read in: 0 new, 1 replacement
  1371. Ignoring locks and writing authority file /home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/share/Xauthority.client
  1372. -rw------- 1 ignacio primarygroup 75 Nov 15 07:11 /home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/share/Xauthority.client
  1373. RandR extension missing
  1374. xinitrc: xinitrc is ready
  1375.  
  1376. ==> /home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/message.log <==
  1377. DEBUGNOTE[07:11:15,033]: xinitrc: Created cookie: #ffff#6d617274696e657a69672e73666f2e636f72702e676f6f676c652e636f6d#:0 MIT-MAGIC-COOKIE-1 77b0ab70e70ccf844dca6415e5afeffa
  1378. x11docker[07:11:15,054]: Output of xrandr on :0
  1379.  
  1380. DEBUGNOTE[07:11:15,071]: storeinfo(): xinitrc=ready
  1381. DEBUGNOTE[07:11:15,248]: waitforlogentry(): dockerrc: Found log entry "xinitrc is ready" in xinit.log.
  1382. DEBUGNOTE[07:11:15,852]: storeinfo(): containerid=96b5d4ad5968bcfaa66c43837fbf75688af3399ff36ab02fa4accdb0bca97862
  1383. DEBUGNOTE[07:11:15,864]: waitforlogentry(): containerrc: Waiting for logentry "containerrootrc=ready" in store.info
  1384. DEBUGNOTE[07:11:16,037]: dockerrc: Container is up and running.
  1385. DEBUGNOTE[07:11:16,083]: dockerrc: 1. check for PID 1: 116038
  1386. DEBUGNOTE[07:11:16,093]: storeinfo(): pid1pid=116038
  1387. DEBUGNOTE[07:11:16,138]: storeinfo(): containerip=192.168.9.2
  1388. DEBUGNOTE[07:11:16,451]: Running containerrootrc: Setup as root in container
  1389.  
  1390. ==> /home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/share/container.log <==
  1391. mkdir: created directory '/var/lib/dbus'
  1392. mkdir: created directory '/var/run/dbus'
  1393. mkdir: created directory '/tmp/.ICE-unix'
  1394. mkdir: created directory '/tmp/.X11-unix'
  1395. mkdir: created directory '/tmp/.font-unix'
  1396. srwxrwxrwx 1 root root 0 Nov 11 15:53 /X0
  1397.  
  1398. ==> /home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/message.log <==
  1399. DEBUGNOTE[07:11:16,468]: containerrootrc: Container libc: glibc
  1400.  
  1401. ==> /home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/share/container.log <==
  1402. lrwxrwxrwx 1 root root 3 Nov 15 15:11 /tmp/.X11-unix/X0 -> /X0
  1403. mkdir: created directory '/fakehome'
  1404. removed '/etc/shadow'
  1405.  
  1406. ==> /home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/message.log <==
  1407. x11docker[07:11:16,485]: Container system ID: ubuntu
  1408.  
  1409.  
  1410. ==> /home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/share/container.log <==
  1411. chown: changing ownership of '/tmp/chowntestfile': Operation not permitted
  1412.  
  1413. ==> /home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/message.log <==
  1414. DEBUGNOTE[07:11:16,504]: storeinfo(): containerrootrc=ready
  1415. DEBUGNOTE[07:11:16,540]: storeinfo(): dockerrc=ready
  1416. DEBUGNOTE[07:11:16,562]: storepid(): Stored pid '116579' of 'dockerstopshell': 116579 pts/4 00:00:00 bash
  1417. DEBUGNOTE[07:11:16,566]: waitforlogentry(): start_docker(): Waiting for logentry "dockerrc=ready" in store.info
  1418. DEBUGNOTE[07:11:16,573]: waitforlogentry(): start_docker(): Found log entry "dockerrc=ready" in store.info.
  1419. DEBUGNOTE[07:11:16,573]: storeinfo(): xtermrc=ready
  1420. DEBUGNOTE[07:11:16,579]: watchpidlist(): Setting pid 116038 on watchlist: pid1pid
  1421. DEBUGNOTE[07:11:16,599]: watchpidlist(): Watching pids:
  1422. 116038 pts/0 00:00:00 tini
  1423. DEBUGNOTE[07:11:16,602]: storepid(): Stored pid '116038' of 'pid1pid': 116038 pts/0 00:00:00 tini
  1424. DEBUGNOTE[07:11:16,691]: Process tree of container: (maybe not complete yet)
  1425. tini(116038)---sh(116085)---sleep(116427)
  1426. DEBUGNOTE[07:11:16,874]: Process tree of x11docker:
  1427. bash(114404)-+-bash(114910)---tail(114912)
  1428. |-bash(114913)---sleep(116448)
  1429. |-bash(114914)---sleep(116452)
  1430. |-bash(114934)
  1431. |-bash(114947)
  1432. |-bash(115527)---bash(116680)---pstree(116681)
  1433. `-bash(115876)
  1434. Lost child of dockerrc (dockerstopshell):
  1435. bash(116579)
  1436. DEBUGNOTE[07:11:16,880]: waitforlogentry(): containerrc: Found log entry "containerrootrc=ready" in store.info.
  1437. DEBUGNOTE[07:11:16,881]: storeinfo(): Stored info:
  1438. cache=/home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372
  1439. stdout=/home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/share/stdout
  1440. stderr=/home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/share/stderr
  1441. x11dockerpid=114404
  1442. xserver=--hostdisplay
  1443. DISPLAY=:0
  1444. XAUTHORITY=/home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/share/Xauthority.client
  1445. XSOCKET=/tmp/.X11-unix/X0
  1446. XDG_RUNTIME_DIR=/run/user/738202
  1447. Xenv= DISPLAY=:0 XAUTHORITY=/home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/share/Xauthority.client XSOCKET=/tmp/.X11-unix/X0 XDG_RUNTIME_DIR=/run/user/738202
  1448. tini=/usr/bin/docker-init
  1449. containername=x11docker_X0_rstudioxhost-verse_30672295372
  1450. runtime=runc
  1451. containeruser=ignacio
  1452. readyforX=ready
  1453. xinitrc=ready
  1454. containerid=96b5d4ad5968bcfaa66c43837fbf75688af3399ff36ab02fa4accdb0bca97862
  1455. pid1pid=116038
  1456. containerip=192.168.9.2
  1457. containerrootrc=ready
  1458. dockerrc=ready
  1459. xtermrc=ready
  1460. DEBUGNOTE[07:11:16,886]: storepid(): Stored pids:
  1461. 114934 watchpidlist
  1462. 114947 watchmessagefifo
  1463. 115527 containershell
  1464. 116579 dockerstopshell
  1465. 116038 pid1pid
  1466. DEBUGNOTE[07:11:16,888]: storeinfo(): x11docker=ready
  1467. DEBUGNOTE[07:11:16,890]: Running containerrc: Unprivileged user commands in container
  1468. DEBUGNOTE[07:11:16,921]: waitforlogentry(): tailstdout: Found log entry "x11docker=ready" in store.info.
  1469. DEBUGNOTE[07:11:16,923]: waitforlogentry(): tailstderr: Found log entry "x11docker=ready" in store.info.
  1470. x11docker[07:11:16,930]: containerrc: Container system:
  1471. NAME="Ubuntu"
  1472. VERSION="18.04.3 LTS (Bionic Beaver)"
  1473. ID=ubuntu
  1474. ID_LIKE=debian
  1475. PRETTY_NAME="Ubuntu 18.04.3 LTS"
  1476. VERSION_ID="18.04"
  1477. HOME_URL="https://www.ubuntu.com/"
  1478. SUPPORT_URL="https://help.ubuntu.com/"
  1479. BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
  1480. PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
  1481. VERSION_CODENAME=bionic
  1482. UBUNTU_CODENAME=bionic
  1483.  
  1484. DEBUGNOTE[07:11:16,941]: containerrc: HOME is empty. Copying from /etc/skel
  1485. x11docker[07:11:16,988]: Container environment:
  1486. container=docker
  1487. DISPLAY=:0
  1488. HOME=/fakehome/ignacio
  1489. HOSTNAME=96b5d4ad5968
  1490. LANG=en_US.UTF-8
  1491. LC_ALL=en_US.UTF-8
  1492. PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
  1493. PWD=/tmp
  1494. SHELL=/bin/bash
  1495. TERM=xterm
  1496. USER=ignacio
  1497. XAUTHORITY=/x11docker/Xauthority.client
  1498. XDG_RUNTIME_DIR=/tmp/XDG_RUNTIME_DIR
  1499. XDG_SESSION_TYPE=x11
  1500.  
  1501. DEBUGNOTE[07:11:17,007]: containerrc: Running container command:
  1502. /bin/sh -c /usr/lib/rstudio/bin/rstudio
  1503.  
  1504.  
  1505. ==> /home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/share/stderr <==
  1506. qt.qpa.xcb: XKeyboard extension not present on the X server
  1507. qt.qpa.xcb: xrender >= 0.5 required to create pixmap cursors
  1508. The X11 connection broke (error 4). Did the X11 server die?
  1509.  
  1510. ==> /home/ignacio/.cache/x11docker/rstudioxhost-verse-30672295372/message.log <==
  1511. DEBUGNOTE[07:11:23,186]: storeinfo(): cmdexitcode=1
  1512. DEBUGNOTE[07:11:23,605]: watchpidlist(): PID 116038 has terminated
  1513. DEBUGNOTE[07:11:23,609]: time to say goodbye (watchpidlist 116038)
  1514. DEBUGNOTE[07:11:23,615]: time to say goodbye (watchpidlist)
  1515. DEBUGNOTE[07:11:23,616]: time to say goodbye (main)
  1516. DEBUGNOTE[07:11:23,623]: Terminating x11docker.
  1517. DEBUGNOTE[07:11:23,627]: time to say goodbye (finish)
  1518. DEBUGNOTE[07:11:23,657]: finish(): Checking pid 116038 (pid1pid): (already gone)
  1519. DEBUGNOTE[07:11:23,687]: finish(): Checking pid 116579 (dockerstopshell): 116579 pts/4 00:00:00 bash
  1520. DEBUGNOTE[07:11:23,722]: finish(): Checking pid 115527 (containershell): (already gone)
  1521. DEBUGNOTE[07:11:23,755]: finish(): Checking pid 114947 (watchmessagefifo): 114947 pts/4 00:00:00 bash
  1522. DEBUGNOTE[07:11:23,790]: finish(): Checking pid 114934 (watchpidlist): (already gone)
  1523. DEBUGNOTE[07:11:24,883]: termpid(): Terminating 114947 (watchmessagefifo): 114947 pts/4 00:00:00 bash
  1524. DEBUGNOTE[07:11:25,012]: x11docker exit code: 0
  1525. DEBUGNOTE[07:11:25,025]: CMD exit code: 1
Advertisement
Add Comment
Please, Sign In to add comment