说明

  • 本文用于记录视频中提到的方式,后续实际用到再详细记录
  • 原理是网络通信

梳理

dind

image-20231105164313947

  • image中的docker,作为client存在,即可以运行docker run xxx之列的命令

  • services中的docker:dind作为docker deamon存在,如果没有这个,那么image中的docker在运行时,就会报错docker: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

  • docker run -d -p 3000:3000 $CI_REGISTRY_IMAGE

    • 这条命令执行在image中的docker这个终端中
    • 启动的容器由services中的docker:dind负责,即启动的容器在docker:dind
  • image中的dockerservices中的docker:dind通过网络通信

  • curl中的localhost指的是本地地址,即image中的docker地址,因此视频中使用localhost会报错,将localhost修改为docker即可

    image-20231105170329759

    image-20231105165055207

  • 过于复杂(需要额外启动一个容器),耗时较多,视频中约 60 秒

self-image

image-20231105165706215

  • 将自建镜像作为服务启动,即省去启动了dind过程

  • 视频中约为 20 秒

more-complex

image-20231105170026292

image-20231105170047772

参考