微服务架构从入门到精通之DevOps实践篇(八) CI/CD过程遇到的问题

本章主要介绍GitLab CI/CD过程中遇到的问题。

问题1. Docker in Docker模式下注册 Runner

    如果gitlab-runner已经运行了,我们可以通过

执行

gitlab-runner register \

  --non-interactive \

  --url "http://192.168.0.102/" \

  --registration-token "3k1yGnbpuS2skUfrbB3t" \

  --executor "docker" \

  --docker-image alpine:3 \

  --description "102-docker-runner" \

  --tag-list "docker" \

  --run-untagged \

  --locked="false" \

  --docker-privileged

注意:docker in docker 模式要求docker-privileged=“true”。

问题2. Insecure Registry下Docker Push的问题

在docker push的时候遇到如下错误:

2.1 解决方法

在/etc/docker/daemon.json

2.2 解决方法

    修改Registry server上的Docker daemon的配置,为DOCKER_OPTS增加–insecure-registry:DOCKER_OPTS="--insecure-registry xxx:5000”。

    重启Docker Daemon,启动Registry容器:

$ sudo service docker restart

docker stop/waiting

docker start/running, process 6712

$ sudo docker run -d -p 5000:5000 -v `pwd`/data:/var/lib/registry --restart=always --name registry registry:2

5966e92fce9c34705050e19368d19574e021a272ede1575385ef35ecf5cea019

尝试再次Push image:

$ docker push xxxx:5000/test/busybox

The push refers to a repository

[xxxx:5000/test/busybox] (len: 1) 65e4158d9625: Pushed

5506dda26018: Pushed

latest: digest: sha256:800f2d4558acd67f52262fbe170c9fc2e67efaa6f230a74b41b555e6fcca2892 size: 2739

push ok

问题3. Secure Registry下Docker Push的问题

$ docker push mydockerhub.com:5000/test/busybox

The push refers to a repository [mydockerhub.com:5000/test/busybox] (len: 1)

unable to ping registry endpoint https://mydockerhub.com:5000/v0/

v2 ping attempt failed with error: Get https://mydockerhub.com:5000/v2/: x509: certificate signed by unknown authority

 v1 ping attempt failed with error: Get https://mydockerhub.com:5000/v1/_ping: x509: certificate signed by unknown authority

   push失败了!从错误日志来看,docker client认为server传输过来的证书的签署方是一个unknown authority(未知的CA),因此验证失败。我们需要让docker client安装我们的CA证书:

$ sudo mkdir -p /etc/docker/certs.d/mydockerhub.com:5000

$ sudo cp certs/domain.crt /etc/docker/certs.d/mydockerhub.com:5000/ca.crt

$ sudo service docker restart //安装证书后,重启Docker Daemon

另外,macOS的用户还需要额外执行下面的命令:

sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain ca.crt

再执行Push,我们看到了成功的输出日志。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值