This documentation provides information on how to deploy Mirantis Container
Runtime (MCR). The documentation is intended to help operators to understand
the core concepts of the product.
The information provided in this documentation set is being constantly
improved and amended based on the feedback and kind requests from the
consumers of MCR.
Mirantis Container Runtime (MCR) enables you to power your business-critical
applications with the industry-leading enterprise container engine. You can
run containers on any platform with a fully supported and highly secure
container runtime. MCR provides the core functionality and security compliance
needed to enable your container orchestration solution of choice with
certified proven support for both Kubernetes and Swarm. The most common
use cases include:
Container orchestration solution
Organisations often have unique container orchestration requirements and may
choose to utilise alternative systems to manage their containers. MCR provides
freedom to select the best orchestration solution for your needs whilst still
ensuring you have a secure, trusted, and supported container runtime to run
your mission-critical workloads.
Secure and validated containers
The challenges in ensuring that the software supply chain is secure does not
stop at the container orchestration solution. The key part of securing your
container solution is ensuring that only validated and trusted containers
can be deployed and run. MCR combined with Mirantis Secure Registry (MSR)
gives you the ability to validate and sign your container images to ensure
that only approved images can be run in your environment.
Secure validated encryption
Regulated industries need to meet federal regulations to ensure that
appropriate levels of encryption are enabled. MCR provides FIPS 140-2
Validated cryptography ensuring that you meet the highest standards
necessary to comply with the federal requirements.
Multiple operating systems and infrastructures
With the drive towards multi-cloud and hybrid cloud, computing organisations
need to support multiple operating systems on multiple platforms. MCR is
certified to run on multiple operating systems, including CentOS, RHEL,
Ubuntu, and Windows, for consistent runtime regardless of the platform.
The Mirantis Container Runtime (MCR) Reference Architecture is a work
in progress, the intent of which is to keep MCR users apprised of the technical
details that pertain to the differences between MCR and Docker Engine.
overlay2 is the only storage driver MCR builds and supports, with the
exception of the btrfs storage driver, which Mirantis will continue to build
and support exclusively for the SLES platform (for which overlay2
is also viable).
Mirantis Container Runtime (MCR) is a client-server application with these
major components:
A server which is a type of long-running program called a daemon process
(the dockerd command).
A REST API which specifies interfaces that programs can use to talk to the
daemon and instruct it what to do.
A command line interface (CLI) client (the docker command).
MCR can be installed on several Linux distros as well as on Windows.
Note
MCR is derived from the Moby project, an open
framework created by Docker Inc. As such, most of the product commands and
setup instruction are identical to those for Docker Engine.
Users are not authorized to run MCR without a valid license. For more
information, refer to Mirantis Agreements and Terms.
For MCR to recognize your license, you must apply your customer license file
at runtime.
To make MCR aware of your license and entitlement, perform the following for
each node that will host MCR:
Download the license file.
If you purchased a license from the Mirantis Store, the license file is
available through a link in your confirmation email. Otherwise, contact
Mirantis Sales and Support to gain access to the file.
Apply the license file.
Platform
Applying the license
Linux distributions
Determine the location of the data root directory. This
information is available in the daemon.json file associated
with MCR. Alternatively, you can specify the data root directory
using the --data-root flag at MCR start up. Note that
the default data-root directory is /var/lib/docker.
Copy the license file to the data root directory and name it
docker.lic. It is imperative that the license be readable by
the account/user that runs the docker daemon.
Windows servers
Currently, you do not need to apply a license for Windows server
systems, as Mirantis Container Runtime can be run using the
installation script.
Start MCR. If MCR is already running, restart it.
Note
MKE, MSR, and Mirantis Container Cloud have implied MCR licenses.
There are two ways to install and upgrade Mirantis Container Runtime (MCR):
YUM repository: Set up a Docker repository and install Mirantis Container
Runtime from it. This is the recommended approach because installation
and upgrades are managed with YUM and easier to do.
RPM package: Download the RPM package, install it manually, and manage
upgrades manually. This is useful when installing Mirantis Container Runtime
on air-gapped systems with no access to the internet.
The Mirantis Container Runtime package is called docker-ee. Older
versions were called docker or docker-engine. Uninstall all
older versions and associated dependencies. The contents of
/var/lib/docker/ are preserved, including images, containers,
volumes, and networks.
The advantage of using a repository from which to install Mirantis Container
Runtime (or any software) is that it provides a certain level of automation.
RPM-based distributions such as CentOS, use a tool called YUM that work with
your repositories to manage dependencies and provide automatic updates.
The list returned depends on which repositories you enabled, and is
specific to your version of CentOS (indicated by .el7 in this
example).
Install a specific version by its fully qualified package name,
which is the package name (docker-ee) plus the version string
(2nd column) starting at the first colon (:), up to the first
hyphen, separated by a hyphen (-). For example,
docker-ee-20.10.9.
Docker is installed but not started. The docker group is created,
but no users are added to the group.
Start Docker:
sudosystemctlstartdocker
Verify that Mirantis Container Runtime is installed correctly by
running the hello-world image. This command downloads a test
image, runs it in a container, prints an informational message, and
exits:
sudodockerrunhello-world
Mirantis Container Runtime is installed and running. Use sudo to
run Docker commands.
Docker is installed but not started. The docker group is created,
but no users are added to the group.
Start Docker
sudosystemctlstartdocker
Verify that Mirantis Container Runtime is installed correctly by
running the hello-world image. This command downloads a test
image, runs it in a container, prints an informational message, and
exits:
sudodockerrunhello-world
Mirantis Container Runtime is installed and running. Use sudo to
run Docker commands.
By default, MCR automatically records and transmits data to Mirantis for
monitoring and analysis purposes. The data collected provides the Mirantis
Customer Success Organization with information that helps us to better
understand the operational use of MCR by our customers. It also provides key
feedback in the form of product usage statistics, which enable our product
teams to enhance Mirantis products and services.
To disable the telemetry function, set
features.telemetry to false in your /etc/docker/daemon.json file.
Change the setting to true to re-enable telemetry.
{"features":{"telemetry":false}}
Caution
To send the telemetry, verify that dockerd can resolve api.segment.io
and create a TCP (HTTPS) connection on port 443.
Delete all images, containers, and volumes (because these are not
automatically removed from your host):
sudorm-rf/var/lib/docker
Delete other Docker related resources:
sudorm-rf/run/docker
sudorm-rf/etc/docker
Delete any edited configuration files manually.
Install Mirantis Container Runtime for Oracle Linux¶
There are two ways to install and upgrade Mirantis Container Runtime (MCR).
YUM repository: Set up a Docker repository and install Mirantis Container
Runtime from it. This is the recommended approach because installation
and upgrades are managed with YUM and easier to do.
RPM package: Download the RPM package, install it manually, and manage
upgrades manually. This is useful when installing Mirantis Container Runtime
on air-gapped systems with no access to the internet.
With Mirantis Container Runtime license for versions 20.10.x, Mirantis provides
FIPS 140-2 support in Oracle Linux 7.x and 8.x (as per the
MCR 20.10 Compatibility Matrix). This includes a FIPS supported
cryptographic module. If the Oracle Linux implementation already has FIPS
support enabled, FIPS is also automatically enabled in MCR. If FIPS support is
not already enabled in your Oracle Linux implementation, refer to the Oracle
Linux product documentation for enablement instructions.
To verify the FIPS 140-2 module is enabled in the Linux kernel, confirm
the file /proc/sys/crypto/fips_enabled contains 1.
cat/proc/sys/crypto/fips_enabled1
Note
FIPS is only supported in Mirantis Container Runtime.
MKE and MSR currently do not have support for FIPS 140-2.
You can override FIPS 140-2 compliance on a system that is not in FIPS
140-2 mode. Note, this does not change FIPS 140-2 mode on the
system. To override the FIPS 140-2 mode, follow ths steps below.
Create a file called
/etc/systemd/system/docker.service.d/fips-module.conf. Add the
following:
[Service]Environment="DOCKER_FIPS=1"
Reload the Docker configuration to systemd.
sudosystemctldaemon-reload
Restart the Docker service as root.
sudosystemctlrestartdocker
To confirm Docker is running with FIPS 140-2 enabled, run the
dockerinfo command.
If the system has the FIPS 140-2 cryptographic module installed on the
operating system, it is possible to disable FIPS 140-2 compliance.
To disable FIPS 140-2 in Docker but not the operating system, set the
value DOCKER_FIPS=0 in the
/etc/systemd/system/docker.service.d/fips-module.conf.
The Mirantis Container Runtime package is called docker-ee. Older
versions were called docker or docker-engine. Uninstall all
older versions and associated dependencies. The contents of
/var/lib/docker/ are preserved, including images, containers,
volumes, and networks.
The advantage of using a repository from which to install Mirantis Container
Runtime (or any software) is that it provides a certain level of automation.
RPM-based distributions such as Oracle Linux, use a tool called YUM that work
with your repositories to manage dependencies and provide automatic updates.
The list returned depends on which repositories you enabled, and is
specific to your version of Oracle Linux (indicated by .el7 in this example).
Install a specific version by its fully qualified package name,
which is the package name (docker-ee) plus the version string
(2nd column) starting at the first colon (:), up to the first
hyphen, separated by a hyphen (-). For example,
docker-ee-18.09.1.
Docker is installed but not started. The docker group is created,
but no users are added to the group.
Start Docker:
sudosystemctlstartdocker
Verify that Mirantis Container Runtime is installed correctly by
running the hello-world image. This command downloads a test
image, runs it in a container, prints an informational message, and
exits:
sudodockerrunhello-world
Mirantis Container Runtime is installed and running. Use sudo to
run Docker commands.
Oracle Linux 8
Install the latest patch release, or go to the next step to install a
specific version:
The list returned depends on which repositories you enabled, and is
specific to your version of Oracle Linux (indicated by .el7 in this example).
Install a specific version by its fully qualified package name,
which is the package name (docker-ee) plus the version string
(2nd column) starting at the first colon (:), up to the first
hyphen, separated by a hyphen (-). For example,
docker-ee-18.09.1.
Docker is installed but not started. The docker group is created,
but no users are added to the group.
Start Docker:
sudosystemctlstartdocker
Verify that Mirantis Container Runtime is installed correctly by
running the hello-world image. This command downloads a test
image, runs it in a container, prints an informational message, and
exits:
sudodockerrunhello-world
Mirantis Container Runtime is installed and running. Use sudo to
run Docker commands.
Navigate to oraclelinux/7/x86_64/. Choose your
Oracle Linux version, architecture, and MCR version. Download the
.rpm file from the Packages directory.
Docker is installed but not started. The docker group is created,
but no users are added to the group.
Start Docker:
sudosystemctlstartdocker
Verify that Mirantis Container Runtime is installed correctly by
running the hello-world image. This command downloads a test
image, runs it in a container, prints an informational message, and
exits:
sudodockerrunhello-world
Mirantis Container Runtime is installed and running. Use sudo to
run Docker commands.
Oracle Linux 8
Go to repos.mirantis.com in your browser. Navigate to oraclelinux/.
Choose your Oracle Linux version, architecture, and MCR
version. Download the .rpm file from the Packages directory.
If you have trouble with selinux using the packages under the 8
directory, try choosing the version-specific directory instead.
Install Mirantis Container Runtime, changing the path below to the path
where you downloaded the Docker package.
Docker is installed but not started. The docker group is created, but no
users are added to the group.
Start Docker:
sudosystemctlstartdocker
Verify that Mirantis Container Runtime is installed correctly by running
the hello-world image. This command downloads a test image, runs it in a
container, prints an informational message, and exits:
sudodockerrunhello-world
Mirantis Container Runtime is now installed and running. Make sure to use
sudo to run Docker commands (refer to the Docker documentation for Linux
postinstall for information on how to allow non-privileged users to run
Docker commands.
By default, MCR automatically records and transmits data to Mirantis for
monitoring and analysis purposes. The data collected provides the Mirantis
Customer Success Organization with information that helps us to better
understand the operational use of MCR by our customers. It also provides key
feedback in the form of product usage statistics, which enable our product
teams to enhance Mirantis products and services.
To disable the telemetry function, set
features.telemetry to false in your /etc/docker/daemon.json file.
Change the setting to true to re-enable telemetry.
{"features":{"telemetry":false}}
Caution
To send the telemetry, verify that dockerd can resolve api.segment.io
and create a TCP (HTTPS) connection on port 443.
You must delete any edited configuration files manually.
Install Mirantis Container Runtime for Red Hat Enterprise Linux¶
There are two ways to install and upgrade Mirantis Container Runtime (MCR).
YUM repository: Set up a Docker repository and install Mirantis Container
Runtime from it. This is the recommended approach because installation and
upgrades are managed with YUM and easier to do.
RPM package: Download the RPM package, install it manually, and manage
upgrades manually. This is useful when installing Mirantis Container Runtime
on air-gapped systems with no access to the internet.
Mirantis Container Runtime supports Red Hat Enterprise Linux 64-bit, versions
7.4 and higher running on x86_64. See the compatibility-matrix
for specific details.
On Red Hat Enterprise Linux, Mirantis Container Runtime supports the
overlay2 storage driver. The following limitations apply:
OverlayFS: If selinux is enabled, the
overlay2 storage driver is supported on RHEL 7.4 or higher.
If selinux is disabled, overlay2 is supported on RHEL 7.2 or higher
with kernel version 3.10.0-693 and higher.
With Mirantis Container Runtime license for versions 20.10.x, Mirantis provides
FIPS 140-2 support in RHEL 7.x, 8.x, and 9.x (as per the
MCR 20.10 Compatibility Matrix). This includes a FIPS supported
cryptographic module. If the RHEL implementation already has FIPS support
enabled, FIPS is also automatically enabled in MCR. If FIPS support is not
already enabled in your RHEL implementation, see the Red Hat Product
Documentation for instructions on how to enable it.
To verify the FIPS 140-2 module is enabled in the Linux kernel, confirm
the file /proc/sys/crypto/fips_enabled contains 1.
cat/proc/sys/crypto/fips_enabled1
Note
FIPS is only supported in Mirantis Container Runtime.
MKE and MSR currently do not have support for FIPS 140-2.
You can override FIPS 140-2 compliance on a system that is not in FIPS
140-2 mode. Note, this does not change FIPS 140-2 mode on the
system. To override the FIPS 140-2 mode, follow ths steps below.
Create a file called
/etc/systemd/system/docker.service.d/fips-module.conf. Add the
following:
[Service]Environment="DOCKER_FIPS=1"
Reload the Docker configuration to systemd.
sudosystemctldaemon-reload
Restart the Docker service as root.
sudosystemctlrestartdocker
To confirm Docker is running with FIPS 140-2 enabled, run the
dockerinfo command.
If the system has the FIPS 140-2 cryptographic module installed on the
operating system, it is possible to disable FIPS 140-2 compliance.
To disable FIPS 140-2 in Docker but not the operating system, set the
value DOCKER_FIPS=0 in the
/etc/systemd/system/docker.service.d/fips-module.conf.
The Mirantis Container Runtime package is called docker-ee. Older
versions were called docker or docker-engine. Uninstall all
older versions and associated dependencies. The contents of
/var/lib/docker/ are preserved, including images, containers,
volumes, and networks.
The advantage of using a repository from which to install Mirantis Container
Runtime (or any software) is that it provides a certain level of automation.
RPM-based distributions such as Red Hat Enterprise Linux, use a tool called YUM
that work with your repositories to manage dependencies and provide automatic
updates.
Also, store your OS version string in /etc/yum/vars/dockerosversion.
Most users should use 7, 8, or 9 but you can also use the
more specific minor version, starting from 7.2.
The list returned depends on which repositories you enabled, and is
specific to your version of Red Hat Enterprise Linux (indicated by
.el7 in this example).
Install a specific version by its fully qualified package name,
which is the package name (docker-ee) plus the version string
(2nd column) starting at the first colon (:), up to the first
hyphen, separated by a hyphen (-). For example,
docker-ee-20.10.9.
Be aware that MCR nodes in rootless mode cannot currently be a member
of an MKE cluster.
Docker is installed but not started. The docker group is created,
but no users are added to the group.
Start Docker:
sudosystemctlstartdocker
Verify that Mirantis Container Runtime is installed correctly by
running the hello-world image. This command downloads a test
image, runs it in a container, prints an informational message, and
exits:
sudodockerrunhello-world
Mirantis Container Runtime is installed and running. Use sudo to run Docker
commands.
To manually install Mirantis Container Runtime, download the .rpm file for
your release. You need to download a new file each time you want to upgrade.
Alternately, obtain that package manually from Red Hat. There is no way
to publicly browse this repository.
Go to repos.mirantis.com in your browser. Navigate to rhel/. Choose
your Red Hat Enterprise Linux version, architecture, and Docker version.
Download the .rpm file from the Packages directory.
If you have trouble with selinux using the packages under the 7
directory, try choosing the version-specific directory instead, such as
7.3.
Install MCR, changing the path below to the path where you downloaded the
Docker package.
Docker is installed but not started. The docker group is created, but no
users are added to the group.
Start Docker:
sudosystemctlstartdocker
Verify that Mirantis Container Runtime is installed correctly by running
the hello-world image. This command downloads a test image, runs it in a
container, prints an informational message, and exits:
sudodockerrunhello-world
Mirantis Container Runtime is now installed and running. Make sure to use
sudo to run Docker commands (refer to the Docker documentation for
Linux postinstall for
information on how to allow non-privileged users to run Docker commands.
RHEL 8
Go to repos.mirantis.com in your browser. Navigate to rhel/. Choose
your Red Hat Enterprise Linux version, architecture, and Docker version.
Download the .rpm file from the Packages directory.
If you have trouble with selinux using the packages under the 8
directory, try choosing the version-specific directory instead.
Install Mirantis Container Runtime, changing the path below to the path
where you downloaded the Docker package.
Docker is installed but not started. The docker group is created, but no
users are added to the group.
Start Docker:
sudosystemctlstartdocker
Verify that Mirantis Container Runtime is installed correctly by running
the hello-world image. This command downloads a test image, runs it in a
container, prints an informational message, and exits:
sudodockerrunhello-world
Mirantis Container Runtime is now installed and running. Make sure to use
sudo to run Docker commands (refer to the Docker documentation for Linux
postinstall for information on how to allow non-privileged users to run
Docker commands.
RHEL 9
Go to repos.mirantis.com in your browser. Navigate to rhel/. Choose
your Red Hat Enterprise Linux version, architecture, and Docker version.
Download the .rpm file from the Packages directory.
If you have trouble with selinux using the packages under the 9
directory, try choosing the version-specific directory instead.
Install Mirantis Container Runtime, changing the path below to the path
where you downloaded the Docker package.
Docker is installed but not started. The docker group is created, but no
users are added to the group.
Start Docker:
sudosystemctlstartdocker
Verify that Mirantis Container Runtime is installed correctly by running
the hello-world image. This command downloads a test image, runs it in a
container, prints an informational message, and exits:
sudodockerrunhello-world
Mirantis Container Runtime is now installed and running. Make sure to use
sudo to run Docker commands (refer to the Docker documentation for Linux
postinstall for information on how to allow non-privileged users to run
Docker commands.
By default, MCR automatically records and transmits data to Mirantis for
monitoring and analysis purposes. The data collected provides the Mirantis
Customer Success Organization with information that helps us to better
understand the operational use of MCR by our customers. It also provides key
feedback in the form of product usage statistics, which enable our product
teams to enhance Mirantis products and services.
To disable the telemetry function, set
features.telemetry to false in your /etc/docker/daemon.json file.
Change the setting to true to re-enable telemetry.
{"features":{"telemetry":false}}
Caution
To send the telemetry, verify that dockerd can resolve api.segment.io
and create a TCP (HTTPS) connection on port 443.
To install Mirantis Container Runtime, you need the 64-bit version of SLES 12.x
or later, running on the x86_64 architecture. Mirantis Container Runtime is
not supported on OpenSUSE.
The only supported storage driver for Mirantis Container Runtime on SLES
is Btrfs, which is used by default if the underlying filesystem
hosting /var/lib/docker/ is a BTRFS filesystem.
Note
IBM Z (s390x) is supported for Mirantis Container Runtime 17.06.xx only.
Docker creates a DOCKER iptables chain when it starts. The SUSE
firewall may block access to this chain, which can prevent you from
running containers with published ports. You may see errors such as the
following:
WARNING: IPv4 forwarding is disabled. Networking will not work.
docker: Error response from daemon: driver failed programming external
connectivity on endpoint adoring_ptolemy
(0bb5fa80bc476f8a0d343973929bb3b7c039fc6d7cd30817e837bc2a511fce97):
(iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 80 -j DNAT --to-destination 172.17.0.2:80 ! -i docker0: iptables: No chain/target/match by that name.
(exit status 1)).
If you see errors like this, adjust the start-up script order so that the
firewall is started before Docker, and Docker stops before the firewall stops.
Refer to the SLES systemd daemon documentation.
Older versions of Docker were called docker or docker-engine. If
you use OS images from a cloud provider, you may need to remove the
runc package, which conflicts with Docker. If these are installed,
uninstall them, along with associated dependencies.
sudozypperrmdockerdocker-enginerunc
If removal of the docker-engine package fails, use the following
command instead:
sudorpm-edocker-engine
It’s OK if zypper reports that none of these packages are installed.
The contents of /var/lib/docker/, including images, containers,
volumes, and networks, are preserved. The Mirantis Container Runtime
package is now called docker-ee.
By default, SLES formats the / filesystem using Btrfs, so most
people do not not need to do the steps in this section. If you use OS
images from a cloud provider, you may need to do this step. If the
filesystem that hosts /var/lib/docker/ is not a BTRFS
filesystem, you must configure a BTRFS filesystem and mount it on
/var/lib/docker/.
Check whether / (or /var/ or /var/lib/ or
/var/lib/docker/ if they are separate mount points) are formatted
using Btrfs. If you do not have separate mount points for any of
these, a duplicate result for / is returned.
df-T//var/var/lib/var/lib/docker
You need to complete the rest of these steps only if one of thefollowing is true:
You have a separate /var/ filesystem that is not formatted
with Btrfs
You do not have a separate /var/ or /var/lib/ or
/var/lib/docker/ filesystem and / is not formatted with
Btrfs
If /var/lib/docker is already a separate mount point and is not
formatted with Btrfs, back up its contents so that you can restore
them after step 3.
Format your dedicated block device or devices as a Btrfs filesystem.
This example assumes that you are using two block devices called
/dev/xvdf and /dev/xvdg. Make sure you are using the right
device names.
Important
Double-check the block device names because this is a destructive
operation.
sudomkfs.btrfs-f/dev/xvdf/dev/xvdg
There are many more options for Btrfs, including striping and RAID. See the
Btrfs documentation.
Mount the new Btrfs filesystem on the /var/lib/docker/ mount
point. You can specify any of the block devices used to create the
Btrfs filesystem.
sudomount-tbtrfs/dev/xvdf/var/lib/docker
Don’t forget to make the change permanent across reboots by adding an
entry to /etc/fstab.
If /var/lib/docker previously existed and you backed up its
contents during step 1, restore them onto /var/lib/docker.
You can install Mirantis Container Runtime in different ways, depending
on your needs.
Most users set up Docker’s repositories and install from
them, for ease of installation and upgrade tasks. This is the
recommended approach.
Some users download the RPM package and install it manually and
manage upgrades completely manually. This is useful in situations
such as installing Docker on air-gapped systems with no access to the
internet.
Before you install Mirantis Container Runtime for the first time on a
new host machine, you need to set up the Docker repository. Afterward,
you can install and update Docker from the repository.
If this is the first time you have refreshed the package index since
adding the Docker repositories, you are prompted to accept the GPG
key, and the key’s fingerprint is shown. Verify that the fingerprint
matches 77FEDA131A831D29A418D3E899E5FF2E76682BC9 and if so, accept the key.
Install the latest version of Mirantis Container Runtime and
containerd, or go to the next step to install a specific version.
MCR 20.10.12 and later, on SLES15
Requires the addition of the docker-ee-rootless-extras package.
On production systems, you should install a specific version of
Mirantis Container Runtime instead of always using the latest. List
the available versions. The following example only lists binary
packages and is truncated. To also list source packages, omit the
-tpackage flag from the command.
zyppersearch-s--match-exact-tpackagedocker-ee
The contents of the list depend upon which repositories you have
enabled. Choose a specific version to install. The fourth column is
the version string. The last column is the repository name, which
indicates which repository the package is from and by extension its
stability level. To install a specific version, append the version
string to the package name and separate them by a hyphen (-):
MCR 20.10.12 and later, on SLES15
Requires the addition of the docker-ee-rootless-extras package.
Docker is installed but not started. The docker group is created,
but no users are added to the group.
Configure Docker to use the Btrfs filesystem. This is only required
ifthe ``/`` filesystem is not using BTRFS. However, explicitly
specifying the storage-driver has no harmful side effects.
Edit the file /etc/docker/daemon.json (create it if it does not
exist) and add the following contents:
{"storage-driver":"btrfs"}
Save and close the file.
Start Docker.
sudoservicedockerstart
Verify that Docker is installed correctly by running the
hello-world image.
sudodockerrunhello-world
This command downloads a test image and runs it in a container. When
the container runs, it prints an informational message and exits.
Mirantis Container Runtime is installed and running. You need to use
sudo to run Docker commands.
If you cannot use the official Docker repository to install Mirantis Container
Runtime, you can download the .rpm file for your release and install it
manually. You need to download a new file each time you want to upgrade Docker.
Go to sles/15/x86_64/stable-20.10/ and choose the directory
corresponding to the desired Mirantis Container Runtime version. Download
the .rpm file from the Packages directory.
Docker is installed but not started. The docker group is created,
but no users are added to the group.
Configure Docker to use the Btrfs filesystem. This is only required
ifthe ``/`` filesystem is not using Btrfs. However, explicitly
specifying the storage-driver has no harmful side effects.
Edit the file /etc/docker/daemon.json (create it if it does not
exist) and add the following contents:
{"storage-driver":"btrfs"}
Save and close the file.
Start Docker.
sudoservicedockerstart
Verify that Docker is installed correctly by running the
hello-world image.
sudodockerrunhello-world
This command downloads a test image and runs it in a container. When
the container runs, it prints an informational message and exits.
Mirantis Container Runtime is installed and running. You need to use
sudo to run Docker commands.
To upgrade Mirantis Container Runtime, download the newer package file
and repeat the installation procedure,
using zypperupdate instead of zypperinstall, and pointing to
the new file.
By default, MCR automatically records and transmits data to Mirantis for
monitoring and analysis purposes. The data collected provides the Mirantis
Customer Success Organization with information that helps us to better
understand the operational use of MCR by our customers. It also provides key
feedback in the form of product usage statistics, which enable our product
teams to enhance Mirantis products and services.
To disable the telemetry function, set
features.telemetry to false in your /etc/docker/daemon.json file.
Change the setting to true to re-enable telemetry.
{"features":{"telemetry":false}}
Caution
To send the telemetry, verify that dockerd can resolve api.segment.io
and create a TCP (HTTPS) connection on port 443.
Uninstall the Mirantis Container Runtime package using the command
below.
sudozypperrmdocker-eedocker-ee-clicontainerd.io
Images, containers, volumes, or customized configuration files on
your host are not automatically removed. To delete all images,
containers, and volumes.
sudorm-rf/var/lib/docker/*
If you used a separate BTRFS filesystem to host the contents of
/var/lib/docker/, you can unmount and format the Btrfs
filesystem.
You must delete any edited configuration files manually.
For Ubuntu 16.04 and higher, the Linux kernel includes support for overlay2,
and Mirantis Container Runtime uses it as the default storage driver. If you
need to use aufs instead, it must be manually configured.
Mirantis Container Runtime can be installed either by using Mirantis
repositories, or by downloading and installing the DEB package and thereafter
manually managing all upgrades. The Mirantis repository method is recommended,
for the ease it lends in terms of both installation and upgrade tasks. The more
manual DEB package approach, however, is useful in certain situations, such as
installing MCR on air-gapped system that have no access to the Internet.
Continue from this point if you are using Mirantis repositories on Ubuntu, or
to install from a Debian package go to
Install from a Debian package.
Verify that you now have the key with the fingerprint
DD911E995A64A202E85907D6BC14F10B6D085F96, by searching
for the last eight characters of the fingerprint. Use the command
as-is. It works because of the variable you set earlier.
Install the latest version of Mirantis Container Runtime and
containerd, or go to the next step to install a specific version. Any
existing installation of MCR is replaced.
MCR 20.10.12 and later
Requires the addition of the docker-ee-rootless-extras package.
If you have multiple Mirantis repositories enabled, installing or
updating without specifying a version in the apt-getinstall
or apt-get update command always installs the highest possible
version, which may not be appropriate for your stability needs.
On production systems, you should install a specific version of
Mirantis Container Runtime instead of always using the latest. The
following output is truncated.
The contents of the list depend upon which repositories are enabled,
and are specific to your version of Ubuntu (indicated by the
focal suffix on the version, in this example). Choose a specific
version to install. The second column is the version string. The
third column is the repository name, which indicates which repository
the package is from and by extension its stability level. To install
a specific version, append the version string to the package name and
separate them by an equals sign (=).
Be aware that MCR nodes in rootless mode cannot currently be a member of
an MKE cluster.
The MCR daemon starts automatically.
Verify that MCR is installed correctly by running the hello-world
image.
sudodockerrunhello-world
This command downloads a test image and runs it in a container. When
the container runs, it prints an informational message and exits.
Mirantis Container Runtime is installed and running. The docker
group is created but no users are added to it. You need to use sudo
to run MCR commands.
If you cannot use the Mirantis repository to install Mirantis Container
Runtime, you can download the .deb files for your release and install them
manually. You need to download a new file or set of files each time you want to
upgrade Mirantis Container Runtime.
Go to /ubuntu/dists/bionic/pool/stable-<VERSION>/amd64/ and download
the .deb file for the Ubuntu release and architecture you want to
install.
Note
Starting with 19.03, you have to download three .deb files.
They are docker-ee-cli_<version>.deb,
containerd.io_<version>.deb, and docker-ee_<version>.deb.
Install MCR, changing the path below to the path where you
downloaded the Mirantis Container Runtime package.
Verify that MCR is installed correctly by running the hello-world image.
sudodockerrunhello-world
This command downloads a test image and runs it in a container. When
the container runs, it prints an informational message and exits.
Mirantis Container Runtime is installed and running. The docker group is
created but no users are added to it. You need to use sudo to run MCR
commands.
By default, MCR automatically records and transmits data to Mirantis for
monitoring and analysis purposes. The data collected provides the Mirantis
Customer Success Organization with information that helps us to better
understand the operational use of MCR by our customers. It also provides key
feedback in the form of product usage statistics, which enable our product
teams to enhance Mirantis products and services.
To disable the telemetry function, set
features.telemetry to false in your /etc/docker/daemon.json file.
Change the setting to true to re-enable telemetry.
{"features":{"telemetry":false}}
Caution
To send the telemetry, verify that dockerd can resolve api.segment.io
and create a TCP (HTTPS) connection on port 443.
Images, containers, volumes, or customized configuration files on
your host are not automatically removed. Run the following command to
delete all images, containers, and volumes.
sudorm-rf/var/lib/docker
You must delete any edited configuration files manually.
Mirantis Container Runtime (MCR) enables native Docker containers on Windows
Server. The Mirantis Container Runtime installation package includes everything
you need to run Docker on Windows Server. This topic describes pre-install
considerations, and how to download and install Mirantis Container Runtime.
Mirantis provides an installation script to ease MCR installation on a Windows
Server machine. The script uses default values, thus allowing it to be run
without configuration. You can, however, override the default values with
script parameters and env variables. Parameter values take precedence over env
variables. Both take precedence over inbuilt default values.
The installation script must be executed from an elevated command prompt.
If you want to change the default daemon values, ensure that you have the
alternative cofigurations and the related collateral in place prior to
executing the script. For example, if you want to enable TLS, store the
certificates and write the daemon configuration file before invoking the
script.
The installer will issue a prompt, should it require a reboot.
Note
The installation script installs a numerically higher version by
default. The latest tag, however, explicitly denotes the binary that was
last pushed, which may not be a numerically higher version.
Test your MCR installation by running the hello-world container.
dockerrunhello-world:nanoserver
The container starts, prints the HellofromDocker! message, and then exits.
MCR provides FIPS 140-2 support in Windows Server, which includes a FIPS
supported cryptographic module. If the Windows implementation already has FIPS
support enabled, FIPS is automatically enabled in MCR.
Note
FIPS 140-2 is only supported in MCR. MKE and MSR currently do not support FIPS 140-2.
To enable FIPS 140-2 compliance on a system that is not in FIPS 140-2
mode, run the following command in PowerShell:
You can also enable FIPS 140-2 mode using the Windows Registry. To update
the pertinent registry key, execute the following PowerShell command as
an Administrator:
To confirm Docker is running with FIPS-140-2 enabled, run the
docker info.
Labels:com.docker.security.fips=enabled
Note
FIPS-140-2 compliance can be disabled if the FIPS-140-2 cryptographic
module is installed on the operating system. To disable FIPS-140-2 in
Docker but not the operating system, set the value "DOCKER_FIPS","0" in
[System.Environment].\
If your hardware is air-gapped you can still install MCR. To do so, download
the installer and copy the files to the air-gapped machine (the default
installation assumes that the zipped files and script are in the same
location).
Run the installation script with the -DownloadOnly parameter. As per the
parameter name, this action only downloads the zip file (no installation is
performed).
.\<installation-script>-DownloadOnly
Copy the installation script and the installation zip file over to the
air-gapped machine and run the install with the -Offline parameter.
Use the following three parameters separately or in tandem to install a
specific version of MCR for Windows Server.
Caution
MCR does not support using earlier versions of containerd than the version
with which it is released. For supported containerd versions, refer to the
Components section of the required MCR version in
Release Notes.
The installation script uses the parameters detailed below.
Parameter
Description
.PARAMETER DownloadUrl
[Alternately specified by $Env:DOWNLOAD_URL]
Specifies an alternative repository in which to download container
runtime packages.
.PARAMETER Channel
[Alternately specified by $Env:CHANNEL]
Specifies which channel to use for picking the binaries (examples
include stable and test). Default: stable.
.PARAMETER DockerVersion
[Alternately specified by $Env:DOCKER_VERSION]
Specifies the version number for the DockerEE binaries to install.
The latest version is the default.
.PARAMETER ContainerdVersion
[Alternately specified by $Env:CONTAINERD_VERSION]
Specifies the version number for the containerd binaries to install
The latest version is the default.
.PARAMETER DryRun
If specified, list different steps to use without actually invoking
those steps.
.PARAMETER Uninstall
If specified, uninstalls all packages. This includes
unregistering the corresponding services and removing paths
for the package from the registry.
All other script parameters (except DryRun and DestPath) are
ignored if this switch is specified. Common parameters such
as -Verbose are still honored.
.PARAMETER Ver
Print version info for the script and exit.
.PARAMETER NoServiceStarts
If specified, services are not started on successful install.
By default, all services installed by the script are
left in a running state before exit.
.PARAMETER DestPath
Path to the directory under which binaries will be installed.
Default: %PROGRAMDATA%
.PARAMETER OfflinePackagesPath
The folder for airgap/offline scenarios. For use when the
offline or DownloadOnly parameters are specified. Used to
either save the downloaded packages for later offline use
or for pointing to previously downloaded packages for
offline install.
.PARAMETER Offline
Install packages in offline/airgap mode. By default the
current directory is used to locate previously
downloaded packages, a setting that can be overridden by using
the OfflinePackagesPath parameter.
.PARAMETER DownloadOnly
Download and save packages for later offline/airgap install.
This is often arises if you have ming/mingw64 as a part of your PATH env
variable. As a workaround, ensure that the offending software is
not on the PATH and run the script again.
The script supports airgap functionality by providing access to
download packages while online, as well as to install those selfsame
packages while offline.
For downloads, please ensure that the script has access to the internet. Use
the -DownloadOnly parameter. By default the script will use the current
directory to store the packages after download, a setting that can be
changed by specifying the path explicitly with the -OfflinePackagesPath
parameter.
For offline/airgap install, please use the -Offline parameter. By
default the script searches for pacakages in the current directory, a
setting that can be changed by specifying the -OfflinePackagesPath
parameter.
While downloading using -DownloadOnly parameter, confirm that the
download path is accessible to the script, especially if you run the
script without administrative rights.
The following is required so that the script can be invoked with named
parameters (for example, -ContainerdVersion1.3.4...). If a parameter is
used, its type is checked by powershell - we give a higher precedence to the
parameters specified in this manner versus the same value specified by env
vars.
Parameters received at invocation time. Some of these values are merged
with values specified by env vars - see reconcileParams. Others are used as-is.
By default, MCR automatically records and transmits data to Mirantis for
monitoring and analysis purposes. The data collected provides the Mirantis
Customer Success Organization with information that helps Mirantis to better
understand the operational use of MCR by our customers. It also provides key
feedback in the form of product usage statistics, which enables our product
teams to enhance Mirantis products and services.
To disable the telemetry function, set features.telemetry to false in
the daemon.json file, which is located in
C:\ProgramData\docker\config\.
{"features":{"telemetry":false}}
You can change the setting back to true to re-enable telemetry
Caution
To send the telemetry, verify that dockerd can resolve api.segment.io
and create a TCP (HTTPS) connection on port 443.
Customers who use MCR with Kubernetes directly (without MKE) must use a
plugin maintained by Kubernetes called dockershim for Kubernetes 1.23 and
below or a plugin maintained by Mirantis called cri-docker (included in
MCR) for Kubernetes 1.24 and above.
Several Docker resources are available which cover the basics of Mirantis
Container Runtime security, including:
Docker Security Documentation describes the
fundamentals, such as namespaces and control groups, the attack surface of
the Docker daemon, and other kernel security features.
When antivirus and antimalware software products scan files in use by MCR,
these files can lock in a way that causes Docker commands to hang or causes
orphaned snapshots to leak disk space. To circumvent these problems, you can
add the Docker data directory to the software’s exclusion list, which is by
default /var/lib/docker on Linux systems and %ProgramData%\docker on
Windows Server systems. As a result of this action, though, viruses or malware
in local Docker images, writable layers of containers, or volumes will go
undetected.
Note
If you choose to exclude the Docker data directory from background virus
scanning, Mirantis recommends that you schedule recurring tasks for stopping
MCR, for scanning the data directory, and for restarting MCR. Make sure to
stagger these recurring tasks, though, as running them in sync can cause a
system outage.
Mirantis Container Runtime (MCR) subscriptions provide access to prioritized
support for designated contacts from your company, agency, team, or
organization. MCR service levels are based on your subscription level and the
cloud or cluster that you designate in your technical support case. Our support
offerings are described on the
Enterprise-Grade Cloud Native and Kubernetes Support page.
You may inquire about Mirantis support subscriptions by using the
contact us form.
The CloudCare Portal is the primary way
that Mirantis interacts with customers who are experiencing technical
issues. Access to the CloudCare Portal requires prior authorization by your
company, agency, team, or organization, and a brief email verification step.
After Mirantis sets up its back-end systems at the start of the support
subscription, a designated administrator at your company, agency, team, or
organization, can designate additional contacts. If you have not already
received and verified an invitation to our CloudCare Portal, contact your local
designated administrator, who can add you to the list of designated contacts.
Most companies, agencies, teams, and organizations have multiple designated
administrators for the CloudCare Portal, and these are often the persons most
closely involved with the software. If you do not know who your
local designated administrator is, or you are having problems accessing the
CloudCare Portal, you may also send an email to Mirantis support at
support@mirantis.com.
Once you have verified your contact details and changed your password, you and
all of your colleagues will have access to all of the cases and resources
purchased. Mirantis recommends that you retain your Welcome to Mirantis
email, because it contains information on how to access the CloudCare Portal,
guidance on submitting new cases, managing your resources, and other related
issues.
We encourage all customers with technical problems to use the
knowledge base, which you can access on the Knowledge tab
of the CloudCare Portal. We also encourage you to review the
MKE product documentation and release notes prior to
filing a technical case, as the problem may already be fixed in a later
release or a workaround solution provided to a problem experienced by other
customers.
One of the features of the CloudCare Portal is the ability to associate
cases with a specific MKE cluster. These are referred to in the Portal as
“Clouds”. Mirantis pre-populates your customer account with one or more
Clouds based on your subscription(s). You may also create and manage
your Clouds to better match how you use your subscription.
Mirantis also recommends and encourages customers to file new cases based on a
specific Cloud in your account. This is because most Clouds also have
associated support entitlements, licenses, contacts, and cluster
configurations. These greatly enhance the ability of Mirantis to support you in
a timely manner.
You can locate the existing Clouds associated with your account by using the
Clouds tab at the top of the portal home page. Navigate to the
appropriate Cloud and click on the Cloud name. Once you have verified that the
Cloud represents the correct MKE cluster and support entitlement, you
can create a new case via the New Case button near the top of the
Cloud page.
One of the key items required for technical support of most MKE cases is the
support bundle. This is a compressed archive in ZIP format of configuration
data and log files from the cluster. There are several ways to gather a support
bundle, each described in the paragraphs below. After you obtain a support
bundle, you can upload the bundle to your new technical support case by
following the instructions in the Mirantis knowledge base,
using the Detail view of your case.
Obtain a full-cluster support bundle using the MKE web UI¶
Log in to the MKE web UI as an administrator.
In the left-side nagivation panel, navigate to
<user name> and click Support Bundle.
It may take several minutes for the download to complete.
Note
The default name for the generated support bundle file is
docker-support-<cluster-id>-YYYYmmdd-hh_mm_ss.zip. Mirantis suggests
that you not alter the file name before submittal to the customer portal.
However, if necessary, you can add a custom string between
docker-support and <cluster-id>, as in:
docker-support-MyProductionCluster-<cluster-id>-YYYYmmdd-hh_mm_ss.zip.
Submit the support bundle to Mirantis by clicking Share support
bundle on the success prompt that displays when the support bundle finishes
downloading.
Note
Mirantis uses the support bundles you submit for product improvement
purposes. Be aware, though that these submissions are not sent directly
to the Mirantis Customer Support team that is assigned to the particular
issue.
Fill in the Jira feedback dialog, and click Submit.
Obtain a single-node support bundle using the CLI¶
If SELinux is enabled, include the following additional flag:
--security-optlabel=disable.
Note
The CLI-derived support bundle only contains logs for the node on which
you are running the command. If your MKE cluster is highly available,
collect support bundles from all manager nodes.
Add the --submit option to the support command to submit
the support bundle to Mirantis Customer Support. The support
bundle will be sent, along with the following information:
Cluster ID
MKE version
MCR version
OS/architecture
Cluster size
Note
Mirantis uses the support bundles you submit for product improvement
purposes. Be aware, though that these submissions are not sent directly
to the Mirantis Customer Support team that is assigned to the particular
issue.
For more information on the support command, refer to
mke-cli-support.
The version numbering scheme for Mirantis Container Runtime 20.10 is
independent and dissimilar from that in use by the upstream Moby and Docker
CLI projects. As such, Mirantis recommends that users consult the MCR 20.10
patch release notes to determine Mirantis-specific changes and improvements.
Considerations
In developing MCR 20.10.x, Mirantis has been transitioning from legacy
Docker Hub-issued licenses to JWT licenses, as detailed below:
Versions 20.10.0 to 20.10.6: Docker Hub licenses and JWT licenses
Versions 20.10.7 and later: JWT licenses only
Using a JWT license with an MKE instance that manages MCR causes the
engine to log error messages in the daemon log file, though MCR does not
fail. This applies to MKE 3.4.x versions prior to 3.4.6 and MKE 3.3.x
versions prior to 3.3.13.
CentOS 8 entered EOL status as of 31-December-2021. For this reason,
Mirantis no longer supports CentOS 8 for all versions of MCR. We encourage
customers who are using CentOS 8 to migrate onto any one of the supported
operating systems, as further bug fixes will not be forthcoming. Refer to
the MCR 20.10 Compatibility Matrix for more information.
MCR 20.10.21 current
Patch release for MCR 20.10 introducing the following updates:
Updated containerd to version 1.6.25-rc.1.
Updated Golang to version 1.20.10m1.
MCR 20.10.20
Patch release for MCR 20.10 introducing the following updates:
Updated containerd to version 1.6.22.
Updated Golang to version 1.19.12.
MCR 20.10.19
Patch release for MCR 20.10 introducing the following updates:
Updated containerd to version 1.6.22.
CVE fixes.
MCR 20.10.18
Patch release for MCR 20.10 introducing the following updates:
Updated Fipster (Go runtime) to version go1.19.10m1.
Updated Docker Buildx to version 0.10.5.
Updated containerd to version 1.6.21.
Updated cri-dockerd to version 0.3.4.
CVE fixes.
MCR 20.10.17
Patch release for MCR 20.10 introducing the following key features:
Updated Fipster (Go runtime) to version go1.19.8m1.
Updated containerd to version 1.6.20.
CVE fixes.
MCR 20.10.16
Patch release for MCR 20.10 introducing the following key features:
Updated Fipster (Go runtime) to version go1.19.7m3.
Updated Docker Buildx to version 0.10.4.
Updated containerd to version 1.6.19.
Updated cri-dockerd to version 0.3.1.
CVE fixes.
MCR 20.10.15
Patch release for MCR 20.10 introducing the following key features:
Updated Golang to version 1.18.10.
Updated docker buildx to version 0.10.0.
Added support for Oracle Linux 8.
MCR 20.10.14
Patch release for MCR 20.10 introducing the following key features:
Updated Golang to version 1.18.7.
MCR 20.10.13
Patch release for MCR 20.10 introducing the following key features:
Updated Golang to version 1.17.13.
Added support for Windows Server 2022.
MCR 20.10.12
Patch release for MCR 20.10 introducing the following key features:
Updated containerd to 1.6.6.
Added rootless mode for many Linux distributions.
Updated docker buildx to version 0.8.2.
MCR 20.10.11
Patch release for MCR 20.10 introducing the following key features:
Updated the etcd dependency to prevent the daemon from incorrectly holding
file locks.
Support added for Rocky Linux 8.
Updated the Golang runtime to Go version 1.16.15.
MCR 20.10.10
Patch release for MCR 20.10 introducing the following key features:
Updated docker buildx to version 0.7.1.
Updated the Golang runtime to Go version 1.16.13.
MCR 20.10.9
Patch release for MCR 20.10 introducing the following key features:
Created parent directories inside a chroot during docker cp to prevent a
specially-crafted container from changing permissions of existing files in
the host filesystem.
Locked down file permissions to prevent unprivileged users from
discovering and executing programs in /var/lib/docker.
Added support for clone3 syscall in the default seccomp policy, to support
running containers based on recent versions of Ubuntu.
MCR 20.10.8
Patch release for MCR 20.10 introducing the following key feature:
MCR now prints a warning when using the --platform option to
pull a single-arch image that does not match the specified architecture.
MCR 20.10.7
Patch release for MCR 20.10 introducing the following key feature:
MCR now accepts only JWT licenses. To upgrade MCR, customers using a
Docker Hub-issued license must first replace it with the new license
version.
MCR 20.10.6
Patch release for MCR 20.10 introducing the following key features:
Suppressed warnings for deprecated cgroups.
The docker CLI now ignores SIGURG signals, and thus no
longer sends them to containers on Linux.
Updated BuildKit to version 0.8.3-3-g244e8cde.
MCR 20.10.5
Patch release for MCR 20.10 introducing the following key feature:
Added a technical preview for cri-docker (previously known as dockershim).
MCR 20.10.4
Patch release for MCR 20.10 introducing the following key feature:
MCR confirms that AppArmor and SELinux profiles are applied when
building with BuildKit.
MCR 20.10.0
Patch release for MCR 20.10 introducing the following key features:
Support for cgroups v2 which limits process resource usage
(such as CPU, memory, and disk). MCR uses cgroups in conjunction with
Linux namespaces to isolate processes inside containers.
Support for using docker logs to read container logs, regardless of
the configured logging driver or plugin.
Fixed a number of issues that can cause Swarm encrypted overlay networks to
fail to uphold their guarantees, addressing CVE-2023-28841,
CVE-2023-28840, and
CVE-2023-28842.
A lack of kernel support for encrypted overlay networks now reports
as an error.
Encrypted overlay networks are eagerly set up, rather than waiting for
multiple nodes to attach.
Encrypted overlay networks are now usable on Red Hat Enterprise Linux 9
through the use of the xt_bpf kernel module.
Users of Swarm overlay networks should review GHSA-vwm3-crmr-xfxw
to ensure that unintentional exposure has not occurred. In addition, you
can consult Mirantis KB000009856 for temporary mitigation
instructions.
Fixed a bug wherein the use of docker volume prune removed
volumes that were still in use if the daemon was running with “live restore”
and was restarted (moby/moby#44238).
Updated handling of image:tag@digest references. When pulling an image
using image:tag@digest (“pull by digest”), image resolution occurs
through the content-addressable digest and the image and tag are not used.
While expected, this can lead to confusing behavior, and can also
potentially be exploited through social engineering to run an image that is
already present in the local image store. MCR now checks whether the
digest matches the repository name that is used to pull the image.
Fixed a security vulnerability related to supplementary group
permissions that can allow a container process to bypass primary group
restrictions within the container CVE-2022-36109,
GHSA-rc4r-wh2q-q6c4.
Added support to seccomp for Landlock syscalls in the default policy
(moby/moby#43991).
Updated the default seccomp policy to support new syscalls that were
introduced in kernel 5.12 - 5.16 (moby/moby#43991).
Fixed an issue wherein cache lookup for image manifests failed, which
resulted in a redundant roundtrip to the image registry (moby/moby#44109).
Fixed an issue wherein exec processes and healthchecks were not
terminated once they timed out (moby/moby#44018).
Fixed an issue wherein the Interlock proxy config size was reaching and
attempting to exceed the swarm-config-size limitation (FIELD-4709)
(moby/moby#43356).
Fixed an application performance issue with VIP endpoint (FIELD-3942)
(FIELD-4867) (moby/moby#43683).
Fixed an issue wherein UDP ports were not available for five minutes
following a container stoppage or crash in swarm service VIP endpoint mode
(FIELD-4882).
MCR now prevents an OOM from occuring when using the local logging driver
with containers that produce a large amount of log messages (moby/moby#43165).
MCR now updates the fluentd log driver, to prevent a potential daemon
crash and to prevent containers from hanging when using the
fluentd-async-connect=true while the remote server is unreachable
(moby/moby#43147).
The removal of the ipa SELinux module from the base system configuration
of Red Hat Enterprise Linux 8.4 stripped container_exec_t processes
inside containers of their ability to read pidfile-labeled files,
including conttainer_var_run_t.
Workaround:
Workflows that rely on bind mounting the Docker socket in a container running
on RHEL 8.4 or later should mount the socket with --security-opt=disable
or an SELinux mount option, such as Z.
Created parent directories inside a chroot during dockercp to
prevent a specially-crafted container from changing permissions of existing
files in the host filesystem. This fix resolves CVE-2021-41089.
Locked down file permissions to prevent unprivileged users from
discovering and executing programs in /var/lib/docker, to resolve
CVE-2021-41091.
Added support for clone3 syscall in the default seccomp policy, to
support running containers based on recent versions of Ubuntu
(moby/moby/#42836.
Windows: Updated hcsshim library to fix a bug in sparse file handling of
container layers, which was exposed by recent changes in
Windows (moby/moby#42944.
Fixed a number of situations wherein dockerstop could hang and never
resolve (moby/moby#42956).
Fixed a FIPS mode memory leak issue that arose in MCR 20.10.8
(FIELD-4523, ENGINE-539, ENGINE-543).
Deprecated support for encrypted TLS private keys. Legacy PEM encryption (as
specified in RFC 1423) is insecure by design. Because legacy PEM encryption
does not authenticate the ciphertext, it is vulnerable to padding oracle
attacks that can allow an attacker to recover the plaintext (docker/cli#3219).
MCR now prints a warning when using the --platform option to pull a
single-arch image that does not match the specified architecture
(moby/moby#42633).
Fixed an issue wherein the following incorrect warning displayed when running
cgroups v2:
Fixed an issue with MCR on Windows wherein containers were not stopped if
HcsShutdownComputeSystem returned an ERROR_PROC_NOT_FOUND error
(moby/moby#42613).
Fixed an issue wherein using a JWT license with an MKE instance that manages
MCR caused MCR to log error messages (FIELD-4201).
Fixed an issue wherein the docker info and
docker version commands did not properly display the MCR license
information on nodes that do not belong to a swarm (FIELD-4180).
MCR now accepts only JWT licenses. To upgrade MCR, customers using a Docker
Hub-issued license must first replace it with the new license version
(ENGINE-486).
Suppressed warnings for deprecated cgroups (docker/cli#3099).
The docker CLI now ignores SIGURG signals, and thus no longer
sends them to containers on Linux. Starting with version 1.14, the Go runtime
uses SIGURG signals internally as an interrupt to support preemptable
syscalls. docker CLI previously forwarded these signals to the
containers it was attached to (docker/cli#3107, moby/moby#42421).
Updated BuildKit to version 0.8.3-3-g244e8cde (moby/moby#42448).
Transformed relative mountpoints for exec mounts in the executor to work
around a breaking change in runc version 1.0.0-rc94 and higher
(moby/buildkit#2137).
Fixed an issue wherein renaming a file copied using a COPY command with
a wildcard did not invalidate the build-cache. This change invalidates
existing build caches for copy commands that use a wildcard
(moby/buildkit#2018).
Fixed an issue wherein the use of mounts did not invalidate the build-cache
(moby/buildkit#2076).
Fixed an issue wherein MCR did not cache the FROM image when using legacy
schema 1 images, resulting in build failures (moby/moby#42382).
Updated libnetwork to fix publishing ports on environments with the
kernel boot parameter ipv6.disable=1 and a deadlock that caused
internal DNS lookups to fail (moby/moby#42413).
Fixed an issue wherein overlapping IP addresses could occur due to nodes
failing to clean up their old load balancer IP addresses (FIELD-3915).
Fixed an issue wherein the classic builder was silently ignoring unsupported
Dockerfile options. It now prompts the user to enable BuildKit instead
(moby/moby#42197).
Fixed a regression that caused IPv6 addresses not to be bound by default when
mapping ports (moby/moby#42205).
Fixed implicit IPv6 port-mappings not included in the API response. Prior to
version 20.10.0, while published ports were accessible through both IPv4
and IPv6 by default, the API only included information about the IPv4
(0.0.0.0) mapping (moby/moby#42205).
Fixed a regression wherein the docker-proxy did not terminate in all cases
(moby/moby#42205).
Fixed an issue wherein iptables forwarding rules were not cleaned up when
containers were removed (moby/moby#42205).
Fixed an issue wherein swarm service VIPs timed out from Windows containers,
resulting in the following error in dockerd event logs:
Centos and RHEL 7.x kernels may experience memory exhaustion due to slab
cache usage. Because this is a kernel feature, the issue cannot be resolved
with MCR code.
Workarounds:
(Recommended) Update to a kernel that supports setting
cgroups.memory=nokmem and apply the change (for customers using Centos
or RHEL 7.7 and above).
Increase the memory available to the machine for slab usage.
Customers who use MCR with Kubernetes directly (without using MKE) need
to enable the cri-docker plugin in MCR beginning with Kubernetes version
1.23 (planned for late 2021), at which point Kubernetes will no longer
maintain dockershim (MKE-8126).
Learn more
cri-docker
Fixed an issue wherein dockerlogin resulted in a panic if no config
file was present
(docker/cli#2959).
Fixed an issue wherein MCR erroneously displayed the warning:
WARNING:Errorloadingconfigfile:.dockercfg:$HOMEisnotdefined
(docker/cli#2958).
Fixed an issue wherein custom Docker heartbeat periods reverted back to
the default setting on restart. Thus, previously stalled tasks will no longer
be stuck in a pending state (FIELD-3563,
moby/moby#42060).
Fixed an issue wherein MCR ignored --update-order and
--rollback-order flags
(docker/cli#2963).
Fixed an issue wherein docker service rollback sometimes returned
a non-zero exit code
(docker/cli#2964).
Fixed an issue wherein the direction of the progress bar rendered
inconsistently on docker service rollback
(docker/cli#2964).
Added support for cgroups v2 which limits process resource usage
(such as CPU, memory, and disk). MCR uses cgroups in conjunction with
Linux namespaces to isolate processes inside containers. As a result,
rootless is now a fully supported feature.
Added support for using docker logs to read container logs, regardless of
the configured logging driver or plugin. Previously, docker logs did not
support the use of many third party logging drivers, and this led to
log data gathering issues.
Added several CLI improvements. Along with the removal of some older and
mostly unused commands, various new commands and flags have been added
that make it easier to get started and to script using MCR:
dockerpush has been modified to align the default behavior with
dockerpull. Pushing an image name without a tag now pushes only the
:latest rather than all tags, and -a/all-tags can now be used to
push all the tags of an image.
The --pull flag has been added to the dockerrun and
dockercreate commands, affording greater control over when users pull
images. The option is tristate, offering missing (default),
always, and late settings.
The -env-file flag has been added to dockerexec, allowing use with
a file that contains environment variables and subsequent printing or use
of any of the variables inside the file.
Making dockerpull requests against non-compliant registries that do not
support pull-by-digest now results in a warning and deprecation notice
(docker/cli#2872).
Unauthenticated TCP access now results in a more severe warning and
deprecation notice
(moby/moby#41285).
The --cluster-advertise, --cluster-store, and --cluster-store-opt
flags are deprecated from the dockerd CLI
(moby/moby#40614
and moby/moby#40510).
The legacy Dockerfile ENVnamevalue syntax is deprecated. Use
ENVname=value instead
(docker/cli#2743).
The previously deprecated filter parameter has been removed for API
v1.41 and up (moby/moby#40491).
The distribution manifest v2 schema 1 is now disabled on push
(moby/moby#41295).
The MalformedHostHeaderOverride hack has been removed, causing
CLI v1.12 and earlier to break. Affected users should upgrade to a more
recent client version or set the DOCKER_API_VERSION environment variable
to the needed API version
(moby/moby#39076).
The dockerengine subcommands have been removed
(docker/cli#2207).
The top-level dockerdeploy command and .dab (“Docker Application
Bundle”) file format have both been removed in favor of using
dockerstackdeploy with compose files
(docker/cli#2216).
The dockersearch--automated and dockersearch--stars flags have
been removed in favor of using their dockersearch--filter equivalents
(docker/cli#2338).
Use of reserved namespaces in engine labels is deprecated
(docker/cli#2326).
Taking into account continuous reorganization and enhancement of Mirantis
Container Runtime (MCR), certain components are deprecated and eventually
removed from the product. Such deprecations for MCR 20.10.x include:
Deprecated support for the registry-cli plugin.
Deprecated support for the docker app plugin.
Deprecated support for encrypted TLS private keys.
Kubernetes stack support is deprecated.
In correlation with the End of Life date for MKE 3.2.x and MSR 2.7.x,
Mirantis stopped maintaining the associated documentation set on 2021-07-21.
Initiating docker pull requests against non-compliant
registries that do not support pull-by-digest is deprecated.
KernelMemory (docker run --kernel-memory) is deprecated.
The aufs storage driver is deprecated.
The --cluster-advertisea, --cluster-store, and
--cluster-store-opt flags are deprecated from the dockerd CLI.
The legacy Dockerfile ENV name value syntax is deprecated. Use ENV
name=value instead.
The distribution manifest v2 schema 1 is now disabled on push.
The MalformedHostHeaderOverride hack has been removed, causing CLI
v1.12 and earlier to break.
The docker engine subcommands have been removed.
The top-level docker deploy command and .dab (“Docker
Application Bundle”) file format have both been removed in favor of using
docker stack deploy with compose files.
The docker search --automated and
docker search --stars flags have been removed in favor of using
their docker search --filter equivalents.
Use of reserved namespaces in engine labels is deprecated.
Mirantis Container Runtime (MCR) enables containers to run efficiently on any
substrate, powering business critical applications at leading companies
worldwide.
MKE 3.5.x and 3.4.x do not support Windows Server 2022.
OS distributed versions not listed in the following matrix are not
supported under Standard Support Subscriptions. For such versions, contact
your Mirantis rep to discuss support options.
Caution
CentOS 8 entered EOL status as of 31-December-2021. For this reason,
Mirantis no longer supports CentOS 8 for all versions of MCR. We encourage
customers who are using CentOS 8 to migrate onto any one of the supported
operating systems, as further bug fixes will not be forthcoming.
The MKE, MSR, and MCR platform subscription provides software, support, and
certification to enterprise development and IT teams that build and manage
critical apps in production at scale. It provides a trusted platform for all
apps which supply integrated management and security across the app lifecycle,
comprised primarily of Mirantis Kubernetes Engine, Mirantis Secure Registry
(MSR), and Mirantis Container Runtime (MCR).
Mirantis validates the MKE, MSR, and MCR platform for the operating system
environments specified in the mcr-23.0-compatibility-matrix, adhering
to the Maintenance Lifecycle detailed here. Support for the MKE, MSR, and MCR
platform is defined in the Mirantis Cloud Native Platform Subscription
Services agreement.
Detailed here are all currently supported product versions, as well as the
product versions most recently deprecated. It can be assumed that all earlier
product versions are at End of Life (EOL).
Important Definitions
“Major Releases” (X.y.z): Vehicles for delivering major and minor feature
development and enhancements to existing features. They incorporate all
applicable Error corrections made in prior Major Releases, Minor Releases,
and Maintenance Releases.
“Minor Releases” (x.Y.z): Vehicles for delivering minor feature
developments, enhancements to existing features, and defect corrections. They
incorporate all applicable Error corrections made in prior Minor Releases,
and Maintenance Releases.
“Maintenance Releases” (x.y.Z): Vehicles for delivering Error corrections
that are severely affecting a number of customers and cannot wait for the
next major or minor release. They incorporate all applicable defect
corrections made in prior Maintenance Releases.
“End of Life” (EOL): Versions are no longer supported by Mirantis,
updating to a later version is recommended.
With the intent of improving the customer experience, Mirantis strives to offer
maintenance releases for the Mirantis Container Runtime (MCR) software every
six to eight weeks. Primarily, these maintenance releases will aim to resolve
known issues and issues reported by customers, quash CVEs, and reduce technical
debt. The version of each MCR maintenance release is reflected in the third
digit position of the version number (as an example, for MCR 20.10 the most
current maintenance release is MCR 20.10.20).
Regarding major releases, MCR is dependent on Docker Engine major releases
upstream. Following such a release, the Mirantis support lifespan of the
resulting major version of MCR will adhere to our legacy two year standard
End of Life Date
The End of Life (EOL) date for MCR 20.10 is 2023-DEC-10.
The MCR team will make every effort to hold to the release cadence stated here.
Customers should be aware, though, that development and release cycles can
change, and without advance notice.
A Technology Preview feature provides early access to upcoming product
innovations, allowing customers to experiment with the functionality and
provide feedback.
Technology Preview features may be privately or publicly available and neither
are intended for production use. While Mirantis will provide assistance with
such features through official channels, normal Service Level Agreements do not
apply.
As Mirantis considers making future iterations of Technology Preview features
generally available, we will do our best to resolve any issues that customers
experience when using these features.
During the development of a Technology Preview feature, additional components
may become available to the public for evaluation. Mirantis cannot guarantee
the stability of such features. As a result, if you are using Technology
Preview features, you may not be able to seamlessly upgrade to subsequent
product releases.
Mirantis makes no guarantees that Technology Preview features will graduate to
generally available features.
Verify that you now have the key with the fingerprint
DD911E995A64A202E85907D6BC14F10B6D085F96 by searching
for the last eight characters of the fingerprint:
Follow the link to download your MCR license file found in the confirmation
email you received after purchasing MCR from the Mirantis web store. If you
cannot access your confirmation email, contact Mirantis.
Copy the file to the data root directory and name it docker.lic. The
default data root directory is /var/lib/docker.
You only need to set up the repository once, after which you can install MCR
from the repository and upgrade as needed. MCR supports the latest version of
CentOS 64-bit running on x86_64.
Note
MCR supports the overlay2 storage drivers on CentOS. The following
limitations apply:
If you enable selinux, MCR supports overlay2 on CentoOS 7.4 and
higher.
If you disable selinux, MCR supports overlay2 on CentOS 7.2 and
higher, with kernel version 3.10.0-693 and higher.
Remove any existing Docker repositories from /etc/yum.repos.d/:
sudorm/etc/yum.repos.d/docker*.repo
Store https://repos.mirantis.com in an environment variable:
exportDOCKERURL="https://repos.mirantis.com"
Store the value of DOCKERURL using a yum variable in
/etc/yum/vars/:
Follow the link to download your MCR license file found in the confirmation
email you received after purchasing MCR from the Mirantis web store. If you
cannot access your confirmation email, contact Mirantis.
Copy the file to the data root directory and name it docker.lic. The
default data root directory is /var/lib/docker.
Follow the link to download your MCR license file found in the confirmation
email you received after purchasing MCR from the Mirantis web store. If you
cannot access your confirmation email, contact Mirantis.
Copy the file to the data root directory and name it docker.lic. The
default data root directory is /var/lib/docker.
You only need to set up the repository once, after which you can install MCR
from the repository and upgrade as needed. MCR supports RHEL 64-bit version 7.4
and higher running on x86_64.
Note
MCR supports the overlay2 storage drivers on RHEL. The following
limitations apply:
If you enable selinux, MCR supports overlay2 on RHEL 7.4 and
higher (OverlayFS).
If you disable selinux, MCR supports overlay2 on RHEL 7.2 and
higher, with kernel version 3.10.0-693 and higher.
Follow the link to download your MCR license file found in the confirmation
email you received after purchasing MCR from the Mirantis web store. If you
cannot access your confirmation email, contact Mirantis.
Copy the file to the data root directory and name it docker.lic. The
default data root directory is /var/lib/docker.