“-t --tag”标志的参数无效:参考格式无效

fra*_*iie 15 docker docker-build

我正在尝试使用以下脚本构建 docker 映像:

\n

发布.sh

\n
#!/bin/sh\n\nset -e\n\nexport ENV="prod"\nexport REGISTRY_HOST="registry.seesunit.kr"\nexport IMAGE_PREFIX="$ENV-scim"\nexport IMAGE_TARGET="web"\nexport IMAGE_NAME="$REGISTRY_HOST/$IMAGE_PREFIX-$IMAGE_TARGET"\nexport DOCKER_ROOT="/home/dev-admin/docker"\nexport DOCKER_PATH="$DOCKER_ROOT/$IMAGE_PREFIX/$ENV-$IMAGE_TARGET"\n\n#echo "CONTAINER > "\n#docker container ls | grep $IMAGE_NAME #| grep -Eo "^[^ ]+"\necho "IMAGES > "\ndocker images | grep $IMAGE_NAME #| grep -Eo "^[^ ]+"\n\necho "Input IMAGE_TAG :"\nread IMAGE_TAG\n\necho "TAG=$IMAGE_TAG" > $DOCKER_PATH/.env\necho "IMAGE_NAME=$IMAGE_NAME" >> $DOCKER_PATH/.env\necho "TAG=$IMAGE_TAG" > .env\necho "IMAGE_NAME=$IMAGE_NAME" >> .env\n\ndocker-compose -f $DOCKER_PATH/docker-compose.yml down\n\n#echo "Q4. DOCKER_ID_USER?"\n#read DOCKER_ID_USER\ndocker rmi -f $IMAGE_NAME:$IMAGE_TAG\n\ndocker build -f ./tools/$ENV.Dockerfile -t $IMAGE_NAME:$IMAGE_TAG .\n\n#docker tag $IMAGE_NAME:$IMAGE_TAG $DOCKER_ID_USER/$IMAGE_NAME:$IMAGE_TAG\n#docker push $DOCKER_ID_USER/$IMAGE_NAME:$IMAGE_TAG\n\n#docker push $IMAGE_NAME:$IMAGE_TAG\n\ndocker-compose -f $DOCKER_PATH/docker-compose.yml up -d\n
Run Code Online (Sandbox Code Playgroud)\n

当前集装箱

\n
CONTAINER ID   IMAGE                                     COMMAND                  CREATED       STATUS       PORTS                                     NAMES\ndad647696802   registry.seesunit.kr/prod-scim-web:v_db   "nginx -g \'daemon of\xe2\x80\xa6"   2 weeks ago   Up 2 weeks   0.0.0.0:30080->80/tcp, :::30080->80/tcp   prod-web_prod-web_1\n
Run Code Online (Sandbox Code Playgroud)\n

当我尝试docker build从命令行运行时:

\n
#!/bin/sh\n\nset -e\n\nexport ENV="prod"\nexport REGISTRY_HOST="registry.seesunit.kr"\nexport IMAGE_PREFIX="$ENV-scim"\nexport IMAGE_TARGET="web"\nexport IMAGE_NAME="$REGISTRY_HOST/$IMAGE_PREFIX-$IMAGE_TARGET"\nexport DOCKER_ROOT="/home/dev-admin/docker"\nexport DOCKER_PATH="$DOCKER_ROOT/$IMAGE_PREFIX/$ENV-$IMAGE_TARGET"\n\n#echo "CONTAINER > "\n#docker container ls | grep $IMAGE_NAME #| grep -Eo "^[^ ]+"\necho "IMAGES > "\ndocker images | grep $IMAGE_NAME #| grep -Eo "^[^ ]+"\n\necho "Input IMAGE_TAG :"\nread IMAGE_TAG\n\necho "TAG=$IMAGE_TAG" > $DOCKER_PATH/.env\necho "IMAGE_NAME=$IMAGE_NAME" >> $DOCKER_PATH/.env\necho "TAG=$IMAGE_TAG" > .env\necho "IMAGE_NAME=$IMAGE_NAME" >> .env\n\ndocker-compose -f $DOCKER_PATH/docker-compose.yml down\n\n#echo "Q4. DOCKER_ID_USER?"\n#read DOCKER_ID_USER\ndocker rmi -f $IMAGE_NAME:$IMAGE_TAG\n\ndocker build -f ./tools/$ENV.Dockerfile -t $IMAGE_NAME:$IMAGE_TAG .\n\n#docker tag $IMAGE_NAME:$IMAGE_TAG $DOCKER_ID_USER/$IMAGE_NAME:$IMAGE_TAG\n#docker push $DOCKER_ID_USER/$IMAGE_NAME:$IMAGE_TAG\n\n#docker push $IMAGE_NAME:$IMAGE_TAG\n\ndocker-compose -f $DOCKER_PATH/docker-compose.yml up -d\n
Run Code Online (Sandbox Code Playgroud)\n

我收到这样的错误:

\n
CONTAINER ID   IMAGE                                     COMMAND                  CREATED       STATUS       PORTS                                     NAMES\ndad647696802   registry.seesunit.kr/prod-scim-web:v_db   "nginx -g \'daemon of\xe2\x80\xa6"   2 weeks ago   Up 2 weeks   0.0.0.0:30080->80/tcp, :::30080->80/tcp   prod-web_prod-web_1\n
Run Code Online (Sandbox Code Playgroud)\n

我在 Windows 上运行。

\n

Han*_*ian 14

正如它所说,您的图像名称/标签无效。

图像名称以斜线分隔。您可以使用包含可选端口号的注册表地址作为前缀。

你的prod-web_prod-web_1:registry.seesunit.kr/prod-scim-web:v_db冒号太多了。我的猜测是第一位是错误的,你想要的是 registry.seesunit.kr/prod-scim-web:v_db,即你的构建命令应该是

docker build -f ./tools/$ENV.Dockerfile -t registry.seesunit.kr/prod-scim-web:v_db .
Run Code Online (Sandbox Code Playgroud)


Gin*_*pin 9

-t prod-web_prod-web_1:registry.seesunit.kr/prod-scim-web:v_db
                      ^                                  ^
                      |                                  |
Run Code Online (Sandbox Code Playgroud)

:您的论点中有两个冒号 ( ) name:tag

Docker 认为你的镜像标签registry.seesunit.kr/prod-scim-web:v_db包含一个冒号,来自https://docs.docker.com/engine/reference/commandline/tag/

标签名称必须是有效的 ASCII,并且可以包含小写和大写字母、数字、下划线、句点和破折号。标签名称不能以句点或破折号开头,并且最多可以包含 128 个字符。