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

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)

挂载模式 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

DIND模式 over

基础架构

第一层:linux(完整)

第二层:docker(完整)

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

关键步骤

复制代码
docker run --privileged -d --name d1 docker:dind

# 只可以用bin/sh模式
docker exec -it d1 /bin/sh

理想的原生模式

基础架构

第一层: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

使用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、以init进入容器(第三层)

2、root权限

3、docker.sock的权限

试一试

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

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

相关推荐
我才是鳴海步1 小时前
基于docker技术的单主机环境模拟测试批量客户端
运维·docker·容器
listhi5201 小时前
k8s使用私有harbor镜像源
java·docker·kubernetes
程序员阿超的博客3 小时前
云原生核心技术 (9/12): K8s 实战:如何管理应用的配置 (ConfigMap/Secret) 与数据 (Volume)?
云原生·容器·kubernetes
桂?5 小时前
在 CentOS中安装Docker并安装青龙脚本——笔记
笔记·docker·centos
janthinasnail5 小时前
使用Docker安装FFmpeg
docker·容器
skywalk81636 小时前
超强人工智能解决方案套件InfiniSynapse:精准的业务理解、对各种数据源进行全模态联合智能分析--部署安装@Ubuntu22.04 & @Docker
数据库·人工智能·python·docker·infini-synapse
GeminiJM6 小时前
Docker监控服务部署
运维·docker·容器
yuanyxh6 小时前
持续交付部署的研究与实操
ci/cd·docker·自动化运维
morliz子轩6 小时前
在Docker上部署datalust/Seq日志服务系统
运维·docker·容器
exe4526 小时前
在docker中部署dify
运维·docker·容器