At the DockerCon US event in April 2017, Oracle announced that its Oracle 12c database software application would be available alongside other Oracle products on Docker Store, the standard for dev-ops developers. Dev-ops developers have pulled images from the Docker Store over four billion times, and are increasingly turning to the Docker Store as the canonical source for high-quality curated content. The other benefit to using a containerized Oracle database is that administrators, developers, and customers need not worry about patching and upgrading their Oracle database applications. Docker containers make it easy to deploy applications that are packaged with all their runtime dependencies. The basic aim is to build the capability for building microservices-based container applications without changing code or infrastructure. This approach enables portability between data centers and obviates the need for changes in traditional applications by treating them agilely for faster deployment.
Eventually, deploying these containerized applications at a scale of thousands surpasses human ability. In this task, Kubernetes pods (a group of containers) help in open-source container orchestration. In the future, it is likely that Oracle Docker containers will run the microservices while Kubernetes will be used for container orchestration. Also, the microservices running within Docker containers will communicate with the Oracle databases by using messaging services.
For this white paper, we worked exclusively with Oracle containers for Oracle Linux. We recommend that you check with Dell Technologies to ensure that the latest certified CSI plug-ins are used in your Kubernetes environment.
The following figure shows a prototypical converged Oracle database architecture featuring Docker and Kubernetes:
Figure 5. Architecture for Oracle database featuring Docker and Kubernetes
Docker volumes provide the ability to define storage to be managed by a Docker container. The storage is maintained under the Docker directory structure (for example, /var/lib/docker/volumes) and can be managed from the Docker CLI or through the Docker API. The Docker engine manages the volumes, which are isolated from direct access by the host, as shown in the following figure:
Figure 6. Docker volumes
Advantages of Docker data volumes include:
For a full list of benefits, see Volumes in the Docker documentation. For this solution, the Linux administrator used Docker Data Volumes for Use Case 1, which is described in the next section.
In Use Case 1, the Linux administrator can also use Linux bind mounts to connect an Oracle database container to PowerFlex storage that has already been provisioned to the server. The Docker guide indicates that bind mounts are fast, which makes this method ideal for attaching storage to a container. As shown in the following figure, bind mounts can be anywhere in the host operating system and are not managed by Docker:
Figure 7. Linux bind mounts