We now have two clean classes: btp-manual and btp-auto Exclude one or the other depending on whether you want to show the full process of building and pushing images, or if you want to shortcut and use stack files directly.
2.3 KiB
Our app on Swarm
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 services -
These 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
class: extra-details
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?
.small[
-
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
]
class: extra-details
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)
class: extra-details
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/userinstead of the registry address
This is out of the scope of this workshop!