Disclaimer: In most cases, we don't recommend editing files in a container. However, in rare cases, you might need to reproduce and slightly modify a file in a production container, especially when debugging. (In this case, the vim method I'm using works on Fedora 32 on my laptop and it is the base of my Red Hat OpenShift container image.)
In this article, I present a quick demo on how to install and run vim in a production Red Hat OpenShift container, when vim was not installed in the container image. I also describe the method to use to overcome an event where the local operating system and container base image diverge.
Step 1: Copy the vim binary
For oc cp
to work, copy the vim binary:
$ cp /usr/bin/vim ~/Downloads/vim
(This way of copying the vim binary works best for me, although there might be another cleaner way. Let me know in the comments if you have a different way of doing it.)
Step 2: Log in to the oc
cluster
To login to the oc
cluster, run the command:
$ oc login ..
Step 3: Specify the container to install vim into
I only have one container running in my pod, so oc picks the first container in the pod automatically:
$ export POD=yourPodName
Step 4: Copy files needed to run vim
For vim to start properly, copy this list of files. If vim doesn't start, add files to this list and copy them over:
$ export VIM_DEPS="~/Downloads/vim /lib64/libgpm.so.2.1.0 /lib64/libpython3.8.so.1.0 /lib64/libgpm.so.2"
$ for i in $VIM_DEPS; do oc cp $i $POD:/home/worker; done
Step 5: Log into the pod
To login to pod, run this command:
$ oc rsh $POD
Step 6: Run vim
To run vim, enter the following:
worker@pod$ LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/home/worker" PATH="$PATH:$PWD" vim
What if my operating system differs from the container's base image?
Make sure the architecture of your container image and laptop match. Then fire up a base image that can run locally in a container. Install vim in that container that runs on your localhost. Copy out the vim binary as is; for example, using podman cp
or docker cp
, and copy it to the pod as previously described. Run vim in the pod and observe what files are missing. These files can be taken from the container running on your localhost.
I hope that this quick tip vim helps when you need to reproduce and slightly modify a file in an OpenShift production container.
Last updated: January 20, 2023