Difference between packages and Docker images

I understand PPAs but Docker is new to me. How are Docker and Dockerfiles different from Ubuntu's Personal Package Archives (PPA), in terms of package management?

Packages and container images are two ways of distributing software while avoiding conflicts, although they do so using quite different approaches.


Packages are bundles of files that are installed by a package manager such as RPM in RHEL or APT in Ubuntu, which checks to make sure that multiple packages use compatible libraries, do not use the same filenames, etc., before writing the files into one shared filesystem. Users can then start programs directly.

Packages usually come from repositories, and it's up to the people running the repositories to decide which package gets control of each filename, network port, system user ID, etc., as well as which versions of programs get packaged. Packages are built from specification files that list which files should be included.

PPAs (Personal Package Archives) allow individuals and small groups to publish their own packages, for software that hasn't yet been accepted into the main repositories.


Containers are sandboxes in which a program or group of programs can run, isolated from the rest of the system. Thanks to the Linux kernel's support for per-process namespaces, they can only access their own files (with a separate root directory and mount table), network interfaces, etc. (Like a much more comprehensive form of chroot.)

Because a container can only access its own files, there are images, bundles of files that form the initial state of a container. There's no need for the same kind of coordination as there is with packages, because of the sandboxing. Each container includes the particular versions of libraries that it needs.

Docker is a container manager: it starts up containers from specified images, sets up their network interfaces, logs their output, etc.

It also manages images: it can build them from scripts called Dockerfiles, and upload them to and download them from the Docker Hub, a set of (mostly) user-controlled repositories.


The two approaches can be combined: you can create an image based on a minimal RHEL or Ubuntu image, and install packages within it using yum or apt-get running inside a container.

The reverse could also be possible: a package could install an image, though I've not heard of anyone doing that.

And of course the easiest way to install Docker itself is with a package manager.

Likewise, there's still roles for configuration management systems like Puppet and Chef: setting up containers on the inside, or controlling which containers are deployed on which machines and connecting them all together.

Docker and PPAs are completely different things.

It’s not clear to me what you’re asking. Are you asking about packages and containers as ways of distributing software? Containerization and virtualization as ways of isolating programs? The PPA concept came from Ubuntu but how is RHEL 7 specifically relevant?

I decided to ask this question because someone had a question about dockers and how security is managed. PPA is sort of like a personal repo that can be accessed for package management isn’t it? I guess more specifically, is a docker more like a sandbox with an app or suite of apps inside it that can be managed overall like a rpm? The question I have has more of a package management focus.

Hi deltab, your answer made more sense after reading about docker. Docker seems to be the module concept made more modular and portable and more secure (you said “containerization and virtualization”, and “isolating programs”). How are dockers managed? Currently, man pages doesn’t seem to have a good section for a docker. Would a yum provides */docker …type of deal be the method of searching for and then eventually downloading a docker app or suite of apps?

Yes, your descriptions of PPAs and Docker containers are pretty accurate. (Note that Docker is the name of a system that manages containers, as well as the company that makes it.) Okay, so your question is more like “What is the difference between packages and Docker containers?”; I can answer that.

Technology that displaces much of the need for chef and configuration management servers like Bcfg2 for linux paas needs from the looks of it.

Yes, and the other question is how do I manage docker containers? I’m reading the docker site lain gave me.

@paulcube: I’m editing your question to focus it on packages and container images. I think there’s already a question comparing containers and virtual machines.

Can you point me to that question or tell me how you searched for that question? Thanks deltab.