When Oracle Linux 8 (OL8) was released, one of the first things I did was check for the Oracle supplied Docker engine. Nothing.
Not to worry I thought. They are probably waiting for UEK6 to ship before they worry about the Docker engine. I pretty much left it at that. I wasn’t really in much of a rush. To be honest, a new version of Oracle Linux doesn’t really hit my radar until the Oracle database is certified on it. 🙂
UEK6 went live in March and still no sign, so in a recent email exchange with Simon Coter I mentioned it, and was set on the path to Podman.
If I’m honest my first thought was, “Oh FFS! I’ve only just learnt Docker and now I’ve got to start again!” To qualify that, having used Oracle databases for 25 years, using Docker for about 2.5 years feels like I’ve only just started. 🙂
First things first. We currently use Docker in production, so I wanted a route to OL8 without any substantial change, should I need it. So I did this.
It’s not a recommendation. Just something to keep in my back pocket.
After a quick bout of denial I sat down and started to work through some stuff with Podman. Time for a couple of quotes to set some context.
“What is Podman? Podman is a daemonless container engine for developing, managing, and running OCI Containers on your Linux System. Containers can either be run as root or in rootless mode. Simply put: `alias docker=podman`.”https://podman.io/
“The podman, buildah, and skopeo container tools are provided in the Oracle Linux 8 release. These tools are compatible with the Open Container Initiative (OCI) and can be used to manage the same Linux containers that are produced and managed by Docker and other compatible container engines. Because these tools are light-weight and primarily focused on a subset of features, you can run them minus the overhead of working with a daemon process.”Release Notes for Oracle Linux 8
After reading this, I was a little less daunted. I installed Podman on OL8 and started to play. That resulted in these posts.
- Podman : Install Podman on Oracle Linux 8 (OL8)
- Podman : A Basic Example of Using Podman With Dockerfiles (Oracle Database and ORDS) on Oracle Linux 8 (OL8)
The later is an example of how I run up my demo Docker system using Podman. It’s made up of a container for Oracle Database 19c, and a separate container running ORDS on Tomcat. You’ll notice I use my Docker builds with no changes. It just shows that from a basic usage perspective Podman=Docker.
A few quick things I noticed immediately when switching to Podman.
- Networking is a little different. You define a pod to hold containers, and you expose services to the outside world at the Pod level. Containers inside the Pod can speak to each other. For the simple examples I’ve worked with is actually easier than using Docker networks.
- There is a package called “podman-docker”, which allows you to use the Docker command, even though you are using Podman. I don’t really like this. I think it’s better to just stick to a regular alias if you feel the need to retain the Docker command. Better still, just get used to typing podman instead of docker.
- There is no native equivalent of docker-compose. There is a podman-compose project you might want to try. Of course the name “Podman” gives you a clue about what you should really be doing. Defining pods. In addition to manually defining pods, they can get run from a YAML file that’s compatible with Kubernetes. You can generate these YAML files from an existing pod. I’ve not written up this aspect yet, but it’s coming. 🙂
So far it’s been a pretty simple journey, but remember I’m a noob. The articles and my opinions on this will evolve over time.
A quick mention about Vagrant. When I am playing with Docker and Podman I use Vagrant to build a play VM. As a result of this stuff I’ve changed things around a little. If you look at my Vagrant respository you will see the old docker directory has gone and now we have these.
- containers/ol7/docker : The original docker directory moved to this location. This uses the OL7 supplied Docker Engine.
- containers/ol8/docker : A Docker CE build on OL8.
- containers/ol8/podman : A VM with the OL8 supplied Podman installed.
I’ve now pretty much ditched my OL7 Docker environment in favour of the OL8 Podman environment. The only way I’m really going to learn it is by forcing myself to use it. 🙂
If anyone else is in the denial phase, I understand where you are at. Just get started. It’s not so bad. 🙂
PS. I’ve not played with Buildah and Skopeo yet.
PPS. The image has no significance. It just looks good. 🙂