A common question we receive is how to build a Docker image and then use that image in a subsequent step. This can be achieved by mounting the host machine Docker socket into your container (the repository must be Trusted). You can then build the image and use in subsequent steps.
Please note that if your image uses the :latest
tag the system will automatically try to pull a newer version from the registry. As a result, the image created previously will be overwritten. You should therefore change the default pull behavior, demonstrated below.
---
kind: pipeline
name: default
steps:
- name: build
image: docker
volumes:
- name: dockersock
path: /var/run/docker.sock
commands:
- docker build -t foo:latest
- name: test
image: foo:latest
pull: if-not-exists
commands:
- echo bar
volumes:
- name: dockersock
host:
path: /var/run/docker.sock
...
As an aside, if you find yourself frequently mounting the host machine Docker socket for your pipelines, you may want to re-consider using Docker pipelines. Instead consider using exec pipelines, which execute builds directly on the host and do not use Docker.