After building an image we can push it to one of the mainstream public registries. For this example we have created an account with https://hub.docker.com/ with the username kjackal
.
First we run the login command:
docker login
Docker will ask for a Docker ID and password to complete the login.
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: kjackal
Password: *******
Pushing to the registry requires that the image is tagged with your-hub-username/image-name:tag
. We can either add proper tagging during build:
docker build . -t kjackal/mynginx:public
Or tag an already existing image using the image ID. Obtain the ID by running:
docker images
The ID is listed in the output:
REPOSITORY TAG IMAGE ID SIZE
mynginx local 1fe3d8f47868 16.1MB
....
Then use the tag
command:
docker tag 1fe3d8f47868 kjackal/mynginx:public
Now that the image is tagged correctly, it can be pushed to the registry:
docker push kjackal/mynginx
At this point we are ready to microk8s kubectl apply -f
a deployment with our image:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: kjackal/mynginx:public
ports:
- containerPort: 80
We refer to the image as image: kjackal/mynginx:public
. Kubernetes will search for the image in its default registry, docker.io
.