답변:
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 서버가 빌드를 처리합니다.
yml 파일을 사용하지 않고 사용자 정의 이름으로 이미지를 작성하는 방법 :
docker build -t image_name .
사용자 정의 이름으로 컨테이너를 실행하는 방법 :
docker run -d --name container_name image_name
Dockerfile
이미지에 원하는 이름과 동일한 디렉토리에 디렉토리를 넣으면 일관성이 있으면 docker build -t $(basename $PWD) .
빌드 명령으로 사용할 수 있습니다 . 그런 다음 "빌드"에서 CTRL-R 검색을 사용하여 명령을 찾아서 재사용 할 수 있으며 편집 할 필요가 없습니다. 원하는 경우 별명을 만들 수도 있습니다.
특정 도커 파일을 참조 해야하는 경우 다른 버전이 있습니다.
version: "3"
services:
nginx:
container_name: nginx
build:
context: ../..
dockerfile: ./docker/nginx/Dockerfile
image: my_nginx:latest
그럼 당신은 그냥 실행
docker-compose build