diff --git a/dockers/docker-fpm-frr/docker_init.sh b/dockers/docker-fpm-frr/docker_init.sh
index a4db7d3cf3..c0cc341ce7 100755
--- a/dockers/docker-fpm-frr/docker_init.sh
+++ b/dockers/docker-fpm-frr/docker_init.sh
@@ -6,6 +6,30 @@ mkdir -p /etc/supervisor/conf.d
 sonic-cfggen -d -t /usr/share/sonic/templates/supervisord/supervisord.conf.j2 > /etc/supervisor/conf.d/supervisord.conf
 
 CONFIG_TYPE=`sonic-cfggen -d -v 'DEVICE_METADATA["localhost"]["docker_routing_config_mode"]'`
+
+if [[ ! -z "$NAMESPACE_ID" ]]; then
+   # FRR is not running in host namespace so we need to delete
+   # default gw kernel route added by docker network via eth0 and add it back
+   # with higher administrative distance so that default route learnt
+   # by FRR becomes best route if/when available
+   GATEWAY_IP=$(ip route show 0.0.0.0/0 dev eth0 | awk '{print $3}')
+   #Check if docker default route is there
+   if [[ ! -z "$GATEWAY_IP" ]]; then
+      ip route del 0.0.0.0/0 dev eth0
+      #Make sure route is deleted
+      CHECK_GATEWAY_IP=$(ip route show 0.0.0.0/0 dev eth0 | awk '{print $3}')
+      if [[ -z "$CHECK_GATEWAY_IP" ]]; then
+         # Ref: http://docs.frrouting.org/en/latest/zebra.html#zebra-vrf
+         # Zebra does treat Kernel routes as special case for the purposes of Admin Distance. \
+         # Upon learning about a route that is not originated by FRR we read the metric value as a uint32_t.
+         # The top byte of the value is interpreted as the Administrative Distance and
+         # the low three bytes are read in as the metric.
+         # so here we are programming administrative distance of 210 (210 << 24) > 200 (for routes learnt via IBGP)
+         ip route add 0.0.0.0/0 via $GATEWAY_IP dev eth0 metric 3523215360
+      fi
+   fi
+fi
+
 if [ -z "$CONFIG_TYPE" ] || [ "$CONFIG_TYPE" == "separated" ]; then
     sonic-cfggen -d -t /usr/share/sonic/templates/bgpd/bgpd.conf.j2 -y /etc/sonic/constants.yml > /etc/frr/bgpd.conf
     sonic-cfggen -d -t /usr/share/sonic/templates/zebra/zebra.conf.j2 > /etc/frr/zebra.conf
diff --git a/files/build_templates/docker_image_ctl.j2 b/files/build_templates/docker_image_ctl.j2
index 90a234c009..381480123f 100644
--- a/files/build_templates/docker_image_ctl.j2
+++ b/files/build_templates/docker_image_ctl.j2
@@ -295,11 +295,9 @@ start() {
         --tmpfs /tmp \
 {%- endif %}
         --tmpfs /var/tmp \
-{%- if docker_container_name == "database" %}
         --env "NAMESPACE_ID"="$DEV" \
         --env "NAMESPACE_PREFIX"="$NAMESPACE_PREFIX" \
         --env "NAMESPACE_COUNT"=$NUM_ASIC \
-{%- endif %}
         --name={{docker_container_name}}$DEV {{docker_image_name}}:latest || {
             echo "Failed to docker run" >&1
             exit 4