Difference between jnlp-agent-docker, jnlp-slave and inbound-agent?

I was told to update to the latest version of JNLP image and trying to find it I’ve found three different images: jnlp-agent-docker, jnlp-slave and inbound-agent.

I was wondering what are the differences between them?

If my guess is right, you forgot to mention that these images are Jenkins docker images and not just JNLP which is “Java Network Launch Protocol” Docker Hub

I quote:

:exclamation: Warning! This image used to be published as jenkinsci/jnlp-slave and jenkins/jnlp-slave. These images are deprecated, use jenkins/inbound-agent.

so one mystery is solved. “jnlp-slave” is deprecated. You can read about the renaming here:

If you download the inbound agent image (jenkins/inbound-agent:alpine-jdk11) and jenkins/jnlp-agent-docker you can compare their image history like this:

diff --color \
    <(docker history jenkins/inbound-agent:alpine-jdk11 --no-trunc --format '{{.CreatedBy}}') \
    <(docker history jenkins/jnlp-agent-docker:latest --no-trunc --format '{{.CreatedBy}}')

you can see that jnlp-agent-docker is an inbound-agent which contains extra layers to install Docker cli and Docker Compose:

> /bin/sh -c #(nop)  USER jenkins
> |2 DOCKER_COMPOSE_VERSION=1.21.0 DOCKER_VERSION=18.03.0-ce /bin/sh -c touch /debug-flag
> |2 DOCKER_COMPOSE_VERSION=1.21.0 DOCKER_VERSION=18.03.0-ce /bin/sh -c curl -fsSL https://github.com/docker/compose/releases/download/$DOCKER_COMPOSE_VERSION/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose && chmod +x /usr/local/bin/docker-compose
> |2 DOCKER_COMPOSE_VERSION=1.21.0 DOCKER_VERSION=18.03.0-ce /bin/sh -c curl -fsSL https://download.docker.com/linux/static/stable/`uname -m`/docker-$DOCKER_VERSION.tgz | tar --strip-components=1 -xz -C /usr/local/bin docker/docker
> /bin/sh -c #(nop)  ARG DOCKER_COMPOSE_VERSION=1.21.0
> /bin/sh -c #(nop)  ARG DOCKER_VERSION=18.03.0-ce
> /bin/sh -c apk update && apk add -u libcurl curl
> /bin/sh -c #(nop)  USER root