码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Docker in docker 实现


    Docker in docker

    文章目录

    • Docker in docker
      • 原理
      • 实现(centos7)
      • 常见问题
      • 参考

    在docker容器内运行docker一般是不被倡导的。但有些场景和业务上,需要在容器内使用docker对组件进行编译构建,不同的组件所需的依赖有不一致,不同自建相互之间的依赖很可能相互干扰(比如需要同一个组件的不同版本),因此docker-in-docker的解决方案被提出来了, 一般被用于CI或集成测试。

    原理

    通过将主机上的docker.sock挂载至容器内,实现共享主机的docker.sock,使得在容器内可以使用宿主机上的docker daemon;在容器中使用的docker pull push build image run 实际上使用的是宿主机的docker daemon;
    通过将主机上的docker命令脚本挂载至容器,实现共享docker服务。

    实现(centos7)

    1. 安装docker
      由于我的yum源,有docker的安装文件,直接使用yum安装docker

      yum install docker-ce -y

    2. 启动 docker

      启动

      systemctl start docker

      开机自启

      systemctl enable docker

      查看docker的信息

      docker info

    3. pull centos7 镜像

      docker pull centos:7

    4. 启动容器

      docker run -it --name docker-daemon --hostname daemon-test --network=host -v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker -e DOCKER_HOST=“unix:///var/run/docker.sock” centos:7 /bin/bash

    –network: 指定容器的网络, 启动容器默认使用bridge网络,这里直接使用主机的网络
    -e:设置环境变量,这里直接指定使用docker.sock访问docker daemon
    -v: 挂载文件,直接将主机的docker.sock挂载至容器内,共享docker daemon;挂载docker命令脚本至容器内,共享docker服务

    查看容器内的docker信息

    [root@daemon-test /]# docker version
    Client: Docker Engine - Community
     Version:           19.03.1
     API version:       1.40
     Go version:        go1.12.5
     Git commit:        74b1e89
     Built:             Thu Jul 25 21:21:07 2019
     OS/Arch:           linux/amd64
     Experimental:      false
    
    Server: Docker Engine - Community
     Engine:
      Version:          19.03.1
      API version:      1.40 (minimum version 1.12)
      Go version:       go1.12.5
      Git commit:       74b1e89
      Built:            Thu Jul 25 21:19:36 2019
      OS/Arch:          linux/amd64
      Experimental:     false
     containerd:
      Version:          1.2.6
      GitCommit:        894b81a4b802e4eb2a91d1ce216b8817763c29fb
     runc:
      Version:          1.0.0-rc8
      GitCommit:        425e105d5a03fabd737a126ad93d62a9eeede87f
     docker-init:
      Version:          0.18.0
      GitCommit:        fec3683
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28

    常见问题

    1. Cannot connect to the daemon

    a. 检查 docker 运行状态

    docker info
    
    • 1

    如果docker服务未启动的话, 尝试重启docker服务

    b. 重启docker服务(centos)

    systemctl restart docker
    
    • 1

    如果还不能启动docker的话, 按提示输入systemctl status docker.service或者journalctl -xe查看具体情况

    c. 查看失败日志

    systemctl status docker.service
    #or
    journalctl -xe
    
    • 1
    • 2
    • 3

    参考

    1. How to detect a docker daemon port
    2. 使用docker in docker
    3. 使用Docker-in-Docker 来运行 CI
    4. hub.docker.com
    5. docs.docker.com
    6. github.com
    7. docs.docker.com:sdk
    8. docs.docker.com:sdk-example
  • 相关阅读:
    汇编语言核心要点
    decltype 类型指示符
    基于GA遗传优化的PID控制器控制参数整定matlab仿真
    大数据技术学习笔记(五)—— MapReduce(2)
    面霸的自我修养:synchronized专题
    Unity Shader顶点数据疑问
    vue3 封装使用 pinia (可直接使用,包含数据持久化)
    论文解读(ChebyGIN)《Understanding Attention and Generalization in Graph Neural Networks》
    【毕业设计】奥运会数据分析与可视化 - python 大数据
    以太网PHY芯片LAN8720A芯片研究
  • 原文地址:https://blog.csdn.net/m0_67403240/article/details/126327139
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号