What is Docker?

Docker is a tool that lets you create, share and run applications in isolated containers. You can use Docker to run your apps on any host or local infrastructure without any dependency issues. Docker also allows you to connect your containers with each other through predefined channels. At RunCloud, we want to make it easy for you to manage your cloud infrastructure from one central dashboard.

What is the Difference Between Native and Docker Installations (Containerized)?

Native InstallationDocker Installation
RunCloud needs some software (Nginx, PHP, MariaDB, Redis, beanstalkd) to be installed and running. These software can be either started or stopped.Users can choose whether to run a service or not. It doesn’t matter if the image of the software is present on the server or not. If it isn’t, Docker Image Registry will download the latest image automatically.
Some software (Redis, beanstalkd, etc) don’t get updates after they are installed. To update them automatically we have to allow third-party software updates, which can cause a crash if they are not compatible. This can make the agents stay on an old version.Containerized servers avoid this by checking for the latest image of each service every three hours. They always use the most compatible and updated version of the software.
Supervisor has to be installed on the OS level.Supervisor can’t be containerized due to technical limitations.
The user has to update the file /etc/mysql/conf.d/root.cnf with the new root password for MariaDB if they change it by mistake. Otherwise, they will have trouble accessing MariaDB.MariaDB will sync the root password with the file /etc/mysql/conf.d/root.cnf if the user changes it there. This way, the user can access MariaDB without any problem.
Sometimes, the server may get new updates through agent updates. For example, agent 2.4.2 installed PHP 8.0 on the server even if it was not needed.The user can decide which PHP version they want to use. They can remove it from the stack if they don’t need it anymore. This applies to every other service as well.
When creating a web application, users can see and select from all the PHP versions that are installed on the server.Users have to use the only PHP version that they have set in the stack. They cannot choose any other version.

The Benefits of Using Containerized Instead of Native Inside RunCloud

RunCloud allows you to manage your cloud infrastructure from one central dashboard using either native or containerized installations for your applications. Here are some reasons why you should use a containerized instead of a native installation inside RunCloud:

Security

In native RunCloud, a hacker who compromises your site may also access the root level of your server if you are not skilled enough to prevent it. You should then assume that your whole server is hacked, and not just your web app. But with Docker, you can easily recover from such a situation by deleting your web app and restarting the container.

A containerized installation provides better security than a native installation. If a hacker breaches your site, they can only access the container – and not the host machine. You can easily restore your site by deleting the container and restarting it.

A native installation exposes your entire server to potential attacks, and requires more complex recovery procedures.

Additionally, RunCloud’s Docker integration lets you use its rc-shell (RunCloud Shell) to confine users to their own containers. In this way they can only affect their own container and data.

Performance

A containerized installation has minimal performance overhead compared to a native installation. Docker containers are lightweight and fast, and they don’t require a hypervisor to run. You can also run more containers on the same hardware and save on costs.

Server Management

A containerized installation simplifies your server management tasks. You don’t have to worry about installing and updating software on the OS level, which can cause dependency issues and conflicts. You can keep your server neat and easy to manage by avoiding installing services on the OS level.

For instance, in future, Ubuntu might not support PHP 7.2 and your site still might need it. You’ll face problems because you will have to use an outdated version of Ubuntu. But with a containerized server, you don’t have to worry about the OS version. You can still use older PHP versions as if they were natively installed from Docker.

You can use different versions of software in different containers without affecting each other. You can also easily migrate and upgrade your containers without affecting the host machine.

You will have a hard time upgrading your server if you install everything natively. But with Docker, upgrading will be simple because you don’t depend on shared libraries or other things that can make your server crash.

Same Functionality

RunCloud is designed to be easy to use, so we offer the same features for both the native and the containerized versions. You can switch from a native installation to a containerized one without any hassle.

It’s also easy to learn – you only need to know a few things to use Docker inside RunCloud. Most things are the same as the native version. This makes Docker inside RunCloud more attractive to use.