Before asking this question, I tried to search as much as I can in order to find a way but I only found that what I want is not possible through the docker, but I’m not sure of it about the Linux.
This is my
By default when I run
docker run nginx, it pulls image in fact like
docker run docker.io/nginx if I’m correct (or
docker.io/library/nginx I think).
private_reg.com I created an image called
reg. So by the above settings when I run
docker run reg it should pull from
private_reg.com/reg I think, but I get an error that this image does not exist.
- Is that possible through the docker via any options?
- If not, how may I forward these requests in Linux?
Have you tried:
docker run private_reg.com/reg
docker run private_reg.com/reg works fine but what I want is only to run
docker run reg so that
reg image is pulled from
Yeah, what you are asking for would be nice.
It seems that changing the default registry would break things see here and here. However, I see that you can add a mirror registry that your
docker run reg
could fall back to if you changed ‘reg’ to something more unique. But then you would have to deal with latency while the request failed at docker.io first, and it would only work until someone created an image on docker.io with the unique name you chose.
My instincts say that any other workaround achieved by manipulating the resolution of docker.io requests is too much trouble and not maintainable, which I think rules out configuring proxy settings in the daemon.json file, but maybe someone else can explain why I am incorrect about that.
Thanks, but I want to do some changes on some images like
mysql:5.7 and whenever I pull, in fact it pulls the modified image instead of the actual image.
Can you please explain what you mean by “modified image” versus “actual image”?
mariadb:latest. The actual image is what we pull from docker hub.
But I want to do some changes like adding some conf like
sql_mode = '' to
/etc/my.cnf file and build that image since some software require this option and if this option is not set to empty, websites when doing
INSERT query will throw an error.
That sounds like customizing the build process for the image. You can do this by either:
1.) copying the mysql source Dockerfile (usually available on github.com, depending on whether the image maintainer makes it available or not) and then making changes to it and rebuilding the image as my_apps_mysql,
2. Making your own Dockerfile that specifies
You can then push the image you built to your private_repo.com. Subsequent pulls from private_repo.com/my_apps_mysql will use the custom built image that includes the my.cnf file.
Clearly, this still does not avoid your original observation that you must specify your private registry explicitly since you are not able to change the default registry, but in docker-compose.yml files you can use
and in fact this is what you should be doing for many (I’m sure there are exceptions) production scenerios.
Do not overlook the fact that Docker Hub provides one private repo, and public repos for your custom-built images. If you are only trying to solve this issue because of maintaining the one database image, then customizing the image build as described above and pushing to Docker hub at
docker push yourusername/image:tag
“sort of” provides you a solution without the need for changing the default registry (although I get how its is a different, less general solution).