We are pleased to announce that GoldenGate Container images for commercial customers are now available on the Oracle Container Registry (OCR).
This release marks a significant milestone, making it faster and easier for customers to deploy GoldenGate in any environment: on-premises, in the cloud, or across Kubernetes and OpenShift platforms. With this release, customers can run GoldenGate “as a Service” in their own infrastructure, use Oracle’s best-practice container images, and dramatically simplify upgrades by replacing traditional in-place patching with seamless container updates.
GoldenGate “as a Service” in your own environment
Bring the same architecture used in OCI GoldenGate to your own infrastructure. Run GoldenGate with the flexibility of containers and orchestration platforms.
Works anywhere you need it
Run in Docker for development and testing, scale with Kubernetes in the cloud, or integrate with enterprise OpenShift environments using the same container and the same process.
Simplified patching and upgrades
Eliminate the need for in-place patching. Replace the container with the latest quarterly image to reduce downtime and operational risk.
Oracle-provided best practices
Each container is built by Oracle with recommended directory structures, storage layout, and security configurations already included.
High availability and business continuity
GoldenGate containers integrate seamlessly with Kubernetes, OpenShift, and other orchestration platforms to support resilient, highly available deployments. You can scale, restart, or roll out updates without downtime, ensuring continuous data replication and business continuity across environments.
Scalability and resource optimization
Efficiently scale replication workloads by adding more Extract or Replicat pods as data volume grows. Kubernetes automatically manages resource allocation and ensures optimal performance for each GoldenGate process.
Self-healing and automated recovery
Kubernetes continuously monitors GoldenGate services and automatically restarts failed pods, ensuring uptime and minimizing the need for manual intervention.
Up and running in minutes
From download to a working ServiceManager, you can provision GoldenGate in just a few minutes.
This blog guides you through the process of easily provisioning GoldenGate in a container environment, enabling you to get up and running in just a few minutes as a customer.
In this post, we’ll walk through:
- Accepting the license agreement
- Generating an authentication token
- Logging into the Oracle Container Registry
- Pulling the GoldenGate container image
- Running GoldenGate inside a container
- Advanced usage for real-world deployments
- Retrieving the autogenerated admin password
- Logging into ServiceManager and verifying access
- Changing the admin password
1. Accept the License Agreement
Before you can use any GoldenGate image, you must accept Oracle’s license terms. This is a one-time step per image family and must be completed first.
Steps:
- Open Oracle Container Registry in your browser.
- Sign in and Navigate to GoldenGate.
- Select the GoldenGate image version you want (for example, goldengate-oracle).
- Review and click Accept to confirm the license terms.






Without this step, any attempt to pull the image will fail.
2. Generate an Authentication Token
Docker requires credentials to log in to OCR. Instead of using your Oracle.com password, the recommended approach is to create an Auth Token in your Oracle account.
Steps:
- Open Oracle Container Registry in your browser.
- Sign in with your Oracle.com account.
- Navigate to My Profile → Auth Tokens.
- Click Generate Secret Key and copy the generated string.



This token will be used as your password in the Docker login command in the next step. Keep it safe.
3. Login to the Oracle Container Registry
Now that you have an Auth Token, log in securely using the –password-stdin option:
echo '<auth-token>' | docker login container-registry.oracle.com -u "<your-email>" --password-stdin
- Replace <auth-token> with the token you generated in Step 2.
- Replace <your-email> with your Oracle.com account email.
If successful, you’ll see:
Login Succeeded
4. Pull the GoldenGate Container Image
Now you’re ready to download the GoldenGate image.
docker pull container-registry.oracle.com/goldengate/goldengate-oracle:23.9 && \ docker tag container-registry.oracle.com/goldengate/goldengate-oracle:23.9 \ container-registry.oracle.com/goldengate/goldengate-oracle:latest

This fetches the latest GoldenGate image from OCR and stores it locally on your system.
5. Run GoldenGate Inside a Container
With the image available locally, you can start GoldenGate inside a container:
docker run -d --platform=linux/amd64 \ --name ogg23ai \ -p 9011:9011 -p 9012:9012 \ container-registry.oracle.com/goldengate/goldengate-oracle:latest
Explanation:
- -d runs in background mode
- –platform=linux/amd64 ensures correct architecture (important on Apple Silicon and non-x86 systems), remove if not needed.
- –name ogg23ai assigns a container name
- -p maps ServiceManager and Deployment REST API ports
6. Advanced Usage
Persisting Data with Volumes
docker run -d --platform=linux/amd64 \ --name ogg23ai \ -p 9011:9011 -p 9012:9012 \ -v /ogg/deployments:/u02/Deployment \ -v /ogg/trails:/u02/trails \ -v /ogg/logs:/u02/logs \ container-registry.oracle.com/goldengate/goldengate-oracle:latest
Using Environment Variables
docker run -d --platform=linux/amd64 \ --name ogg23ai \ -e OGG_DEPLOYMENT_NAME=WEST \ -e OGG_ADMIN_USERNAME=oggadmin \ -e OGG_ADMIN_PASSWORD=welcome1 \ -p 9011:9011 -p 9012:9012 \ container-registry.oracle.com/goldengate/goldengate-oracle:latest
Docker Compose
services:
goldengate:
image: container-registry.oracle.com/goldengate/goldengate-oracle:latest
platform: linux/amd64
container_name: ogg23ai
ports:
- "9011:9011" # ServiceManager
- "9012:9012" # Deployment port (example)
environment:
# Optional bootstrap values; you can omit or change as needed
OGG_DEPLOYMENT_NAME: "WEST"
OGG_ADMIN_USERNAME: "oggadmin"
# If omitted, container will generate a strong password and print it to logs
# OGG_ADMIN_PASSWORD: "MyTempPassw0rd!"
volumes:
# Persist config, trails, and logs on the host
- ./ogg/deployments:/u02/Deployment
- ./ogg/trails:/u02/trails
- ./ogg/logs:/u02/logs
restart: unless-stopped
healthcheck:
test: ["CMD", "curl", "-fsS", "http://localhost:9011/services/v2/health"] # ServiceManager health
interval: 15s
timeout: 5s
retries: 20
Bring it up:
# Start in the background docker compose up -d # Follow logs until you see the autogenerated admin password (if not preset) docker compose logs -f ogg23ai
Kubernetes Deployment
## pvc.yaml apiVersion: v1 kind: PersistentVolumeClaim metadata: name: ogg-pvc namespace: ogg spec: accessModes: ["ReadWriteOnce"] # Use ReadWriteMany if on NAS resources: requests: storage: 100Gi storageClassName: standard # change to your StorageClass ## pod.yaml apiVersion: v1 kind: Pod metadata: name: ogg23ai namespace: ogg spec: containers: - name: ogg23ai image: container-registry.oracle.com/goldengate/goldengate-oracle:latest ports: - containerPort: 9011 - containerPort: 9012 volumeMounts: - name: ogg-data mountPath: /u02 # GoldenGate data root volumes: - name: ogg-data persistentVolumeClaim: claimName: ogg-pvc
Create and Run:
kubectl create namespace ogg kubectl apply -f pvc.yaml kubectl apply -f pod.yaml
7. Retrieve the Autogenerated Admin Password
On first startup, the GoldenGate container generates an administrative password for the oggadmin user. To view it:
docker logs ogg23ai 2>&1 | grep "Password for OGG administrative user 'oggadmin' is" -m 1
To capture just the password into a variable:
line=$(docker logs ogg23ai 2>&1 | grep "Password for OGG administrative user 'oggadmin' is" -m 1)
admin_pass=$(echo "$line" | awk -F" is " '{print $2}' | tr -d '\r')
8. Log into ServiceManager and Verify Access
Browser UI
Open the ServiceManager in your browser and log in:
http://localhost:9011 Username: oggadmin Password: <value from Step 7>

REST API Check
Verify ServiceManager is running with:
curl -s -u "oggadmin:${admin_pass}" \
http://localhost:9011/services/v2/deployments | jq .
9. Change the Admin Password
For security, change the autogenerated oggadmin password immediately.
UI method
- Log in to ServiceManager at http://localhost:9011
- Go to Administration → Security → Users
- Select oggadmin and set a new password
REST method
curl -X PUT \
-u "oggadmin:${admin_pass}" \
-H "Content-Type: application/json" \
-d '{"oldPassword": "'"${admin_pass}"'", "newPassword": "MyStrongerPassw0rd!"}' \
http://localhost:9011/services/v2/security/users/oggadmin/password
Replace MyStrongerPassw0rd! with your desired secure password.
Conclusion
GoldenGate commercial container images on the Oracle Container Registry are more than just a new way to distribute software; they represent a modern, cloud-native approach to real-time data replication and lifecycle management.
By adopting containerized GoldenGate, you gain:
- Agility and speed: Deploy or refresh GoldenGate environments in minutes, enabling faster development, testing, and production rollouts.
- Resilience and automation: Achieve self-healing, auto-restart, and continuous availability through Kubernetes orchestration.
- Simplified operations: Replace manual patching and upgrades with clean, container-based updates that minimize downtime and human error.
- Enterprise-grade scalability: Automatically scale Extract, Replicat, or Distribution services as data volumes grow without redesigning your topology.
- Observability: Integrate GoldenGate with Kubernetes observability stacks, such as Prometheus and Grafana.
- Consistency everywhere: Run the same GoldenGate image on-premises, in OCI, or across other cloud providers for true hybrid flexibility.
- Built-in best practices: Oracle-provided containers include recommended directory structures, storage layout, and secure configuration defaults.
With these capabilities, GoldenGate evolves into a truly self-managed, portable, and enterprise-ready data replication platform for the modern data fabric.
Your next replication environment is only a docker pull away.
Start today: https://container-registry.oracle.com/
