使用-p的docker登录会产生错误,并且当我切换到--password-stdin之类的建议时,它仍然会给出错误-gitlab-ci

时间:2018-07-06 13:19:03

标签: docker gitlab gitlab-ci gitlab-ci-runner

我在gitlab服务器上安装了docker注册表。这是我的.gitlab-ci.yml文件:

image: docker:18.05.0-ce

services:
  - docker:dind

stages:
  - build
  - test
  - release

variables:
  TEST_IMAGE: http://my.gitlab.ip:4444/path/to/project:$CI_COMMIT_REF_NAME
  RELEASE_IMAGE: http://my.gitlab.ip:4444/path/to/project:latest

before_script:
  - docker login -u $USERNAME -p $PASSWORD http://my.gitlab.ip:4444

build:
  stage: build
  script:
    - docker build --pull -t $TEST_IMAGE .
    - docker push $TEST_IMAGE

# ...

# more commands

我正在为我的用户名和密码使用一个秘密变量。当我推送代码并且运行程序遍历此文件时,出现以下错误:

WARNING! Using --password via the CLI is insecure. Use --password-stdin.
Error response from daemon: Get https://my.gitlab.ip:4444/v2/: http: server gave HTTP response to HTTPS client

所以我尝试像这样使用--password-stdin

我收到此错误:

"docker login" requires at most 1 argument.
See 'docker login --help'.

Usage:  docker login [OPTIONS] [SERVER] [flags]

编辑:

我也在docker login命令中尝试过此操作

docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY

并收到此错误:

WARNING! Using --password via the CLI is insecure. Use --password-stdin.
Error response from daemon: Get https://my.gitlab.ip:4444/v2/: http: server gave HTTP response to HTTPS client

我在gitlab服务器上进行了以下更改:

在/ etc / default / docker中:

DOCKER_OPTS="--insecure-registry http://my.gitlab.ip:4444"

在/etc/docker/daemon.json中:

{
    "insecure-registries" : ["http://my.gitlab.ip:4444"]
}

我也在gitlab运行程序(不同的服务器)上做过同样的事情。

为什么显示我在使用https的错误以及如何将其更改为http?

3 个答案:

答案 0 :(得分:1)

我不确定您何时进行设置,但是在使用isi之后,使用GitLab运行器并登录到GitLab Container注册表时,存在更新的权限模型。

作为per the docs,您可以执行以下操作:

for (int i = 2; i < rowCount; i++)
{
    for (int j = 1; j < columnCount; j++)
    {
        worksheet.Cells[i, j].Value = enrollmentDataGrid.Columns[j].GetCellContent(enrollmentDataGrid.Items[i]);
    }
 }

答案 1 :(得分:0)

不知道您是否已经解决了问题,但是在搜索登录选项(和最佳实践)的区别时,我注意到您的错误实际上还不是吗?

我们看到的错误如下:

Error response from daemon: Get https://my.gitlab.ip:4444/v2/: http: server gave HTTP response to HTTPS client

,但是在您的.gitlab-ci.yml文件中,您将https://my.gitlab.ip:4444/v2/列为URL。虽然这不一定要关联,但在我看来ssl在某处丢失,例如http vs https。

答案 2 :(得分:0)

根据gitlab docs –password-stdin是一个标志,而不是命令行变量。在提供的示例中,不是直接通过命令行从文件中读取密码。