diff --git a/SOURCES/cephadm b/SOURCES/cephadm
index 564028f..8cd4497 100644
--- a/SOURCES/cephadm
+++ b/SOURCES/cephadm
@@ -1685,6 +1685,13 @@ def check_units(units, enabler=None):
     return False
 
 
+def is_container_running(name: str) -> bool:
+    out, err, ret = call_throws([
+        container_path, 'ps',
+        '--format', '{{.Names}}'])
+    return name in out
+
+
 def get_legacy_config_fsid(cluster, legacy_dir=None):
     # type: (str, Optional[str]) -> Optional[str]
     config_file = '/etc/ceph/%s.conf' % cluster
@@ -2381,7 +2388,6 @@ class Firewalld(object):
             else:
                 logger.debug('firewalld port %s is enabled in current zone' % tcp_port)
 
-            out, err, ret = call([self.cmd, '--permanent', '--query-port', tcp_port], verbose_on_failure=False)
     def apply_rules(self):
         # type: () -> None
         if not self.available:
@@ -2482,6 +2488,7 @@ def get_unit_file(fsid):
             'Type=forking\n'
             'PIDFile=/%t/%n-pid\n')
 
+    docker = 'docker' in container_path
     u = """# generated by cephadm
 [Unit]
 Description=Ceph %i for {fsid}
@@ -2490,8 +2497,9 @@ Description=Ceph %i for {fsid}
 #   http://www.freedesktop.org/wiki/Software/systemd/NetworkTarget
 # these can be removed once ceph-mon will dynamically change network
 # configuration.
-After=network-online.target local-fs.target time-sync.target
+After=network-online.target local-fs.target time-sync.target{docker_after}
 Wants=network-online.target local-fs.target time-sync.target
+{docker_requires}
 
 PartOf=ceph-{fsid}.target
 Before=ceph-{fsid}.target
@@ -2517,7 +2525,11 @@ WantedBy=ceph-{fsid}.target
     container_path=container_path,
     fsid=fsid,
     data_dir=args.data_dir,
-    extra_args=extra_args)
+    extra_args=extra_args,
+    # if docker, we depend on docker.service
+    docker_after=' docker.service' if docker else '',
+    docker_requires='Requires=docker.service\n' if docker else '',
+)
 
     return u
 
@@ -2723,7 +2735,7 @@ def command_inspect_image():
     # type: () -> int
     out, err, ret = call_throws([
         container_path, 'inspect',
-        '--format', '{{.ID}},{{json .RepoDigests}}',
+        '--format', '{{.ID}},{{.RepoDigests}}',
         args.image])
     if ret:
         return errno.ENOENT
@@ -2745,7 +2757,7 @@ def get_image_info_from_inspect(out, image):
         'image_id': normalize_container_id(image_id)
     }
     if digests:
-        json_digests = json.loads(digests)
+        json_digests = digests[1:-1].split(' ')
         if json_digests:
             r['repo_digest'] = json_digests[0]
     return r
@@ -3253,10 +3265,11 @@ def command_bootstrap():
 
         logger.info('Creating initial admin user...')
         password = args.initial_dashboard_password or generate_password()
-        cmd = ['dashboard', 'ac-user-create', args.initial_dashboard_user, password, 'administrator', '--force-password']
+        tmp_password_file = write_tmp(password, uid, gid)
+        cmd = ['dashboard', 'ac-user-create', args.initial_dashboard_user, '-i', '/tmp/dashboard.pw', 'administrator', '--force-password']
         if not args.dashboard_password_noupdate:
             cmd.append('--pwd-update-required')
-        cli(cmd)
+        cli(cmd, extra_mounts={pathify(tmp_password_file.name): '/tmp/dashboard.pw:z'})
         logger.info('Fetching dashboard port number...')
         out = cli(['config', 'get', 'mgr', 'mgr/dashboard/ssl_server_port'])
         port = int(out)
@@ -3378,8 +3391,9 @@ def command_deploy():
 
     redeploy = False
     unit_name = get_unit_name(args.fsid, daemon_type, daemon_id)
+    container_name = 'ceph-%s-%s.%s' % (args.fsid, daemon_type, daemon_id)
     (_, state, _) = check_unit(unit_name)
-    if state == 'running':
+    if state == 'running' or is_container_running(container_name):
         redeploy = True
 
     if args.reconfig:
diff --git a/SPECS/cephadm.spec b/SPECS/cephadm.spec
index e50a9c7..b77eb95 100644
--- a/SPECS/cephadm.spec
+++ b/SPECS/cephadm.spec
@@ -3,12 +3,12 @@
 
 Name:    cephadm
 Epoch:   2
-Version: 15.2.9
-Release: 46%{?dist}
+Version: 15.2.10
+Release: 2%{?dist}
 Summary: Utility to bootstrap Ceph clusters
 License: LGPL-2.1
 URL:     https://ceph.io
-Source0: https://github.com/ceph/ceph/raw/353d6970361a26381539b74a94bba8ac32666dc1/src/cephadm/cephadm
+Source0: https://github.com/ceph/ceph/raw/89ceb19fd8609fd4c99d10dd63f42e6786e37c86/src/cephadm/cephadm
 Source1: COPYING-LGPL2.1
 
 BuildArch: noarch
@@ -53,5 +53,7 @@ exit 0
 %attr(0600,cephadm,cephadm) %{_sharedstatedir}/cephadm/.ssh/authorized_keys
 
 %changelog
+* Fri Mar 19 2021 Francesco Pantano <fpantano@redhat.com> - 2:15.2.10-2
+- 15.2.10 GA
 * Tue Mar 02 2021 Ken Dreyer <kdreyer@redhat.com> - 2:15.2.9-46
 - initial octopus package