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:

  1. Accepting the license agreement
  2. Generating an authentication token
  3. Logging into the Oracle Container Registry
  4. Pulling the GoldenGate container image
  5. Running GoldenGate inside a container
  6. Advanced usage for real-world deployments
  7. Retrieving the autogenerated admin password
  8. Logging into ServiceManager and verifying access
  9. 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:

  1. Open Oracle Container Registry in your browser.
  2. Sign in and Navigate to GoldenGate.
  3. Select the GoldenGate image version you want (for example, goldengate-oracle).
  4. 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:

  1. Open Oracle Container Registry in your browser.
  2. Sign in with your Oracle.com account.
  3. Navigate to My Profile → Auth Tokens.
  4. Click Generate Secret Key and copy the generated string.

Auyh

Key

Key 2

 

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

 

Pull

 

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>

 

WEbUI

 

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

  1. Log in to ServiceManager at http://localhost:9011
  2. Go to Administration → Security → Users
  3. 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/