Virtual Machines vs Containers - containers

Good day to all,
I am currently a student studying computer science and came across the topic on Virtual Machines vs Containers. I have also spent the last 3-4 hours trying to understand Containers. I am able to see the advantages and disadvantages.
However I am not clear, even after hours of research whether Containers acts like VMs. I have configured VMs through VMware in my school where you can initialise different OS in your computer, virtually. The set up takes long though, however for Containers, are you able to have the same interface as VMs? Does it do what VMs do?
Thank you in advance for your help guys.

Well according to GCP:
Containers are lightweight packages of your application code together with dependencies such as specific versions of programming language runtimes and libraries required to run your software services.
Differences with a VM:
-Containers are much more lightweight than VMs
-Containers virtualize at the OS level while VMs virtualize at the hardware level
-Containers share the OS kernel and use a fraction of the memory VMs require
if you want to know more about containers, this links maybe can be useful:
-https://cloud.google.com/learn/what-are-containers
-https://kubernetes.io/docs/concepts/containers/#container-images
And this other maybe help you to understand better the differences between a VM and a Container:
-https://cloud.google.com/compute/docs/containers

Related

Most Efficient ERPNext Installation Method

I'm taking on the challenge of trying to test and develop with ERPNext. I'm new to ERPNext, Docker, Compose, Git, etc. I'm going to need to learn these from scratch.
What is the general most efficient way to install ERPNext (for testing purposes for now) on either a Mac or Windows computer?
Below are my criteria:
I need to be able to create backups and transfer them and implement
them to a different computer if necessary.
I'm also attempting to do this in as budget-friendly way as
possible. I'm probably not going to be spending money on hosting or
anything of the sort (completely free is the goal).
ERPNext needs to be easily upgradeable/downgradeable to different versions
The implementation of ERPNext will eventually need custom code/integrations
I've read that there are different methods of using ERPNext, depending on the OS, including VirtualBox, and Windows Subsystem for Linux. I'm looking for the fastest, least resource-hungry, and most versatile solution
I will check out the official ERPNext documentation, but I would also like to know other people's personal experiences and methods.
This is a big task to take on, so I'm looking for some advice before delving into this.
You can use frappe_docker setup to quickly get the environment up and running.
https://github.com/frappe/frappe_docker
If you want least resource hungry option, you can setup a site using bench.
https://github.com/frappe/bench

How to create a new system or board to be emulated by QEMU

I am new to QEMU, but to support a system modeling project, I try to figure out how to emulate a new ARM microcontroller(M33 based) SOC which is not on the supported system list. I have checked on the QEMU documentation: https://qemu-project.gitlab.io/qemu/about/index.html but was not able to find directions to construct and add a new system model. I would appreciate very much if someone can point me to the right documentation, or suggest steps I can follow to generate the new model for emulation.
I would highly suggest using Renode rather than Qemu as it's better suited for microcontrollers and it's well documented and actively maintained on GitHub.
There is no documentation for how to write new machine models for QEMU. The best advice is to look at the source code for an existing machine type that seems similar to the one you want to add. Avoid looking at machine types that have been added to QEMU a long time ago -- they are often written in an older style or using older APIs which are no longer recommended for new code.
As a very rough rule of thumb, you should assume that a new machine model is about as much effort as porting an operating system to that new hardware. (Roughly, a device model is about as much code as a device driver.) Depending on how much functionality you need, you may be able to leave some or many devices in your SoC unimplemented -- the absolute minimum is usually something like a UART and a timer. You'll need documentation of the SoC (technical reference manual or similar, with detailed descriptions of the devices down to the register level).
(Out of curiosity, what is the M33-based SoC?)

Turn-key docker-compose solution to start developing with Node.js?

I am looking for a simple, no frills, docker-compose based solution so I can start playing with some common tools, without having to devote lots of time into learning to configure the infrastructure. It should pull from the official images of the included projects, to make things super standardized and easy to move forward.
Ideally, I can have local directories mounted, so I can just edit my code directly, and have it served up through the container. Even better is to have the database stored similarly, in case I wind up liking it and want to port it into a project.
Edit:
Since it seems nobody gets it. The reasons for wanting this are:
No local installation of tools to pollute my development environment.
No rebuilding of containers as I change my code, learn, and test out features.
Not using any exotic features or special configuration, so official containers from the distributions should be sufficient.
Clean roadmap to scaling up to a real project. Acts as a template going forward.
Not spending time on tasks that are not relevant to the final goal (configuring a platform that may never be used).
It seems clear to me that a significant portion of development should use containerized runtimes for building/testing, without installing things on the real host. That would avoid a lot of hassles and conflicts, and allows easy revisiting of old development environments.
This seems like an obvious thing that should be readily available, just like the standard images that many projects provide.
As I am just looking to evaluate things, I'm not that picky about tools. A development language/framework (Node.js), a database (MySQL), and web server capability (anything). If it's PostgreSQL, MongoDB, whatever. I just don't want to spend days wrestling with setting things up, before I actually get to start evaluating the platform.
I tried asking this over on DevOps a few days ago. All I got was one snarky and unhelpful comment, which has since been deleted.
I have tried following a bunch of different tutorials around the web and answers given here, but they all fail, and I really don't want to get sidetracked debugging them.
It seems like this would be a common template for starting many projects, regardless of complexity or expertise. So, I'm really surprised I can't find it. It also seems like a good way to lure in new users, which should incentivize project maintainers to have these.

Which server option is widely used with JRuby on Rails?

I am experimenting JRuby on Rails and need some guidance/tips in choosing the server. I have used nginx (and passenger) for my RoR in the past. JRuby wiki page Servers provide a lot of options and I have no experience in any of them.
What I am looking for is a simple to install, easy to scale server or the one widely used (so that I can find solutions if I am stuck)
I do realize this might be a broad question and the answer would be "it depends..." but would appreciate some pointers.
I might be biased being on the Trinidad team, but I still think it's top ... esp. as it handles high concurrency well while still being much lighter than TorqueBox (which I would also recommend if you do want something beyond just a web server e.g. built-in jobs but be aware that some of it is TB/JRuby specific). Most other options mentioned are Java web servers, which you can rule out if you do not want to install a Java server, warbling your application and deploying it as a .war file.
p.s. for the (next) version 1.5.0 re-deploys are to be revisited and one should be able to do some (memory leak-free) zero-down time deployments.

Terminology for web app running on hardware

I am trying to investigate how to develop an UI application that will run directly on hardware. This will be very much like when you access the web based application within your router.
I don't really know how what keywords and terminology to use so that i can search tutorials on the net.
Can anybody give me the correct terms? If you have tutorial suggestions, they are welcome as well.
Embedded may be the term you are looking for.
Appliance is another term along with Yagoo's embedded. Typically hardware appliances run full stacks including LAMP.
Many appliances are based off of stripped down Linux or FreeBSD kernels running Apache or a lightweight httpd.
There are actually specific Linux distributions that are tuned for this. Google "linux appliance distribution" and "small linux distribution"
Be advised, if it is commercial, Linux and the GNU stack may present an issue you must deal with, depending on how it is modified. FreeBSD does not have this license limitation.