Docker Community Forums

Share and learn in the Docker community.

Do I need/Should I use Docker?


Okay, in advance of the actual question: I tried to put tags for basically being new to Docker, and that my question is from complete ignorance (for lack of a more politically correct term). The optional tag box read “search or create”, but I couldn’t create the tags I felt were useful in describing my situation.

Onto the real Nitty Gritty (not to be confused with an NHL mascot).

I’m looking to write a computer game. I’m a Windows developer and have plenty of experience using C++ in Windows, and I’m reading up on DirectX 12 right now (I’m creating my own game engine, as well, as opposed to using Unreal or Unity…where all the functionality implied by Docker is supposedly built in). However, once the game is completed, I want the game to also run on Linux clients and the game server to run on a Linux based server. In short: I want to develop the game using Visual Studio 2017 and deploy on Windows and Linux. I want to do it this way because I do not want to deal with make files (mostly) or trying to learn the Vulkan graphics libraries, since DirectX is more familiar to me. I think Vulkan works on Windows as well, and if, ultimately, that will make a Docker solution for my game more stable, then I’ll bite that bullet and learn Vulkan as well. I’d rather not, as I’m already looking at a LONG development time as it is.

But wait, let me try to make it more messy.

In order to test the system, since I don’t have an actual desktop or server, but a rather simple “gamers” laptop, I’ve partitioned my non-SSD hard drive into sections so I can install and run VirtuaBox, which will ultimately have the testing environment for the Linux “versions” of the game, as well as a Linux server for the game server and database.

So, to save myself the seemingly lengthy process of learning to use Docker, my question is: Should I use Docker for any of this, and do I need Docker for any of this (aside from Unreal and Unity already do this)? Specifically:

  1. Do I need/Should I use Docker for the final product?
  2. Will it be possible to ship a Docker “Shell” with the game so it can be deployed in any environment (supposedly, Windows 10 can support Docker without any additional install files…but I don’t believe that)?

I understand that the forum MIGHT be a little biased, but I will take that into account with any answers I read. I’m sure this forum sees a similar question to this often, so if I need to just go somewhere and read, please provide a link to the forum articles that I should have found and didn’t before I posted this question. Of course, I don’t suspect that video game design and development is exactly what the developers had in mind when Docker was created, but if there is something that I should have read already, send me there.

(Raj Chaudhuri) #2

No, Docker will probably not help you much. Based on your description, the only place where it might be appropriate is the game server. If you intend to host the game server at scale, especially on cloud platforms, packaging it as a docker container has advantages. For game clients, not so much.


Thank you for your input. Perhaps I have an incorrect idea of what Docker is. I understood that it isn’t a virtual machine, mainly from reading a few articles on this site and watching a video about Docker Developer. The way I understood Docker is analogous to a dynamic link library or the Java Virtual Machine: Docker is used, in my mind, to create dynamic libraries, except those libraries could be of any code length and could be entire programs as opposed to just methods. Compiling under the Docker Engine creates some type of bytecode that can then be moved to any machine that has Docker Engine installed.

After reading your reply, I realized that a lot of the discussion of Docker is server based, where clients pull down these sections of code to run on their machines, regardless of that machine’s OS or environment. Developers push code to a server, or the Docker main “vault” to be pulled later by other users for as is execution, or for additional, customized development.

I really don’t like make files…but I guess that is where I’ll need to go to get this done right. Thank you again.