diff --git a/puppet/services/docker.yaml b/puppet/services/docker.yaml
index b6d29698dd..84ca549974 100644
--- a/puppet/services/docker.yaml
+++ b/puppet/services/docker.yaml
@@ -68,6 +68,12 @@ parameters:
     default: ''
     description: User added to the docker group in order to use container commands.
     type: string
+  DockerSkipUpdateReconfiguration:
+    default: false
+    type: boolean
+    description: Flag to disable docker reconfiguration during stack update.
+    tags:
+      - role_specific
 parameter_groups:
 - label: deprecated
   description: |
@@ -78,6 +84,21 @@ parameter_groups:
   parameters:
   - DockerAdditionalSockets
 
+resources:
+  # Merging role-specific parameters (RoleParameters) with the default parameters.
+  # RoleParameters will have the precedence over the default parameters.
+  RoleParametersValue:
+    type: OS::Heat::Value
+    properties:
+      type: json
+      value:
+        map_replace:
+          - map_replace:
+            - DockerSkipUpdateReconfiguration: DockerSkipUpdateReconfiguration
+            - values: {get_param: [RoleParameters]}
+          - values:
+              DockerSkipUpdateReconfiguration: {get_param: DockerSkipUpdateReconfiguration}
+
 conditions:
   insecure_registry_is_empty: {equals : [{get_param: DockerInsecureRegistryAddress}, []]}
   service_debug_unset: {equals : [{get_param: DockerDebug}, '']}
@@ -109,6 +130,7 @@ outputs:
                   - {get_param: DockerInsecureRegistryAddress}
               container_registry_mirror: {get_param: DockerRegistryMirror}
               container_registry_network_options: {get_param: DockerNetworkOptions}
+              container_registry_skip_reconfiguration: {get_attr: [RoleParametersValue, value, DockerSkipUpdateReconfiguration]}
           - include_role:
               name: container-registry
               tasks_from: docker
diff --git a/roles/OpenShiftAllInOne.yaml b/roles/OpenShiftAllInOne.yaml
index 1399f0dd0c..69520b1765 100644
--- a/roles/OpenShiftAllInOne.yaml
+++ b/roles/OpenShiftAllInOne.yaml
@@ -7,6 +7,7 @@
   CountDefault: 1
   RoleParametersDefault:
     OpenShiftNodeGroupName: 'node-config-all-in-one'
+    DockerSkipUpdateReconfiguration: true
   tags:
     - primary
     - controller
diff --git a/roles/OpenShiftInfra.yaml b/roles/OpenShiftInfra.yaml
index 3ff645cd54..3781fe450f 100644
--- a/roles/OpenShiftInfra.yaml
+++ b/roles/OpenShiftInfra.yaml
@@ -7,6 +7,7 @@
   CountDefault: 1
   RoleParametersDefault:
     OpenShiftNodeGroupName: 'node-config-infra'
+    DockerSkipUpdateReconfiguration: true
   tags:
     - openshift
   networks:
diff --git a/roles/OpenShiftMaster.yaml b/roles/OpenShiftMaster.yaml
index eee9b011fd..c16302aa79 100644
--- a/roles/OpenShiftMaster.yaml
+++ b/roles/OpenShiftMaster.yaml
@@ -7,6 +7,7 @@
   CountDefault: 1
   RoleParametersDefault:
     OpenShiftNodeGroupName: 'node-config-master'
+    DockerSkipUpdateReconfiguration: true
   tags:
     - primary
     - controller
diff --git a/roles/OpenShiftWorker.yaml b/roles/OpenShiftWorker.yaml
index 2d5c9ddc6b..3c4bd2fb1b 100644
--- a/roles/OpenShiftWorker.yaml
+++ b/roles/OpenShiftWorker.yaml
@@ -7,6 +7,7 @@
   CountDefault: 1
   RoleParametersDefault:
     OpenShiftNodeGroupName: 'node-config-compute'
+    DockerSkipUpdateReconfiguration: true
   tags:
     - openshift
   networks: