programing

도커 합성으로 빌드된 이미지의 이름을 정의하려면 어떻게 합니까?

bestprogram 2023. 8. 30. 21:54

도커 합성으로 빌드된 이미지의 이름을 정의하려면 어떻게 합니까?

개발 환경을 만들기 위해 도커 컴포지를 사용하고 있습니다.특정 이미지를 빌드하고 싶은데 해당 이미지의 이름을 설정하는 방법을 모르겠습니다.

wildfly:
  build: /path/to/dir/Dockerfile
  container_name: wildfly_server
  ports:
   - 9990:9990
   - 80:8080
  environment:
   - MYSQL_HOST=mysql_server
   - MONGO_HOST=mongo_server
   - ELASTIC_HOST=elasticsearch_server
  volumes:
   - /Volumes/CaseSensitive/development/wildfly/deployments/:/opt/jboss/wildfly/standalone/deployments/
  links:
   - mysql:mysql_server
   - mongo:mongo_server
   - elasticsearch:elasticsearch_server

가 실할때를 실행할 때.docker-compose모든 것이 괜찮지만, 저는 새로운 이미지의 이름을 무작위로 얻습니다.빌드 이미지에 이름을 설정할 수 있습니까?

도커 합성 버전 2 파일 형식의 경우 한 서비스에 대한 이미지를 빌드하고 태그를 지정한 다음 다른 서비스에 동일한 빌드 이미지를 사용할 수 있습니다.

저의 경우, 두 노드 모두 동일한 이미지를 사용해야 하지만 다르게 실행되도록 구성된 2개의 노드로 탄력적인 검색 클러스터를 설정하려고 합니다.또한 나는 나만의 도커 파일로 나만의 맞춤형 탄력 검색 이미지를 만들고 싶습니다.그래서 제가 한 일은 이렇습니다.docker-compose.yml):

version: '2'

services:
  es-master:
    build: ./elasticsearch
    image: porter/elasticsearch
    ports:
      - "9200:9200"
    container_name: es_master

  es-node:
    image: porter/elasticsearch
    depends_on:
      - es-master
    ports:
      - "9200"
    command: elasticsearch --discovery.zen.ping.unicast.hosts=es_master

첫 번째 서비스 정의에서 다음을 사용하는 것을 볼 수 있습니다.build./elasticsearch이미지에 이름과 태그를 지정합니다.image선택.
그런 다음 서비스 정의에서 이 빌드된 이미지를 다음과 같이 참조합니다.image.depends_on먼저 다른 컨테이너가 제조되고 실행되는지 확인합니다.

도커 구성 1.6.0에 따라:

새 파일 형식을 사용하는 경우 빌드 키와 이미지 키를 모두 지정할 수 있습니다.docker-compose build이미지를 빌드하고 사용자가 지정한 이름으로 태그를 지정합니다.docker-compose pull잡아당기려고 할 겁니다

그래서 너의docker-compose.yml 것입니다.

version: '2'
services:
  wildfly:
      build: /path/to/dir/Dockerfile
      image: wildfly_server
      ports:
       - 9990:9990
       - 80:8080

도커 합성 업데이트 방법

sudo pip install -U docker-compose==1.6.0

옵션 1: 기본 이미지 이름 암시

도커 합성에 의해 생성된 이미지의 이름은 기본적으로 폴더 이름에 따라 다르지만 다음을 사용하여 재정의할 수 있습니다.--project-name인수:

$ docker-compose --project-name foo build bar
$ docker images foo_bar

옵션 2: 이미지 이름 지정

도커 합성 1.6.0이 나오면 다음과 같이 지정할 수 있습니다.build:그리고.image:이미지 이름을 명시적으로 지정합니다(arulraj.net 의 답변 참조).

옵션 3: 컨테이너에서 이미지 생성

세 번째는 컨테이너에서 이미지를 생성하는 것입니다.

$ docker-compose up -d bar
$ docker commit $(docker-compose ps -q bar) foo_bar
$ docker-compose rm -f bar

컴포지의9에 따라 3.9버전따에다사수있용다습니할음을라의트지▁use▁according,다있▁you를 사용할 수 있습니다.image: myapp:tag이름과 태그를 지정합니다.

version: "3.9"
services:
  webapp:
    build:
      context: .
      dockerfile: Dockerfile
    image: webapp:tag

참조: https://docs.docker.com/compose/compose-file/compose-file-v3/

사용 사례에 따라 이미 생성된 이미지를 사용하고 이름을 지정할 수 있습니다.docker-compose.

CI 서버가 Docker라는 이름의 이미지를 구축하는 프로덕션 사용 사례가 있습니다.docker build -t <specific_image_name> .. 명명된 이미지가 지정되면,docker-compose항상 특정 이미지를 기반으로 합니다.이를 통해 다음과 같은 몇 가지 가능성이 있습니다.

1 - 어디를 실행하든 고객의 요구 사항을 충족할 수 있습니다.docker-compose에서 항상 해당 특정 이미지의 최신 버전을 사용합니다.

2 - 이름이 지정된 이미지를 여러 개 지정할 수 있습니다.docker-compose파일을 저장하고 이전 빌드 단계를 통해 자동으로 연결되도록 합니다.

이미지가 이미 빌드된 경우 이미지 이름을 다음과 같이 지정할 수 있습니다.docker-compose.제거한다.build및 지정image:

wildfly:
  image: my_custom_wildfly_image
  container_name: wildfly_server
  ports:
   - 9990:9990
   - 80:8080
  environment:
   - MYSQL_HOST=mysql_server
   - MONGO_HOST=mongo_server
   - ELASTIC_HOST=elasticsearch_server
  volumes:
   - /Volumes/CaseSensitive/development/wildfly/deployments/:/opt/jboss/wildfly/standalone/deployments/
  links:
   - mysql:mysql_server
   - mongo:mongo_server
   - elasticsearch:elasticsearch_server

이미지를 빌드한 후 다음을 수행합니다.

docker tag <image id> mynewtag:version

그 후에 당신은 당신의 이미지가 더 이상 이름이 없는 것을 보게 될 것입니다.<none>갈 때는docker images.

를 위해 도커 시 빌드 & 컨테이너 이름으로 이미지 이름을 사용자 정의할 수 있습니다. 도커-docker.yml 파일에서 아래와 같이 언급해야 합니다.사용자 지정 이름으로 이미지와 컨테이너를 만듭니다.

version: '3'
services:
  frontend_dev:
    stdin_open: true
    environment:
      - CHOKIDAR_USEPOLLING=true
    build:
      context: .
      dockerfile: Dockerfile.dev
    image: "mycustomname/sample:v1"
    container_name: mycustomname_sample_v1
    ports:
      - '3000:3000'
    volumes:
      - /app/node_modules
      - .:/app

sudo docker-docker -p <project_name> 빌드

프로젝트 이름 할당

참고: 명령에서 'build' 앞에 '-p' 옵션이 나옵니다.

참조: https://docs.docker.com/compose/reference/

제가 한 일은:

version: '3.8'
services:
  app:
    build: .
    depends_on:
      - postgres
    ports:
      - "8080:8080"
    volumes:
      - ./:/usr/src/app/
    container_name: docker-compose-employees
    image: [Docker-Hub-Username]/docker-compose:latest

도커 합성 앱은 컨테이너 이름으로 실행됩니다.docker-compose-employees

그고그이는지미리▁called라는 .[Docker-Hub-Username]/docker-compose:latest

빌드뿐만 아니라 이미지를 지정하는 경우, 작성은 이미지에 지정된 웹 앱과 선택적 태그를 사용하여 빌드된 이미지의 이름을 지정합니다.

image: webapp:tag

도커 검색 파일에는 다음과 같은 내용이 있습니다.

version: '3.9'
services:
  
  node-ecom:
    build: .
    image: "webapp:tag"
    container_name: node-ecom
    ports:
      - "4000:3000"
    volumes:
      - ./:/app:ro
      - /app/node_modules
      - /config/.env
    env_file:
      - ./config/.env

은 Jenkins를 사용하여 할 수 .stackName = prefix.

젠킨스:

stackName = 'foo'

도커:

services:
  bar:

이 그서그이름은래이은▁so름이 됩니다.foo_bar.

도-docker.yml 파일을 합니다.image: "YOUR-DESIRED-NAME"들어 이 예를들서이름이스비어인 의 줄wildfly그리고 당신은 당신의 이미지의 이름을 짓기를 원합니다.wildfly_img

wildfly:
  image: wildfly_img

언급URL : https://stackoverflow.com/questions/32230577/how-do-i-define-the-name-of-image-built-with-docker-compose