Skip to content

Commit cd6db7a

Browse files
author
Joao Fernandes
committed
Review Docker EE e2e upgrade
1 parent 60d9b42 commit cd6db7a

File tree

1 file changed

+40
-10
lines changed

1 file changed

+40
-10
lines changed

enterprise/upgrade.md

Lines changed: 40 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ following components:
1212
2. Universal Control Plane (UCP).
1313
3. Docker Trusted Registry (DTR).
1414

15-
While upgrading some of these components will become temporarily unavailable.
16-
So you should schedule your upgrades to take place outside business peak hours,
15+
While upgrading, some of these components will become temporarily unavailable.
16+
So you should schedule your upgrades to take place outside business peak hours
1717
to make sure there's no impact to your business.
1818

1919
## Create a backup
@@ -29,19 +29,43 @@ You may also want to check the
2929
[Docker EE maintenance lifecycle](https://success.docker.com/Policies/Maintenance_Lifecycle),
3030
to understand until when your version will be supported.
3131

32-
## Upgrade Docker EE
32+
## Upgrade Docker Engine
3333

34-
Start by sequentially upgrading the Docker Engine running on each node.
34+
To avoid application downtime, you should be running Docker in Swarm mode and
35+
deploying your workloads as Docker services. That way you'll be able to
36+
drain the nodes of any workloads before starting the upgrade.
37+
38+
If you have workloads running as containers as opposed to swarm services,
39+
make sure to [configure the Docker Engine with live restore](/engine/admin/live-restore.md).
40+
This will allow your containers to continue running while the Docker Engine is
41+
stopped and being upgraded.
42+
43+
To ensure that workloads running as Swarm services have no downtime, you need to:
44+
45+
1. Drain the node you want to upgrade so that services get scheduled in another node.
46+
2. Upgrade the Docker Engine on that node.
47+
3. Make the node available again.
48+
49+
If you do this sequentially for every node, you'll be able to upgrade with no
50+
application downtime.
3551
When upgrading manager nodes, make sure the upgrade of a node finishes before
3652
you start upgrading the next node. Upgrading multiple manager nodes at the same
3753
time can lead to a loss of quorum, and possible data loss.
3854

39-
Before upgrading the Docker Engine on a node, drain the node so that any
40-
workloads running on the node get scheduled in some other node. You can do
41-
this by running `docker node update --availability drain <node>` on a manager
42-
node.
55+
### Drain the node
56+
57+
Start by draining the node so that services get scheduled in another node and
58+
continue running without downtime.
59+
For that, run this command on a manager node:
4360

44-
Follow the upgrade instructions for your specific distribution:
61+
```
62+
docker node update --availability drain <node>
63+
```
64+
65+
### Perform the upgrade
66+
67+
Upgrade the Docker Engine on the node by following the instructions for your
68+
specific distribution:
4569

4670
* [Windows Server](/engine/installation/windows/docker-ee.md#update-docker-ee)
4771
* [Ubuntu](/engine/installation/linux/docker-ee/ubuntu.md#upgrade-docker-ee)
@@ -50,8 +74,14 @@ Follow the upgrade instructions for your specific distribution:
5074
* [Oracle Linux](/engine/installation/linux/docker-ee/oracle.md#upgrade-docker-ee)
5175
* [SLES](/engine/installation/linux/docker-ee/suse.md#upgrade-docker-ee)
5276

77+
### Make the node active
78+
5379
Once you finish upgrading the node, make it available to run workloads. For
54-
this, run `docker node update --availability active <node>`.
80+
this, run:
81+
82+
```
83+
docker node update --availability active <node>
84+
```
5585

5686
## Upgrade UCP
5787

0 commit comments

Comments
 (0)