Jump to content

Docker computer application

LIQUIDFOX00200

Assuming you can get it working properly (which I and pretty much all of my friends were unable to) it can solve dependency hell for things like Python... alternatively (which is what I ended up going with) pycharm is really good at figuring out what dependencies you need and can semi-automatically fetch them for you.

Link to comment
Share on other sites

Link to post
Share on other sites

You can run it for development, you set the source build it into an image and run.

 

As you're using an image you don't need to install anything on the host. At work we use node. You could build an image and run our apps without installing node.

 

Also means it's the same code in development and production, assuming you're launching using docked images.

                     ¸„»°'´¸„»°'´ Vorticalbox `'°«„¸`'°«„¸
`'°«„¸¸„»°'´¸„»°'´`'°«„¸Scientia Potentia est  ¸„»°'´`'°«„¸`'°«„¸¸„»°'´

Link to comment
Share on other sites

Link to post
Share on other sites

Docker is a software that allows programs to run in Docker containers.

For all intents and purposes containers act as a virtual machine.

They build on top of operating system features to provide isolation instead of parsing machine code like a virtual machine would do.

This means that Docker containers are more efficient than virtual machines but they do not provide the same level of abstraction (you cannot run a windows ".exe" file in a linux docker container and vice versa).

 

 

The main advantages (compared to no Docker) are:

  • Security: the app is completely separated from the rest of the system. So even if the code is malicious (or hacked in some way) it cannot access files and services outside the container.
  • Portability: it's like shipping a virtual machine image containing your software and all its dependencies. No more problems with users having a different OS, compiler or the wrong version of a dependency (no more "it works on my machine").
  • Ease of deployment: because of the previously mentioned system. Setting up a docker container is as easy as downloading the image and running it. No more problems with installing dependencies.

 

 

Desktop: Intel i9-10850K (R9 3900X died 😢 )| MSI Z490 Tomahawk | RTX 2080 (borrowed from work) - MSI GTX 1080 | 64GB 3600MHz CL16 memory | Corsair H100i (NF-F12 fans) | Samsung 970 EVO 512GB | Intel 665p 2TB | Samsung 830 256GB| 3TB HDD | Corsair 450D | Corsair RM550x | MG279Q

Laptop: Surface Pro 7 (i5, 16GB RAM, 256GB SSD)

Console: PlayStation 4 Pro

Link to comment
Share on other sites

Link to post
Share on other sites

6 hours ago, mathijs727 said:

Docker is a software that allows programs to run in Docker containers.

For all intents and purposes containers act as a virtual machine.

They build on top of operating system features to provide isolation instead of parsing machine code like a virtual machine would do.

This means that Docker containers are more efficient than virtual machines but they do not provide the same level of abstraction (you cannot run a windows ".exe" file in a linux docker container and vice versa).

 

 

The main advantages (compared to no Docker) are:

  • Security: the app is completely separated from the rest of the system. So even if the code is malicious (or hacked in some way) it cannot access files and services outside the container.
  • Portability: it's like shipping a virtual machine image containing your software and all its dependencies. No more problems with users having a different OS, compiler or the wrong version of a dependency (no more "it works on my machine").
  • Ease of deployment: because of the previously mentioned system. Setting up a docker container is as easy as downloading the image and running it. No more problems with installing dependencies.

 

 

And with aws fargate there is need to run then in a vpc. At work I've been tasked with making all our services to docker.

                     ¸„»°'´¸„»°'´ Vorticalbox `'°«„¸`'°«„¸
`'°«„¸¸„»°'´¸„»°'´`'°«„¸Scientia Potentia est  ¸„»°'´`'°«„¸`'°«„¸¸„»°'´

Link to comment
Share on other sites

Link to post
Share on other sites

6 hours ago, mathijs727 said:

The main advantages (compared to no Docker) are:

  • Security: the app is completely separated from the rest of the system. So even if the code is malicious (or hacked in some way) it cannot access files and services outside the container.
  • Portability: it's like shipping a virtual machine image containing your software and all its dependencies. No more problems with users having a different OS, compiler or the wrong version of a dependency (no more "it works on my machine").
  • Ease of deployment: because of the previously mentioned system. Setting up a docker container is as easy as downloading the image and running it. No more problems with installing dependencies.

You'd think this, but:

  • People store their entire databases, configurations, etc. inside docker containers too, rendering that security completely moot.
  • If you're hosting a website through Docker, like Discourse, you have to proxy INTO the container's server using something like Nginx, which begs the question of why you need a whole virtual machine running 2 different database servers if you STILL have to manually set up a web server.
  • Ease of Deployment is moot in my eyes as well. An install script would be able to do the exact same things, interactively, without the need to fuck around with cryptic YML files written by a point-and-click game developer; the names of configuration keys only make sense to them, and there's no hints about what the keys do.

Docker is a GOOD idea when done properly. I have seen zero applications in Docker containers that are done properly.

If an app's configuration is so complex that it needs to completely isolate me from "messing it up" then it's too complicated. Simplify it. Part of the reason I absolutely hate the push towards MVC and MVVM/Single-page web applications that's happened in the past few years. Sure it looks fantastic, and sure the "modeling" part of MVC is great, but the rest of it just overly complicates things that were previously very easy to achieve. Docker is the exact same way. It looks great and shiny but it's just complicating things that should be simple.

Link to comment
Share on other sites

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×