Dockerfile에서 이미지 이름을 설정하는 방법은 무엇입니까?


299

다음과 같이 사용자 지정 이미지를 만들 때 이미지 이름을 설정할 수 있습니다.

docker build -t dude/man:v2 . # Will be named dude/man:v2

Dockerfile에서 이미지 이름을 정의하는 방법이 docker build있습니까? 따라서 명령 에서 언급 할 필요가 없습니까?


1
FROM을 사용하는 궁금한 사람에게는 ... AS 이름 이 작동하지 않음
Rufus

답변:


265

Dockerfile 내에서는 이미지 태그 지정이 지원되지 않습니다. 이것은 빌드 명령에서 수행해야합니다. 이 문제를 해결하려면 대상 이미지 이름을 식별하는 docker-compose.yml을 사용하여 빌드를 수행 한 다음을 실행할 수 docker-compose build있습니다. 샘플 docker-compose.yml은 다음과 같습니다.

version: '2'

services:
  man:
    build: .
    image: dude/man:v2

즉, 스웜 모드 배포에서는 작동하지 않으므로 compose로 빌드를 수행하지 않아야합니다. 질문에 주어진대로 명령을 다시 실행하십시오.

docker build -t dude/man:v2 .

개인적으로 필자는 폴더 (build.sh)에 작은 셸 스크립트를 사용하여 인수를 전달하고 입력을 저장하기 위해 이미지의 이름을 포함시키는 경향이 있습니다. 그리고 프로덕션의 경우 파이프 라인 스크립트 내에 이미지 이름이있는 ci / cd 서버가 빌드를 처리합니다.


303

yml 파일을 사용하지 않고 사용자 정의 이름으로 이미지를 작성하는 방법 :

docker build -t image_name .

사용자 정의 이름으로 컨테이너를 실행하는 방법 :

docker run -d --name container_name image_name

78
더 이상 언급하지 않겠지 만 "Dockerfile에서 이미지 이름을 설정하는 방법은 무엇입니까?" "도커 이미지 이름을 설정하는 방법?" 그 대답은 질문 자체에있었습니다.
Novaterata

68
나는 이것에 몇 번 돌아 왔고,이 답변은 기술적으로
논외적인

7
Dockerfile이미지에 원하는 이름과 동일한 디렉토리에 디렉토리를 넣으면 일관성이 있으면 docker build -t $(basename $PWD) .빌드 명령으로 사용할 수 있습니다 . 그런 다음 "빌드"에서 CTRL-R 검색을 사용하여 명령을 찾아서 재사용 할 수 있으며 편집 할 필요가 없습니다. 원하는 경우 별명을 만들 수도 있습니다.
브루노 Bronosky

어쨌든이 답변에 감사드립니다. 나는 인터넷을 통해 이것을 얻기 위해 몇 시간을 보내고 있었다. 나는 정답을 얻을 수 없었습니다. 그의 이미지에 이름을 짓는 사람은 컨테이너에 이름이 필요하다면 이것 없이는 더 이상 갈 수 없습니다.
Susaj S Nair

38

특정 도커 파일을 참조 해야하는 경우 다른 버전이 있습니다.

version: "3"
services:
  nginx:
    container_name: nginx
    build:
      context: ../..
      dockerfile: ./docker/nginx/Dockerfile
    image: my_nginx:latest

그럼 당신은 그냥 실행

docker-compose build

1
이 답변이 container_name과 이미지 이름 : tag의 차이점을 보여주기를 좋아합니다. "container_name"은 진행중인 작업에 대한 약간의 설명 만있는 경우 이미지에서 분리 된 컨테이너의 이름을 지정합니다. "image"는 컨테이너가 만들어진 이미지의 이름과 태그를 지정합니다. 다른 사람들이 언급했듯이 OP가 요청한 것처럼 Dockerfile에서 이미지 이름을 지정할 수 없으므로 대신 docker-compose.yml 파일을 사용하고 "docker-compose up -d --build"
Sean McCarthy

-7

우분투에서 'AS'를 사용 하여이 작업을 수행 할 수 있습니다 : 16.04 AS FooImage


6
AS구문 다단 제작에 사용되는 타겟 명을 지정하고,이 이름은 또한 대한 이미지 대신에 사용될 수있는 COPY --from해당 다단 빌드 내의 구. 그러나 빌드 자체의 결과 이름 / 태그를 지정하지는 않습니다.
BMitch
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.