Our app on Swarm
- Why do we need to ship our images?
- Build, ship, and run, for a single service
- The plan
- Which registry do we want to use?
- Using Docker Hub
- Using Docker Trusted Registry
In this part, we will:
build images for our app,
ship these images with a registry,
run services using these images.
Why do we need to ship our images?
When we do
docker-compose up
, images are built for our servicesThese images are present only on the local node
We need these images to be distributed on the whole Swarm
The easiest way to achieve that is to use a Docker registry
Once our images are on a registry, we can reference them when creating our services
Build, ship, and run, for a single service
If we had only one service (built from a Dockerfile
in the
current directory), our workflow could look like this:
docker build -t jpetazzo/doublerainbow:v0.1 .
docker push jpetazzo/doublerainbow:v0.1
docker service create jpetazzo/doublerainbow:v0.1
We just have to adapt this to our application, which has 4 services!
The plan
Build on our local node (
node1
)Tag images so that they are named
localhost:5000/servicename
Upload them to a registry
Create services using the images
Which registry do we want to use?
Docker Hub
- hosted by Docker Inc.
- requires an account (free, no credit card needed)
- images will be public (unless you pay)
- located in AWS EC2 us-east-1
Docker Trusted Registry
- self-hosted commercial product
- requires a subscription (free 30-day trial available)
- images can be public or private
- located wherever you want
Docker open source registry
- self-hosted barebones repository hosting
- doesn't require anything
- doesn't come with anything either
- located wherever you want
Lots of 3rd party cloud or self-hosted options
- AWS/Azure/Google Container Registry
- GitLab, Quay, JFrog
Using Docker Hub
If we wanted to use the Docker Hub...
We would log into the Docker Hub:
docker login
And in the following slides, we would use our Docker Hub login (e.g.
jpetazzo
) instead of the registry address (i.e.127.0.0.1:5000
)
Using Docker Trusted Registry
If we wanted to use DTR, we would...
Make sure we have a Docker Hub account
Install DTR on our machines
Use
dtraddress:port/user
instead of the registry address
This is out of the scope of this workshop!