도커 파일에서 이미지 이름을 설정하는 방법은 무엇입니까?
다음과 같은 사용자 정의 이미지를 작성할 때 이미지 이름을 설정할 수 있습니다.
docker build -t dude/man:v2 . # Will be named dude/man:v2
도커 파일에서 이미지의 이름을 정의할 수 있는 방법이 있습니까? 그래서 나는 그것을 언급할 필요가 없습니다.docker build
명령?
사용 방법docker-compose
도커 파일 내에서는 이미지 태그 지정이 지원되지 않습니다.이 작업은 빌드 명령에서 수행해야 합니다.해결 방법으로 대상 이미지 이름을 식별하고 다음을 실행하는 docker-compose.yml을 사용하여 빌드를 수행할 수 있습니다.docker-compose build
샘플 도커-compose.yml은 다음과 같습니다.
version: '2'
services:
man:
build: .
image: dude/man:v2
그렇긴 하지만, 스웜 모드 배포에서는 작동하지 않기 때문에 컴포지트로 빌드하는 것에 대한 압박이 있습니다.이제 질문에서 제시한 대로 명령을 실행하는 것으로 돌아갑니다.
docker build -t dude/man:v2 .
저는 개인적으로 폴더(build)에 작은 셸 스크립트로 빌드하는 경향이 있습니다.sh) 모든 인수를 통과하고 입력을 저장하기 위해 이미지의 이름을 포함합니다.또한 프로덕션의 경우 파이프라인 스크립트 내부에 이미지 이름이 있는 ci/cd 서버에서 빌드를 처리합니다.
사용 방법docker-compose
특정 도커 파일을 참조해야 하는 경우 다음 버전이 있습니다.
version: "3"
services:
nginx:
container_name: nginx
build:
context: ../..
dockerfile: ./docker/nginx/Dockerfile
image: my_nginx:latest
그럼 그냥 도망가
docker-compose build
나의Dockerfile
유일한 솔루션은 셰방 라인을 추가하는 것입니다.
#!/usr/bin/env -S docker build . --tag=dude/man:v2 --network=host --file
FROM ubuntu:22.04
# ...
그리고나서chmod +x Dockerfile
그리고../Dockerfile
가는 것입니다.더 추가합니다.docker build
호스트 네트워크 지정과 같은 명령줄 인수.
참고:env
와 함께-S/--split-string
최신 coreutils 버전에 대해서만 지원을 사용할 수 있습니다.
특정 도커 파일을 사용하여 다음을 시도할 수 있습니다.
docker build --tag <Docker Image name> --file <specific Dockerfile> .
예를들면
docker build --tag second --file Dockerfile_Second .
터미널로 이동하여 다음을 지나갑니다.
도커 빌드 - t 이미지 이름 여기: 태그 여기.
ENTER를 누르면 이미지 파일 이름이 변경되었습니다.
도커(및 Makefile)를 사용한 해결 방법
일반적으로 도커에서는 이미지에 태그를 지정할 내용을 말할 수 없습니다.Dockerfile
그래서 당신이 하는 일은
- 작성
Dockerfile
- 작성
Makefile
.PHONY: all all: docker build -t image_name .
- 사용하다
make
호출하는 대신docker build
직접적으로
또는 사용buildah
하지만 여기 더 좋은 생각이 있습니다...도커로 이미지를 빌드하지 마십시오!대신으로 그것들을 구축하는 것은, 쉘(또는 어떤 언어)을 사용하는 포드맨 크루에 의해 제공되는 새로운 빌드 도구로, 클라우드에서 쉽게 구축할 수 있습니다.kaniko
), 그리고 이미지를 루트 없이 구축할 수 있습니다!빌드 스크립트가 끝나면 이미지를 내부에 저장합니다.buildah commit
이것은 이렇게 생겼습니다.
#!/bin/sh
# Create a new offline container from the `alpine:3` image, return the id.
ctr=$(buildah from "alpine:3")
# Create a new mount, return the path on the host.
mnt=$(buildah mount "$ctr")
# Copy files to the mount
cp -Rv files/* "$mnt/"
# Do some things or whatever
buildah config --author "Evan Carroll" --env "FOO=bar" -- "$ctr"
# Run a script inside the container
buildah run "$ctr" -- /bin/sh <<EOF
echo "This is just a regular shell script"
echo "Do all the things."
EOF
# Another one, same layer though
buildah run "$ctr" -- /bin/sh <<EOF
echo "Another one!"
echo "No excess layers created as with RUN."
EOF
# Commit this container as "myImageName"
buildah commit -- "$ctr" "myImageName"
이제 당신은 그것을 가지고 해킹할 필요가 없습니다.Makefile
은 모든을 할 수 셸, 모든것수는하있으가며트셸다립이립, ▁a보다 훨씬 더 합니다.Dockerfile
.
노트, 사드노트이,,buildah
또한 다음을 기반으로 구축 가능성Dockerfile
(s) 사용)buildah bud
), 이 은 , , , 에 Dockerfile
그래서 도움이 안 됩니다.
언급URL : https://stackoverflow.com/questions/38986057/how-to-set-image-name-in-dockerfile
'programing' 카테고리의 다른 글
웹에서 파일 업로드 진행률 표시줄을 구현하는 방법은 무엇입니까? (0) | 2023.08.24 |
---|---|
VBA를 사용하여 셀에 공식을 입력하는 방법은 무엇입니까? (0) | 2023.08.24 |
함수로 인해 발생한 Oracle 11의 테이블 돌연변이 (0) | 2023.08.24 |
ngClass는 Angular 2에서 3진 연산자를 사용할 수 있습니까? (0) | 2023.08.24 |
ajax 요청의 label TokenMismatchException (0) | 2023.08.24 |