{"id":36010,"date":"2024-12-03T18:12:44","date_gmt":"2024-12-03T17:12:44","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/?p=36010"},"modified":"2024-12-03T18:12:47","modified_gmt":"2024-12-03T17:12:47","slug":"freebsd-basics-4-jails","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/freebsd-basics-4-jails\/","title":{"rendered":"FreeBSD basics \u2013 4 \u2013 Jails"},"content":{"rendered":"\n<p>Now that we know how to <a href=\"https:\/\/www.dbi-services.com\/blog\/freebsd-basics-1-the-first-steps\/\" target=\"_blank\" rel=\"noreferrer noopener\">get started with FreeBSD<\/a>, how to <a href=\"https:\/\/www.dbi-services.com\/blog\/freebsd-basics-2-users-groups\/\" target=\"_blank\" rel=\"noreferrer noopener\">manage users and groups<\/a>, and how to <a href=\"https:\/\/www.dbi-services.com\/blog\/freebsd-basics-3-services\/\" target=\"_blank\" rel=\"noreferrer noopener\">work with services<\/a>, we&#8217;ll look a bit into <a href=\"https:\/\/docs.freebsd.org\/en\/books\/handbook\/jails\/\" target=\"_blank\" rel=\"noreferrer noopener\">Jails<\/a> today. But before we do this, let&#8217;s look at what we have in Linux today when it comes to containerization and virtual machines. Obviously we can manage virtual machines, with either <a href=\"https:\/\/linux-kvm.org\/page\/Main_Page\" target=\"_blank\" rel=\"noreferrer noopener\">KVM<\/a> or <a href=\"https:\/\/xenproject.org\/\" target=\"_blank\" rel=\"noreferrer noopener\">Xen<\/a>. This is well known and there are several platforms around those which help in managing whole clusters of virtual machines, e.g. like <a href=\"https:\/\/www.proxmox.com\/en\/\" target=\"_blank\" rel=\"noreferrer noopener\">Proxmox<\/a>. The more recent trend is containers, which also comes with various options like <a href=\"https:\/\/linuxcontainers.org\/lxc\/introduction\/\">LXC<\/a>, <a href=\"https:\/\/www.docker.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">Docker<\/a>, <a href=\"https:\/\/kubernetes.io\/\">Kubernetes<\/a>,  <a href=\"https:\/\/www.rancher.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">Rancher<\/a>, <a href=\"https:\/\/www.redhat.com\/en\/technologies\/cloud-computing\/openshift\" target=\"_blank\" rel=\"noreferrer noopener\">OpenShift<\/a>, and, and, and. This is somehow all summarized under &#8220;Cloud Native&#8221; and there is the <a href=\"https:\/\/www.cncf.io\/\" target=\"_blank\" rel=\"noreferrer noopener\">Cloud Native Computing Foundation (CNCF)<\/a> which is a kind of umbrella for all those <a href=\"https:\/\/www.cncf.io\/projects\/\" target=\"_blank\" rel=\"noreferrer noopener\">projects<\/a>. In FreeBSD, there are no containers but there are Jails, which you might see as sitting in the middle of virtual machines and containers, but you can do virtual machines (or virtualization) on FreeBSD (this will be a topic of another post).<\/p>\n\n\n\n<p>Jails build on top of <a href=\"https:\/\/man.freebsd.org\/cgi\/man.cgi?query=chroot&amp;apropos=0&amp;sektion=0&amp;manpath=FreeBSD+14.2-RELEASE+and+Ports&amp;arch=default&amp;format=html\">chroot<\/a> (which is also known on Linux) but do not only limit access to the file system but also other resources such as network or processes. In short, Jails provide isolation from the host system. How much isolation you&#8217;ll get depends on the type of Jail you&#8217;re using. The <a href=\"https:\/\/docs.freebsd.org\/en\/books\/handbook\/jails\/\">FreeBSD handbook<\/a> provides a good overview of the advantages and disadvantages of the different types of Jails. In short, the types are:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Thick &#8211; Highest level of isolation<\/li>\n\n\n\n<li>Thin &#8211; Reduced isolation<\/li>\n\n\n\n<li>Service &#8211; No file system isolation<\/li>\n<\/ul>\n\n\n\n<p>The goal of this post is to create a &#8220;thin&#8221; Jail, because it is very lightweight and we&#8217;ll use thin Jails in a later post to provide PostgreSQL instances. Think of this as a simple PostgreSQL as a service.<\/p>\n\n\n\n<p>Before we can create Jails, we need to enable them with &#8220;sysrc&#8221;:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [1,3]; title: ; notranslate\" title=\"\">\nroot@freebsd14:~ $ sysrc jail_enable=&quot;YES&quot;\njail_enable: NO -&gt; YES\nroot@freebsd14:~ $ sysrc jail_parallel_start=&quot;YES&quot;\njail_parallel_start: NO -&gt; YES\n<\/pre><\/div>\n\n\n<p>The second parameter above is not really required for running Jails, but it enables parallel startup of the Jails when the system is booting, what is usually what you want (except you have dependencies between the Jails).<\/p>\n\n\n\n<p>It doesn&#8217;t matter where on disk you put the Jails, but it is recommend to create separate file systems for them, e.g.:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [1,2,3,4]; title: ; notranslate\" title=\"\">\nroot@freebsd14:~ $ zfs create -o mountpoint=\/usr\/local\/jails zroot\/jails\nroot@freebsd14:~ $ zfs create zroot\/jails\/media\nroot@freebsd14:~ $ zfs create zroot\/jails\/templates\nroot@freebsd14:~ $ zfs create zroot\/jails\/containers\n<\/pre><\/div>\n\n\n<p>&#8220;\/usr\/local\/jails zroot\/containers&#8221; will contain the Jails, and &#8220;\/usr\/local\/jails\/templates&#8221; will contain the template for the thin Jail(s) we&#8217;ll be creating (usually you would put those on separate disks, and not in the root zpool, of course). &#8220;media&#8221; is the download of the FreeBSD version we&#8217;ll be using. I real live you most probably want a file system per Jail and you&#8217;d also put some quotas on them.<\/p>\n\n\n\n<p>The template for the new Jails is actually a ZFS snapshot, but before we can do this we need to prepare it. The first step is to create a new data set (or file system) which will contain the files for the version of FreeBSD we want the Jail to run on:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [1]; title: ; notranslate\" title=\"\">\nroot@freebsd14:~ $ zfs create -p zroot\/jails\/templates\/14.1-RELEASE\n<\/pre><\/div>\n\n\n<p>The next step is to download the userland (everything around, but not the kernel itself). This goes into the media data set:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [1]; title: ; notranslate\" title=\"\">\nroot@freebsd14:~ $ fetch https:\/\/download.freebsd.org\/ftp\/releases\/amd64\/amd64\/14.1-RELEASE\/base.txz -o \/usr\/local\/jails\/media\/14.1-RELEASE-base.txz\n<\/pre><\/div>\n\n\n<p>Extract that into the data set we&#8217;ve created for the template:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [1,2]; title: ; notranslate\" title=\"\">\nroot@freebsd14:~ $ tar -xf \/usr\/local\/jails\/media\/14.1-RELEASE-base.txz -C \/usr\/local\/jails\/templates\/14.1-RELEASE --unlink\nroot@freebsd14:~ $ ls -l \/usr\/local\/jails\/templates\/14.1-RELEASE\ntotal 86\n-rw-r--r--   2 root wheel 1011 May 31  2024 .cshrc\n-rw-r--r--   2 root wheel  495 May 31  2024 .profile\n-r--r--r--   1 root wheel 6109 May 31  2024 COPYRIGHT\ndrwxr-xr-x   2 root wheel   49 May 31  2024 bin\ndrwxr-xr-x  14 root wheel   68 May 31  2024 boot\ndr-xr-xr-x   2 root wheel    2 May 31  2024 dev\ndrwxr-xr-x  30 root wheel  103 May 31  2024 etc\ndrwxr-xr-x   4 root wheel   78 May 31  2024 lib\ndrwxr-xr-x   3 root wheel    5 May 31  2024 libexec\ndrwxr-xr-x   2 root wheel    2 May 31  2024 media\ndrwxr-xr-x   2 root wheel    2 May 31  2024 mnt\ndrwxr-xr-x   2 root wheel    2 May 31  2024 net\ndr-xr-xr-x   2 root wheel    2 May 31  2024 proc\ndrwxr-xr-x   2 root wheel  150 May 31  2024 rescue\ndrwxr-x---   2 root wheel    7 May 31  2024 root\ndrwxr-xr-x   2 root wheel  150 May 31  2024 sbin\nlrwxr-xr-x   1 root wheel   11 May 31  2024 sys -&gt; usr\/src\/sys\ndrwxrwxrwt   2 root wheel    2 May 31  2024 tmp\ndrwxr-xr-x  14 root wheel   14 May 31  2024 usr\ndrwxr-xr-x  24 root wheel   24 May 31  2024 var\n<\/pre><\/div>\n\n\n<p>What we need in addition are the DNS and timezone files (just copy them from the host system):<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [1,2]; title: ; notranslate\" title=\"\">\nroot@freebsd14:~ $ cp \/etc\/resolv.conf \/usr\/local\/jails\/templates\/14.1-RELEASE\/etc\/resolv.conf\nroot@freebsd14:~ $ cp \/etc\/localtime \/usr\/local\/jails\/templates\/14.1-RELEASE\/etc\/localtime\n<\/pre><\/div>\n\n\n<p>As we want the Jails to start from the latest patch level, let&#8217;s patch the template:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [1]; title: ; notranslate\" title=\"\">\noot@freebsd14:~ $ freebsd-update -b \/usr\/local\/jails\/templates\/14.1-RELEASE\/ fetch install\nsrc component not installed, skipped\nLooking up update.FreeBSD.org mirrors... 3 mirrors found.\nFetching metadata signature for 14.1-RELEASE from update2.freebsd.org... done.\nFetching metadata index... done.\nInspecting system... done.\nPreparing to download files... done.\nThe following files will be updated as part of updating to\n14.1-RELEASE-p6:\n\/bin\/freebsd-version\n\/lib\/libc++.so.1\n...\nScanning \/usr\/local\/jails\/templates\/14.1-RELEASE\/usr\/share\/certs\/trusted for certificates...\n done.\n<\/pre><\/div>\n\n\n<p>Now we have the template ready and create a read only ZFS snapshot out of it:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [1,2]; title: ; notranslate\" title=\"\">\nroot@freebsd14:~ $ zfs snapshot zroot\/jails\/templates\/14.1-RELEASE@base\nroot@freebsd14:~ $ zfs list -t snapshot\nNAME                                       USED  AVAIL  REFER  MOUNTPOINT\nzroot\/ROOT\/default@2024-11-26-10:56:43-0   353M      -  1.46G  -\nzroot\/jails\/templates\/14.1-RELEASE@base      0B      -   451M  -\n<\/pre><\/div>\n\n\n<p>All that needs to be done to create a new Jail is to clone this snapshot, e.g.:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [1,2]; title: ; notranslate\" title=\"\">\nroot@freebsd14:~ $ zfs clone zroot\/jails\/templates\/14.1-RELEASE@base zroot\/jails\/containers\/thinjail1\nroot@freebsd14:~ $ ls -l \/usr\/local\/jails\/containers\/thinjail1\/\ntotal 86\n-rw-r--r--   2 root wheel 1011 May 31  2024 .cshrc\n-rw-r--r--   2 root wheel  495 May 31  2024 .profile\n-r--r--r--   1 root wheel 6109 May 31  2024 COPYRIGHT\ndrwxr-xr-x   2 root wheel   49 Dec  2 13:40 bin\ndrwxr-xr-x  15 root wheel   69 Dec  2 13:40 boot\ndr-xr-xr-x   2 root wheel    2 May 31  2024 dev\ndrwxr-xr-x  30 root wheel  105 Dec  2 13:40 etc\ndrwxr-xr-x   4 root wheel   78 Dec  2 13:40 lib\ndrwxr-xr-x   3 root wheel    5 May 31  2024 libexec\ndrwxr-xr-x   2 root wheel    2 May 31  2024 media\ndrwxr-xr-x   2 root wheel    2 May 31  2024 mnt\ndrwxr-xr-x   2 root wheel    2 May 31  2024 net\ndr-xr-xr-x   2 root wheel    2 May 31  2024 proc\ndrwxr-xr-x   2 root wheel  150 Dec  2 13:40 rescue\ndrwxr-x---   2 root wheel    7 May 31  2024 root\ndrwxr-xr-x   2 root wheel  150 Dec  2 13:40 sbin\nlrwxr-xr-x   1 root wheel   11 May 31  2024 sys -&gt; usr\/src\/sys\ndrwxrwxrwt   2 root wheel    2 May 31  2024 tmp\ndrwxr-xr-x  14 root wheel   14 May 31  2024 usr\ndrwxr-xr-x  24 root wheel   24 May 31  2024 var\n<\/pre><\/div>\n\n\n<p>Both, the template and the new Jail just consume 451MB of disk space:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [1,6,7]; title: ; notranslate\" title=\"\">\nroot@freebsd14:~ $ df -h | grep jails\nzroot\/jails                            23G     96K     23G     0%    \/usr\/local\/jails\nzroot\/jails\/media                      24G    199M     23G     1%    \/usr\/local\/jails\/media\nzroot\/jails\/templates                  23G     96K     23G     0%    \/usr\/local\/jails\/templates\nzroot\/jails\/containers                 23G     96K     23G     0%    \/usr\/local\/jails\/containers\nzroot\/jails\/templates\/14.1-RELEASE     24G    451M     23G     2%    \/usr\/local\/jails\/templates\/14.1-RELEASE\nzroot\/jails\/containers\/thinjail1       24G    451M     23G     2%    \/usr\/local\/jails\/containers\/thinjail1\n<\/pre><\/div>\n\n\n<p>The final step is the configuration of the Jail, but this is also pretty straight forward in simple cases. The configuration for our Jail looks like this:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [1]; title: ; notranslate\" title=\"\">\nroot@freebsd14:~ $ cat \/etc\/jail.conf.d\/thinjail1.conf \nthinjail1 {\n  # STARTUP\/LOGGING\n  exec.start = &quot;\/bin\/sh \/etc\/rc&quot;;\n  exec.stop = &quot;\/bin\/sh \/etc\/rc.shutdown&quot;;\n  exec.consolelog = &quot;\/var\/log\/jail_console_${name}.log&quot;;\n\n  # PERMISSIONS\n  allow.raw_sockets;\n  exec.clean;\n  mount.devfs;\n\n  # HOSTNAME\/PATH\n  host.hostname = &quot;${name}&quot;;\n  path = &quot;\/usr\/local\/jails\/containers\/${name}&quot;;\n\n  # NETWORK\n  ip4.addr = 192.168.122.160;\n  interface = vtnet0;\n}\n<\/pre><\/div>\n\n\n<p>That&#8217;s it. The most important point for now is the network configuration: What we want is a new virtual IP address on top of our &#8220;vtnet0&#8221; interface. This is the IP address clients will use to connect to this Jail. Of course the Jail needs a name, a location and  we want the normal startup and shutdown to happen with rc (we&#8217;ll look at the other parameters in a later post).<\/p>\n\n\n\n<p>Starting up the Jail:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [1,3]; title: ; notranslate\" title=\"\">\nroot@freebsd14:~ $ service jail start thinjail1\nStarting jails: thinjail1.\nroot@freebsd14:~ $ service jail status thinjail1\n JID             IP Address      Hostname                      Path\n thinjail1       192.168.122.160 thinjail1                     \/usr\/local\/jails\/containers\/thinjail1\n<\/pre><\/div>\n\n\n<p>While it is recommended to manage a Jail from the host system, you can also jump into the Jail:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: bash; highlight: [1,2,11]; title: ; notranslate\" title=\"\">\nroot@freebsd14:~ $ jexec -u root thinjail1\nroot@thinjail1:\/ $ ifconfig\nvtnet0: flags=1008843&lt;UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST,LOWER_UP&gt; metric 0 mtu 1500\n      options=4c07bb&lt;RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,TSO4,TSO6,LRO,VLAN_HWTSO,LINKSTATE,TXCSUM_IPV6&gt;\n        ether 52:54:00:af:79:80\n        inet 192.168.122.160 netmask 0xffffffff broadcast 192.168.122.160\n        media: Ethernet autoselect (10Gbase-T &lt;full-duplex&gt;)\n        status: active\nlo0: flags=1008049&lt;UP,LOOPBACK,RUNNING,MULTICAST,LOWER_UP&gt; metric 0 mtu 16384\n        options=680003&lt;RXCSUM,TXCSUM,LINKSTATE,RXCSUM_IPV6,TXCSUM_IPV6&gt;\n        groups: lo\nroot@thinjail1:\/ $ freebsd-version ; uname -a\n14.1-RELEASE-p6\nFreeBSD thinjail1 14.1-RELEASE-p5 FreeBSD 14.1-RELEASE-p5 GENERIC amd64\n<\/pre><\/div>\n\n\n<p>Pretty easy to setup and really lightweight. Put a bit of automation around this and you should have a new Jail up and running in a few seconds.<\/p>\n\n\n\n<p>In the next post we&#8217;ll build on this to create a simple PostgreSQL as a service platform.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Now that we know how to get started with FreeBSD, how to manage users and groups, and how to work with services, we&#8217;ll look a bit into Jails today. But before we do this, let&#8217;s look at what we have in Linux today when it comes to containerization and virtual machines. Obviously we can manage [&hellip;]<\/p>\n","protected":false},"author":29,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[42],"tags":[2718,2256,46],"type_dbi":[3471],"class_list":["post-36010","post","type-post","status-publish","format-standard","hentry","category-operating-systems","tag-bsd","tag-freebsd","tag-linux-unix","type-freebsd"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>FreeBSD basics \u2013 4 \u2013 Jails - dbi Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.dbi-services.com\/blog\/freebsd-basics-4-jails\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"FreeBSD basics \u2013 4 \u2013 Jails\" \/>\n<meta property=\"og:description\" content=\"Now that we know how to get started with FreeBSD, how to manage users and groups, and how to work with services, we&#8217;ll look a bit into Jails today. But before we do this, let&#8217;s look at what we have in Linux today when it comes to containerization and virtual machines. Obviously we can manage [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/freebsd-basics-4-jails\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2024-12-03T17:12:44+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-12-03T17:12:47+00:00\" \/>\n<meta name=\"author\" content=\"Daniel Westermann\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@westermanndanie\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Daniel Westermann\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/freebsd-basics-4-jails\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/freebsd-basics-4-jails\/\"},\"author\":{\"name\":\"Daniel Westermann\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66\"},\"headline\":\"FreeBSD basics \u2013 4 \u2013 Jails\",\"datePublished\":\"2024-12-03T17:12:44+00:00\",\"dateModified\":\"2024-12-03T17:12:47+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/freebsd-basics-4-jails\/\"},\"wordCount\":801,\"commentCount\":0,\"keywords\":[\"BSD\",\"FreeBSD\",\"Linux\/UNIX\"],\"articleSection\":[\"Operating systems\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/freebsd-basics-4-jails\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/freebsd-basics-4-jails\/\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/freebsd-basics-4-jails\/\",\"name\":\"FreeBSD basics \u2013 4 \u2013 Jails - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\"},\"datePublished\":\"2024-12-03T17:12:44+00:00\",\"dateModified\":\"2024-12-03T17:12:47+00:00\",\"author\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/freebsd-basics-4-jails\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/freebsd-basics-4-jails\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/freebsd-basics-4-jails\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.dbi-services.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"FreeBSD basics \u2013 4 \u2013 Jails\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/\",\"name\":\"dbi Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66\",\"name\":\"Daniel Westermann\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g\",\"caption\":\"Daniel Westermann\"},\"description\":\"Daniel Westermann is Principal Consultant and Technology Leader Open Infrastructure at dbi services. He has more than 15 years of experience in management, engineering and optimization of databases and infrastructures, especially on Oracle and PostgreSQL. Since the beginning of his career, he has specialized in Oracle Technologies and is Oracle Certified Professional 12c and Oracle Certified Expert RAC\/GridInfra. Over time, Daniel has become increasingly interested in open source technologies, becoming \u201cTechnology Leader Open Infrastructure\u201d and PostgreSQL expert. \u00a0Based on community or EnterpriseDB tools, he develops and installs complex high available solutions with PostgreSQL. He is also a certified PostgreSQL Plus 9.0 Professional and a Postgres Advanced Server 9.4 Professional. He is a regular speaker at PostgreSQL conferences in Switzerland and Europe. Today Daniel is also supporting our customers on AWS services such as AWS RDS, database migrations into the cloud, EC2 and automated infrastructure management with AWS SSM (System Manager). He is a certified AWS Solutions Architect Professional. Prior to dbi services, Daniel was Management System Engineer at LC SYSTEMS-Engineering AG in Basel. Before that, he worked as Oracle Developper &amp;\u00a0Project Manager at Delta Energy Solutions AG in Basel (today Powel AG). Daniel holds a diploma in Business Informatics (DHBW, Germany). His branch-related experience mainly covers the pharma industry, the financial sector, energy, lottery and telecommunications.\",\"sameAs\":[\"https:\/\/x.com\/westermanndanie\"],\"url\":\"https:\/\/www.dbi-services.com\/blog\/author\/daniel-westermann\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"FreeBSD basics \u2013 4 \u2013 Jails - dbi Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.dbi-services.com\/blog\/freebsd-basics-4-jails\/","og_locale":"en_US","og_type":"article","og_title":"FreeBSD basics \u2013 4 \u2013 Jails","og_description":"Now that we know how to get started with FreeBSD, how to manage users and groups, and how to work with services, we&#8217;ll look a bit into Jails today. But before we do this, let&#8217;s look at what we have in Linux today when it comes to containerization and virtual machines. Obviously we can manage [&hellip;]","og_url":"https:\/\/www.dbi-services.com\/blog\/freebsd-basics-4-jails\/","og_site_name":"dbi Blog","article_published_time":"2024-12-03T17:12:44+00:00","article_modified_time":"2024-12-03T17:12:47+00:00","author":"Daniel Westermann","twitter_card":"summary_large_image","twitter_creator":"@westermanndanie","twitter_misc":{"Written by":"Daniel Westermann","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/freebsd-basics-4-jails\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/freebsd-basics-4-jails\/"},"author":{"name":"Daniel Westermann","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66"},"headline":"FreeBSD basics \u2013 4 \u2013 Jails","datePublished":"2024-12-03T17:12:44+00:00","dateModified":"2024-12-03T17:12:47+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/freebsd-basics-4-jails\/"},"wordCount":801,"commentCount":0,"keywords":["BSD","FreeBSD","Linux\/UNIX"],"articleSection":["Operating systems"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/freebsd-basics-4-jails\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/freebsd-basics-4-jails\/","url":"https:\/\/www.dbi-services.com\/blog\/freebsd-basics-4-jails\/","name":"FreeBSD basics \u2013 4 \u2013 Jails - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"datePublished":"2024-12-03T17:12:44+00:00","dateModified":"2024-12-03T17:12:47+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/freebsd-basics-4-jails\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/freebsd-basics-4-jails\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/freebsd-basics-4-jails\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"FreeBSD basics \u2013 4 \u2013 Jails"}]},{"@type":"WebSite","@id":"https:\/\/www.dbi-services.com\/blog\/#website","url":"https:\/\/www.dbi-services.com\/blog\/","name":"dbi Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66","name":"Daniel Westermann","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g","caption":"Daniel Westermann"},"description":"Daniel Westermann is Principal Consultant and Technology Leader Open Infrastructure at dbi services. He has more than 15 years of experience in management, engineering and optimization of databases and infrastructures, especially on Oracle and PostgreSQL. Since the beginning of his career, he has specialized in Oracle Technologies and is Oracle Certified Professional 12c and Oracle Certified Expert RAC\/GridInfra. Over time, Daniel has become increasingly interested in open source technologies, becoming \u201cTechnology Leader Open Infrastructure\u201d and PostgreSQL expert. \u00a0Based on community or EnterpriseDB tools, he develops and installs complex high available solutions with PostgreSQL. He is also a certified PostgreSQL Plus 9.0 Professional and a Postgres Advanced Server 9.4 Professional. He is a regular speaker at PostgreSQL conferences in Switzerland and Europe. Today Daniel is also supporting our customers on AWS services such as AWS RDS, database migrations into the cloud, EC2 and automated infrastructure management with AWS SSM (System Manager). He is a certified AWS Solutions Architect Professional. Prior to dbi services, Daniel was Management System Engineer at LC SYSTEMS-Engineering AG in Basel. Before that, he worked as Oracle Developper &amp;\u00a0Project Manager at Delta Energy Solutions AG in Basel (today Powel AG). Daniel holds a diploma in Business Informatics (DHBW, Germany). His branch-related experience mainly covers the pharma industry, the financial sector, energy, lottery and telecommunications.","sameAs":["https:\/\/x.com\/westermanndanie"],"url":"https:\/\/www.dbi-services.com\/blog\/author\/daniel-westermann\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/36010","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/users\/29"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=36010"}],"version-history":[{"count":27,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/36010\/revisions"}],"predecessor-version":[{"id":36113,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/36010\/revisions\/36113"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=36010"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=36010"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=36010"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=36010"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}