• docker套娃实践(待续)


    安装Docker

    sudo apt-get update
    
    sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
    
    sudo usermod -aG docker $USER
    
    sudo chmod 666 /var/run/docker.sock
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    Docker基础命令

    # 基础命令
    启动docker: systemctl start docker
    停止docker: systemctl stop docker
    重启docker: systemctl restart docker
    查看docker状态: systemctl status docker
    开机启动: systemctl enable docker
    
    # 如果没有systemctl,要么装命令,要么使用service命令替代
    service docker start
    service docker status
    
    # 停止全部容器
    docker stop $(docker ps -a -q)
    # 删除全部容器,除了正在运行的
    docker rm $(docker ps -a -q)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    挂载模式 over

    基础架构

    第一层:linux(完整)

    第二层:docker(完整)

    第三层:Ubuntu(阉割)

    第四层:docker(无实际第四层,挂载在第二层的docker上)

    关键步骤

    # 将外层docker进行挂在
    docker run -it -d -v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker  --name u1 ubuntu
    
    # 以下两种方式进入皆可以
    docker exec -it u1 /bin/sh
    docker exec -it u1 /bin/bash
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    DIND模式 over

    基础架构

    第一层:linux(完整)

    第二层:docker(完整)

    第三层:直接运行docker:dind容器,独立的docker容器,可以独立运行docker命令,不予第二层关联

    关键步骤

    docker run --privileged -d --name d1 docker:dind
    
    # 只可以用bin/sh模式
    docker exec -it d1 /bin/sh
    
    
    • 1
    • 2
    • 3
    • 4
    • 5

    理想的原生模式

    基础架构

    第一层:linux(完整)

    第二层:docker(完整)

    第三层:linux(基础版本,非完整linux,命令不完整、权限不完整;缺少的命令可以按照完善)

    第四层:docker(无法正常运行,缺少权限)

    完善ubutn系统

    apt-get update
    
    apt-get install lsb-release
    
    apt install net-tools
    
    apt install iputils-ping
    
    apt-get install sudo
    
    sudo apt install systemctl 
    
    sudo apt-get remove docker docker-engine docker.io containerd runc
    
    sudo apt-get update
     
    sudo apt-get install \
        ca-certificates \
        curl \
        gnupg \
        lsb-release
    apt-get install -y systemd
    
    sudo mkdir -p /etc/apt/keyrings
     
    curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
    
    echo \
      "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] http://mirrors.aliyun.com/docker-ce/linux/ubuntu \
      $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    
    
    • 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
    • 29
    • 30
    • 31

    使用ubuntu的init进行进入,问题还是权限不够

    
    docker run -it ubuntu:20.04 
    
    docker run --privileged=true --network=docker-bridge -itd ubuntu /usr/sbin/init
    
    docker run --privileged=true  -itd ubuntu /usr/sbin/init
    
    docker run ubuntu --privileged=true  -it  /usr/sbin/init
    
    docker run ubuntu --privileged=true  -it
    
    docker run -itd  --privileged=true --name myubuntu1 ubuntu /usr/sbin/init
    
    docker run -itd  --privileged=true --name myubuntu2 ubuntu /usr/sbin/init
    
    docker exec -it b048aa891842  /bin/bash
    
    apt-get install -y tini
    
    ENTRYPOINT ["/usr/local/bin/tini", "--"]
    
    docker exec -it b048aa891842  /usr/sbin/init
    
    docker exec -it 47d88c363fe0 /bin/bash
    
    docker restart b048aa891842
    
    
    • 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

    问题

    权限问题始终未解决

    主要有以下几个问题

    1、以init进入容器(第三层)

    2、root权限

    3、docker.sock的权限

    试一试

    1、完善容器里面的ubuntu系统,或者直接用完整的ubuntu系统制作镜像

    2、试图取得容器里面ubuntu系统的各种权限

  • 相关阅读:
    MySQL 分组排序后 → 如何取前N条或倒数N条
    鸿蒙自定义侧滑菜单布局(DrawerLayout)
    [附源码]Python计算机毕业设计Django疫情防控平台
    python项目实战——银行取款机系统(四)
    【数据挖掘 & 机器学习 | 时间序列】时间序列必学模型: ARIMA超详细讲解
    [JS入门到进阶] 手写裁剪图片的工具,并部署。一键裁剪掘金文章封面
    AI工程化—— 如何让AI在企业多快好省的落地?
    vue(十一)——混入mixin
    金融风控建模常用指标介绍(WOE, IV, KS, PSI)
    GO泛型相关
  • 原文地址:https://blog.csdn.net/qq_25037705/article/details/136616858