You can set image name when building a custom image, like this:
docker build -t dude/man:v2 . # Will be named dude/man:v2 Is there a way to define the name of the image in Dockerfile, so I don't have to mention it in the docker build command?
5 Answers
How to build an image with custom name without using yml file:
docker build -t image_name . How to run a container with custom name:
docker run -d --name container_name image_name 4Tagging of the image isn't supported inside the Dockerfile. This needs to be done in your build command. As a workaround, you can do the build with a docker-compose.yml that identifies the target image name and then run a docker-compose build. A sample docker-compose.yml would look like
version: '2' services: man: build: . image: dude/man:v2 That said, there's a push against doing the build with compose since that doesn't work with swarm mode deploys. So you're back to running the command as you've given in your question:
docker build -t dude/man:v2 . Personally, I tend to build with a small shell script in my folder (build.sh) which passes any args and includes the name of the image there to save typing. And for production, the build is handled by a ci/cd server that has the image name inside the pipeline script.
1Here is another version if you have to reference a specific docker file:
version: "3" services: nginx: container_name: nginx build: context: ../.. dockerfile: ./docker/nginx/Dockerfile image: my_nginx:latest Then you just run
docker-compose build 1With a specific Dockerfile you could try:
docker build --tag <Docker Image name> --file <specific Dockerfile> .
for example
docker build --tag second --file Dockerfile_Second .
If you want to give a name to the docker images after building it
just build it again but give a name this time
It works great
docker build -t name_of_image . 0