在 Gitlab CI 中测试 docker 容器
说明
- 本文用于记录视频中提到的方式,后续实际用到再详细记录
- 原理是网络通信
梳理
dind

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中的docker和services中的docker:dind通过网络通信curl中的localhost指的是本地地址,即image中的docker地址,因此视频中使用localhost会报错,将localhost修改为docker即可

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

将自建镜像作为服务启动,即省去启动了
dind过程视频中约为 20 秒
more-complex


参考
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 cv-programmer!







