I'm currently running a registry docker container and ngnix docker container similar to this setup to protect my private docker registry. I'm running Jenkins to automatically build my application inside a docker container which then should push the container to my private docker registry.
The problem comes when I need to push the image. Jenkins (also running in a container) executes a shell script containing the following steps:
sudo docker run hello-world
sudo docker tag -f hello-world localhost:5000/hello:latest
sudo docker login -u username -p pass -e info@example.com localhost:5000/
sudo docker search localhost:5000/
sudo docker push localhost:5000/hello:latest
The build then fails with the following output:
Building in workspace /var/jenkins_home/jobs/HelloWorld/workspace [workspace] $ /bin/sh -xe /tmp/hudson6027890842360704977.sh
+ sudo docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
registry latest e255d21840f8 2 days ago 422.9 MB
jenkins latest fc39417bd5fb 13 days ago 708.2 MB
nginx latest 407195ab8b07 2 weeks ago 133.9 MB
localhost:5000/hello latest 0a6ba66e537a 3 months ago 960 B hello-world latest 0a6ba66e537a 3 months ago 960 B
+ sudo docker run hello-world
Hello from Docker. This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with: $ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker Hub account: https://hub.docker.com
For more examples and ideas, visit: https://docs.docker.com/userguide/
+ sudo docker tag -f hello-world localhost:5000/hello:latest
+ sudo docker login -u username -p pass -e info@example.com localhost:5000/
WARNING: login credentials saved in /root/.docker/config.json Login Succeeded
+ sudo docker search localhost:5000/
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
library/hello 0
+ sudo docker push localhost:5000/hello:latest
The push refers to a repository [localhost:5000/hello] (len: 1)
Sending image list Pushing repository localhost:5000/hello (1 tags)
b901d36b6f2f: Pushing
Please login prior to push:
Username (username): EOF
Build step 'Execute shell' marked build as failure
Finished: FAILURE
In other words, I am able to run and tag the hello-world container. I can login to my private registry and search it. If I want to push my image, however, I need to authenticate again.
Hopefully someone knows a simple solution to this, I couldn't find one myself so far. I'm running docker version 1.9.1, build a34a1d5 on Ubuntu 14.04.3 LTS.