Linux - Docker Volume Mapping

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • Linux - Docker Volume Mapping

      Liebe Forumuser,

      ich habe derzeit ein Problem bei Docker mit dem Volume Mapping. Heißt ich schaffe es nicht, Daten, die in dem Container erstellt werden auf meinem Hostsystem anzeigenzulassen.
      Vielleicht hat der Ein oder Andere von euch die Lösung für mein Problem. Bei dem Volume Mapping schafft er es immerhin den Ordner auf meinem Hostsystem anzulegen jedoch nicht die Dateien rüberzuschieben, die
      eigentlich in den Ordner gehören.
      Um euch das Ganze zu zeigen wo mein Problem liegt, hier mal der gesamte Code der Dateien in dem Dockerimage:

      Dockerfile:
      Spoiler anzeigen

      Quellcode

      1. FROM ubuntu:16.04
      2. MAINTAINER Max Gonzih <gonzih at gmail dot com>
      3. ENV USER csgo
      4. ENV HOME /home/$USER
      5. ENV SERVER $HOME/server
      6. RUN apt-get -y update \
      7. && apt-get -y upgrade \
      8. && apt-get -y install lib32gcc1 curl net-tools lib32stdc++6 \
      9. && apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* \
      10. && useradd $USER \
      11. && mkdir $HOME \
      12. && chown $USER:$USER $HOME \
      13. && mkdir $SERVER
      14. ADD ./csgo_ds.txt $SERVER/csgo_ds.txt
      15. ADD ./update.sh $SERVER/update.sh
      16. ADD ./autoexec.cfg $SERVER/csgo/csgo/cfg/autoexec.cfg
      17. ADD ./server.cfg $SERVER/csgo/csgo/cfg/server.cfg
      18. ADD ./csgo.sh $SERVER/csgo.sh
      19. RUN chown -R $USER:$USER $SERVER
      20. USER $USER
      21. RUN curl http://media.steampowered.com/client/steamcmd_linux.tar.gz | tar -C $SERVER -xvz \
      22. && $SERVER/update.sh
      23. EXPOSE 27015/udp
      24. VOLUME ["/home/*"]
      25. WORKDIR /home/$USER/server
      26. ENTRYPOINT ["./csgo.sh"]
      27. CMD ["-console" "-usercon" "+game_type" "0" "+game_mode" "1" "+mapgroup" "mg_active" "+map" "de_cache"]
      Alles anzeigen







      csgo_ds.txt:
      Spoiler anzeigen

      Quellcode

      1. login anonymous
      2. force_install_dir ./csgo
      3. app_update 740 validate
      4. quit

      update.sh
      Spoiler anzeigen

      Shell-Script

      1. #!/bin/sh
      2. cd $HOME/server
      3. ./steamcmd.sh +runscript csgo_ds.txt


      autoexec.cfg
      Spoiler anzeigen

      Quellcode

      1. log on //This is set to turn on logging! Don't put this in your server.cfg
      2. hostname "[EU]NTenic Arena 1v1 Server [128Tick][24/7]"
      3. rcon_password "meinpasswort" //
      4. sv_password "" //Only set this if you intend to have a private server!
      5. sv_cheats 0 //This should always be set, so you know it's not on
      6. sv_lan 0 //This should always be set, so you know it's not on


      server.cfg
      Spoiler anzeigen

      Quellcode

      1. sv_maxrate 0
      2. sv_minrate 30000
      3. sv_maxcmdrate 128
      4. sv_mincmdrate 128


      csgo.sh
      Spoiler anzeigen

      Shell-Script

      1. #!/bin/sh
      2. cd $HOME/server
      3. csgo/srcds_run -game csgo -tickrate 128 -autoupdate -steam_dir ~/server -steamcmd_script ~/server/csgo_ds.txt [email protected] +sv_setsteamaccount 19226EB64814CDBF9A11B6491324E390 -net_port_try 1




      MfG Hadrev

      PS: Bei Informationsmangel einfach nachfragen.
    • Problem ist, dass du mit dem RUN-Befehl, also zur Zeit des Erstellen des Images (nicht Container!), den Home- und Serverordner erstellst und dann beim Erstellen des Containers nochmal versuchst das VOLUME darüber zu mounten, obwohl der Ordner im Container schon existiert. Das geht nicht.

      Grundsätzlich ist die Idee von Docker außerdem, dass du die Anwendungsdateien von den eigentlichen Daten (z.B. Konfigurationsdateien) trennst, sodass du zum Updaten das Image austauschst, indem du den Container neu erstellst und dann die Konfigurationsdateien über das Volume übernimmst.

      Konkret heißt das: Dein Volume ist sowas wie VOLUME ["/home/csgo/server/csgo/csgo/cfg"] (sofern die Configdateien permanent gespeichert werden sollen) und alles andere gehört fest zum Image.

      Zudem ist ENTRYPOINT eher für Binaries (z.B. Shells) vorgesehen. Dementsprechend sollte "./csgo.sh" eher mit in den CMD-Befehl rein und die ENTRYPOINT-Anweisung weg.
    • Da ich mich mit diesem Thema nur oberflächlig beschäftige und selber nicht in der Lage bin (schätze ich mal) eingene Dinge zu schreiben, habe ich mir das ganze fertig gepullt und lediglich versucht das ganze zu mappen.
      Allerdings halt ohne Erfolg.
      Hättest du Zeit und die Geduld mit mir das ganze so anzupassen, dass es funktioniert? Natürlich möchte ich dabei auch ein wenig was lernen, da ich zum Beispiel sowas wie mit dem ENTRYPOINT nicht weiß.

      MfG Hadrev

      //Edit: Ich verstehe was in den einzelnen Dateien gemacht wird. Aber wie gesagt, ich bin nicht in der Lage selber etwas fertig zu schreiben, da ich mich mit dem Thema nicht genug auseinander gesetzt habe.

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Hadrev ()

      Beitrag von Plexusz ()

      Dieser Beitrag wurde von sbx320 gelöscht ().