PBS public Docker image improvement


For the github project https://github.com/dask/dask-jobqueue, we want to deploy a mini PBS cluster (1 server, and 2 compute nodes) for Continuous Integration purpose. The idea is to spin up a cluster using Docker and Docker Compose. When looking for some Docker image containing PBS, I found this image: https://hub.docker.com/r/pbspro/pbspro. That is really good to have such an image available, however I noticed two problems with it:

  • It depends on pbspro/pbsbase, which has no Dockerfile, that would be much better and reinsuring if you could provide it…
  • The version is just “centos7”, which is a bit weird to me, what will happen if PBS version change but is still deployed on CentOS7?

I will still try to use the image, and hopefully provide at the end a basic docker compose of a mini PBS Cluster, but do you believe these potential issues should and could be corrected?

Hi @guillaumeeb,

Thanks for trying out our docker image. The Dockerfile for the pbsbase image is in our Github repo here. Because the pbsbase image is not setup as an automated build and is updated manually, its Dockerfile does not show up on Dockerhub.

The version tag centos7 refers to the base OS image used for that pbspro image, not the version of PBS Pro. The version of PBS Pro used in the image is periodically updated. When new changes are pushed to our Github repository, a new build should trigger and a new image will be on Dockerhub. If a new version of CentOS comes out and if PBS Pro supports it, we will then add another image tagged centos8. But centos7 and centos8 images will have the same version of PBS Pro inside.

Hope this answers your question.

Not yet clear to me how you build the pbsbase image… You initialize the image with a dockerfile, and then you edit the image manually by spinning it as a container and launching commands inside it?
It would be really better if an automated build was possible/provided.

As for the tag, I understand that centos7 refers to the OS image, but the PBS version should also appear. If not, and you update the image as you are saying you may do, this image users (me) may not have reproducibility of their use cases. This, for me, is bad and against Docker concepts.

So I would suggest to tag your images something like centos7_18.1. and with each new build and push on dockerhub, have a new version! Only the latest tag should be updated to match your last build. You could have a centos7_latest.

How do you feel about all this?

Coming for news,

@minghui any though about this?

Hi @guillaumeeb . I think these are good ideas. I can add the PBS version number to docker hub tags. As of right now the PBS Pro open source release version is 14.1. I will add a centos7_14.1 image and point latest to it.
And for the image built on master branch code, I will tag it centos7_dev. How does that sound?

Thanks and sorry about the delayed reply.

Yup, that sounds good to me!

Any comments on my other remark: how do you build the pbsbase image (see above)?

And I have two more questions:

Wait, instructions on atlassian seems to be outdated, the image I get is already ready for job submission!

Some updates here:

Cautions on this compose file, docker images and script:

  • It is largely inspired from your docker images,
  • It is probably not the cleanest way to do it, but it works and give a good starting point,
  • It has some dependency on python and the project I work on, that should be removed if making this generic.

Some more general remarks, things to work on:

  • You still do not have tags on the dockerhub pointing to PBS 14.1. To be safe, I rebuild my own pbs image pointing to this github tag. I would have preferred extanding your images.
  • I don’t see the need of the pbsbase image, that’s why I only used one Dockerfile.
  • the entrypoint strategy and start-master/slave.sh strategy may be optimized for a generic use. Maybe having two dockerfiles ?
  • I used $usecp trick on the MOM side to avoid having to configure passwordless ssh on the nodes. I believe this is acceptable for a toy deployment.

Finally, if you find it useful, I can work on a pull request to integrate this work into pbspro.