I needed to be able to push an image from my CI/CD server. Before I was using docker-hub to host my images and wanted to streamline the process. I would build my code >> build my image >> push to docker-hub >> have my server download the new image from docker-hub >> than update / restart container.
Now:
- CI/CD Build
- Push image to Remote Server
- Stop container / Restart
Things needed:
Docker
Python / PIP
SSH Key
docker-push-ssh (https://github.com/brthor/docker-push-ssh)
Assuming you have docker and python installed, and you have have setup ssh for key access.
Setup docker-push-ssh
<code>sudo -H pip install docker-push-ssh</code>
I followed the guide to add an insecure registry to docker for linux.
<code>// /etc/docker/daemon.json
{
"insecure-registries" : [ "localhost:5000" ]
}</code>
<code>sudo systemctl daemon-reload
sudo systemctl restart docker</code>
Build a test image
Dockerfile
<code># vi Dockerfile
FROM alpine
RUN touch /etc/testimage</code>
<code>docker build -t testimage .</code>
Push image to remote server
<code>docker-push-ssh -i ~/.ssh/id_rsa username@host_ip_or_name testimage</code>
Fin.
Useful Commands
<code># list images
docker images
# list all containers
docker ps -a
# force remove image
docker rmi -f image_id
# remove container
docker rm container_id</code>