By no means am I a developer, but I can try to explain some things...

A profile is a collection of packages.  Each user on the system has a profile of his packages.  So Jerry has a profile of Emacs 24, Iceweasel 50, etc.  Jill also uses the system, but she has packages Tetris 5.4, Emacs 23, etc.  Jerry's packages and Jill's packages are independent of one another and cause no conflicts. 

There is also a system profile.  This is the collection of packages that boots your system.  For example if Jerry uses gnome, usually his profile will not contain the gnome program.  Instead gnome is found under the system profile.

The root filesystem is everything under /  right? 

chroot is a way of letting applications thing that they are running with full root privileges when they are not.

A container restricts what an application can access.  Firefox for example should only be able to access your Downloads directory.  It should not be able to read your gpg keys.  One can run Firefox in a container to limit the things that Firefox can access.

docker I believe is a way of running a web application.  Web application development is getting really hard these days.  Your application can have js dependencies, python dependencies, etc.  Each language has its own package manager, and if one packages gets updated your web application can refuse to work.  Docker just freezes everything so that it works.  Then you run that frozen image.

lxc?  No idea.


On Mon, Jan 1, 2018, at 11:31 AM, Amirouche Boubekki wrote:
Héllo,

It's a long time I did not read the manual. So I read he manual this afternoon.

I have to say that I don't really understand some guix concepts and how they map to the rest of the world.

Can someone try to explain to me how the following concepts are related to each other:

Environments, profiles, gc roots, root filesystem, chroot, containers, docker and lxc

TIA