跳至主要内容

Gitlab CI/CD 之 gitlab-runner 用 Docker 方式如何顺利工作

前阵子,k8s 是搭建起来了.但是这玩意更新太快,3个月后, 以前的方法不好使了...又有新坑了...

干脆就只跑 Docker 吧....

我擦,Docker也跑不起来了...说
**docker: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?.**


以前只要在 .gitlab-ci.yml 里面填写 标红的就可以了.但是现在不行,会报 

Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?



services:
  - docker:dind

variables:

  DOCKER_DRIVER: overlay



build:

  stage: build

  script:

  - export DOCKER_HOST="tcp://localhost:2375"


build-master:
  stage: build
  script:
    - echo $CI_REGISTRY_PASSWORD |  docker login -u "$CI_REGISTRY_USER" $CI_REGISTRY --password-stdin
    - docker build .


(注意, $CI_REGISTRY 这些环境变量是要填写在 Gitlab web 环境变量中的)



研究后,要在 gitlab-run 的 文件中包含
    volumes = ["/cache", "/var/run/docker.sock:/var/run/docker.sock"]


sudo cat /etc/gitlab-runner/config.toml

concurrent = 1
check_interval = 0

[[runners]]
  name = "k8s"
  url = "https://x.net"
  token = "xxxxxxxxxx"
  executor = "docker"
  [runners.docker]
    tls_verify = false
    privileged = true
    disable_cache = false
    volumes = ["/cache", "/var/run/docker.sock:/var/run/docker.sock"]
    shm_size = 0
  [runners.cache]



这样就可以 build 你项目中的 Dockerfile 了~








贴个完整的 .gitlab.yml 文件:

image: docker:git
services:
  - docker:dind
variables:
  DOCKER_DRIVER: overlay
  
before_script:

  - echo $CI_REGISTRY_PASSWORD |  docker login -u "$CI_REGISTRY_USER" $CI_REGISTRY --password-stdin

build-master:

  stage: build
  script:
    - docker build .
    

  only:

    - master

build:

  stage: build
  script:
    - docker build .
  except:
    - master


完整的Dockerfile:

FROM x.sn.mynetnaxxme.net:5001/root/buildroot-imx6q:latest

#RUN apt-get update && \

#    apt-get install -qq -y --no-install-recommends \
#    rsync bc locales  u-boot-tools lzop && \
#    locale-gen en_US.UTF-8

#RUN apt-get clean



RUN git clone https://x.net/root/dl.git xx


RUN mkdir /opt/freescale/usr/local -p && \

    tar xf dl/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12.tar.gz -C /opt/freescale/usr/local/ && \
    export CROSS_COMPILE=/opt/freescale/usr/local/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/bin/arm-none-linux-gnueabi- && \
    export PATH=/opt/freescale/usr/local/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/bin:$PATH && \
    tar xf dl/linux-3.0.35.tar.bz2 && cp dl/buildroot-config/devtmpfs.config linux-3.0.35/ && \
    cp dl/buildroot-config/devtmpfs.config linux-3.0.35/.config && \
    pwd && ls -la && ls dl/ -la && \
    cp dl/patch/timeconst.pl linux-3.0.35/kernel/ && \
    export CPUS=`grep -c processor /proc/cpuinfo` && \
    cd linux-3.0.35 &&  make devtmpfs.config && make ARCH=arm uImage -j${CPUS} 2>&1 | tee build-kernel.log | grep -i error

RUN tar xf dl/buildroot-2014.05.tar.bz2 && \

    cp dl/buildroot-config/buildroot.config buildroot-2014.05/.config && \
    cp dl/buildroot-config/busybox.config buildroot-2014.05/package/busybox/busybox-1.22.x.config && \
    cp dl/patch/101-cfns.patch buildroot-2014.05/package/gcc/4.7.3/ && \
    cd buildroot-2014.05 && make 2>&1 | tee build-buildroot.log | grep -i error




评论

此博客中的热门博文

最强百元Wi-Fi 路由-----斐讯K2P

 最强百元级无线路由到来--斐讯K2P 先来王炸: 1 K2P闲鱼全新收购价在 100-140 2 K2P是全千兆有线,全千兆有线,全千兆有线!不要问为啥说三遍 3 SoC 是MT7621A 双核四线程 880Mhz 4 Wi-Fi 是单芯片MT7615DN,支持MU-MIMO特性,支持Beamforming 5 外置PA和LNA提升信号覆盖范围 6 众多第三方固件,实用性爆棚 以上六点,咱们一条一条解说。 没有对比,就没有伤害: 1 售价:小米3G,同样硬件的小米3G售价249。号称性价比、发烧的硬件都比这个贵100,还怎么玩? 2 看TP-LINK、FAST、水星的同售价产品,100多元的没千兆,有千兆的都200元起。百兆网口的东西我现在看都不看! 3 说实话,有比MT7621A 880Mhz 1004K核心更好的MIPS32 处理器,就是螃蟹家RTL8198C 1074Kc(8198C另外还多一颗500Mhz用来加速存储的核), 但是很难买到,比如这三款:ASUS RP-AC68U 、D-Link DIR-879、Edge-core ecw3350 。 PS:关于螃蟹 RTL8198C的故事有好几个段子,都是和原厂闲聊得来的...以后有时间再说,今天主角是MTK。 wiki数据: 1074K single core delivers a performance of 1.93 DMIPS/MHz and 3.49 Coremarks/MHz.  1004K single core delivers a performance of 1.6 DMIPS/MHz and 3.05 Coremarks/MHz.  24K core delivers a performance of 1.6 DMIPS/MHz and 3.1 Coremarks/MHz. 虽然只看 DMIPS和 Coremarks/MHz,觉得24Kc和1004Kc差不多,但是区别还是很大的,比如L2 Cache 24Kc就没有, 多线程多核也没有,而且7621A主频提升到了 880Mhz。 这些都是很大的进步。并非简单的胶水双核 :D  4 Wi-Fi

用Gitlab搭建 Docker Hub Registry(不踩坑指南)

Docker大家基本都用过, Registry 就是服务,简单理解就是能让你 Docker pull 和push Image的地方。 Gitlab的 Registry 是自动化部署一个环节。计划从Gitlab的自动化集成、自动化部署,以及如何配合Kubernets(谷歌的平台简称K8s),这些属于Devops的应用。 之前写过一篇文章,感慨现在的云服务实在是太方便了:快速部署的目的是让创业公司专注自己的业务,而无需浪费人力去折腾基础服务. (原文连接:  后知后觉,云服务太方便了!  ) 那么为何不使用 Docker Hub 服务?反而要自己搭建呢? 几个原因: *  Docker Hub 访问实在是太慢,甚至是访问不了.  *  使用 Docker Hub必须开源自己的仓库, 很多用户比较敏感.(当然可以花钱购买私有仓库进行扩容) *  自己机器上数据和云服务数据同步,保证数据安全 --------------------------------------------------------- Gitlab 功能太多,我也是使用 CI 、CD 配合 Kubernetes(k8s)时候偶然发现竟然还集成了Docker Registry 的功能...这下爽了,终于不用看墙的脸色决定网速了~我自己的 Docker Hub,想怎么push、pull 都行~ --------------------------------------------------------- 我们这篇主要讲怎么 避免踩坑 , 具体服务怎么搭建回头找个机会,再整理下详细步骤. 我的环境是一台 DELL 16G 的1U 服务器,在 EXSI 6.5 上给 Ubuntu17.04 server 分配了4 Core 以及 6G内存.  只跑 Gitlab 基础 +   Registry 的服务, 和这个配套的 K8s 、Gitlab-runner 等服务在另外一个系统上跑(K8s 、CI CD、 Gitlab-runner 如何搭建以及应用,会以后讲). 以下注意几点: Registry 不支持自签(Self-Signed Cretificate)      所以不要想着局域网随