Migrate Container User IDs
This page describes how to migrate Pulse containers from the default container user ID (UID) and group ID (GID) to a custom UID/GID, roll back the changes if required, and verify that the deployment completed successfully.
The procedures in this topic are validated using a migration from 1000:1000 to 1007:1007, but the same steps apply to any supported UID/GID combination.
Before you begin
Ensure that:
- You have access to the target VM with permission to edit files under /data01/acceldata and manage Docker containers.
- The required deployer image is available and correctly tagged for your environment.
- You understand that accelo deploy core might prompt you to repair the deployment stack if the database is unavailable.
- You update ownership for all host-mounted directories, including /data01/acceldata/vendor.
Migrate to a Custom Container User ID
Use this procedure to migrate containers from the default 1000:1000 UID/GID to a custom UID/GID, such as 1007:1007.
Steps:
- Open the following configuration file:
/data01/acceldata/config/accelo.yml- Update the ContainerUserID value.
Example:
ContainerUserID: "1007:1007"- Remove all existing ad-* containers so that they are recreated with the new runtime user.
for c in $(docker ps -a --format '{{.Names}}' | grep '^ad-'); do
docker rm -f "$c"
done- Update ownership for all required host directories, including the vendor directory.
chown -R 1007:1007 \
/data01/acceldata/config \
/data01/acceldata/data \
/data01/acceldata/logs \
/data01/acceldata/tmp \
/data01/acceldata/work \
/data01/acceldata/vendor
chmod 755 /data01/acceldata/vendor
- Deploy the core services.
accelo deploy coreIf prompted that the database is unavailable and asked whether to repair the deployment stack, enter y.
- Push the updated configuration to the database.
accelo admin database push-config -a- Deploy the add-on services.
accelo deploy addons- Deploy the Hydra agent.
accelo deploy hydraWhen prompted, enter y.
Roll Back to the Default Container User ID
Use these steps to restore the default container UID/GID (1000:1000).
Steps:
- Open the following configuration file:
/data01/acceldata/config/accelo.yml- Update the ContainerUserID value.
ContainerUserID: "1000:1000"- Remove all existing ad-* containers.
for c in $(docker ps -a --format '{{.Names}}' | grep '^ad-'); do
docker rm -f "$c"
done
- Restore ownership for all required host directories.
chown -R 1000:1000 \
/data01/acceldata/config \
/data01/acceldata/data \
/data01/acceldata/logs \
/data01/acceldata/tmp \
/data01/acceldata/work \
/data01/acceldata/vendor
chmod 755 /data01/acceldata/vendor
- Deploy the core services.
accelo deploy coreIf prompted to repair the deployment stack, enter y.
- Push the updated configuration to the database.
accelo admin database push-config -a- Deploy the add-on services.
accelo deploy addons- Deploy the Hydra agent.
accelo deploy hydraVerify the Migration or Rollback
After completing the migration or rollback, verify that the containers are running with the expected UID/GID.
Run the following command:
for c in $(docker ps --format '{{.Names}}'); do
echo -n "$c -> "
docker inspect "$c" --format '{{.Config.User}}'
done
Expected results:
Scenario | Expected Result |
|---|---|
After migration to 1007:1007 | All ad-* containers run as 1007:1007, except ad-logstash, which continues to run as 1000:1000 by design. |
After rollback to 1000:1000 | All containers run as 1000:1000. |
Verify the Deployer
Run the following command:
docker logs ad-deployer_default 2>&1 | grep -E "bootstrap inventory hosts count|No user exists"Verify the following:
- The output includes:
bootstrap inventory hosts count: 3- The output does not contain:
No user exists for uid ...The deployment is successful if the deployer reports the expected host inventory count and does not report any UID lookup failures.
Validation Notes
The migration and rollback procedures were validated on a test VM. During validation, the following behaviors were confirmed:
- Always update ownership for /data01/acceldata/vendor. The deployer depends on this directory.
- Run accelo deploy core before accelo admin database push-config -a so that the database is available when the configuration is pushed.
- Some warnings can appear during Hydra deployment because of existing target-host issues. These warnings do not indicate a container UID migration failure.
- ad-logstash always runs as 1000:1000 by design and does not inherit the configured ContainerUserID.
- After the migration, all other ad-* containers run using the configured custom UID/GID. After rollback, all containers return to the default 1000:1000 UID/GID.

Have a suggestion?