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系统的各种权限

相关推荐
jingshaoqi_ccc2 小时前
ubuntu 24下面安装docker
ubuntu·docker·eureka
关关长语2 小时前
Vue本地部署包快速构建为Docker镜像
前端·vue.js·docker
水滴与鱼3 小时前
DOCKER制作ROS运行的镜像文件
运维·docker·容器
洒家肉山大魔王5 小时前
Kubernetes中Pod 处于 CrashLoopBackOff 状态(生产环境)
linux·容器·kubernetes·pod·pod循环重启
动感小麦兜6 小时前
NAS学习
java·开发语言·eureka
杨浦老苏6 小时前
安全的消息传递和协作工具Virola Messenger
docker·即时通讯·群晖·im
Lynnxiaowen7 小时前
今天我们学习kubernetes内容Ingress资源对象
学习·容器·kubernetes
jason成都8 小时前
emqx的docker部署
运维·docker·容器
mixboot9 小时前
docker 国内镜像源
docker·镜像源
谷粒.9 小时前
云原生时代的测试策略:Kubernetes环境下的测试实践
运维·网络·云原生·容器·kubernetes