当前位置: 首页 > news >正文

Docker in Docker(Dind)

Docker in Docker(Dind)

使用 Docker-in-Docker (dind):
。系统 root 密码为 2020:
docker run --gpus all -v E:/yyp/soft/sc/pytorch:/home/yyp/pytorch -v /var/run/docker.sock:/var/run/docker.sock --ipc=host --privileged -it -p 2121:2020 -p 8310:8888 -p 8612:8889 -p 1127:22 -p 8411:8889 -p 8869:8890 -p 9994:9993 -p 1088:23 --entrypoint /bin/bash registry.cn-shanghai.aliyuncs.com/yore/bigdata:7.8.2003_v1

###在宿主机上重新启动一个特权容器,并集成DinD

如果 vault.centos.org 仍不可用,尝试其他可靠的镜像源(如阿里云或华为云):

备份原配置文件
Bash
深色版本
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
下载并配置阿里云镜像源
Bash
深色版本
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
清除缓存并重试安装
Bash
深色版本
yum clean all
yum makecache
yum install -y lvm2 parted device-mapper-persistent-data libnl
yum install -y docker

在宿主机终端运行:

####docker run -d --name dind --privileged docker:dind
###[root@b71fc7e01bda /]# docker run -v E:/yyp/soft/sc/pytorch:/home/yyp/pytorch -v /var/run/docker.sock:/var/run/docker.sock --volumes-from dind --privileged -it -p 2100:2020 -p 8589:8888 -p 22:22 --entrypoint /bin/bash registry.cn-shanghai.aliyuncs.com/yore/bigdata:7.8.2003_v1
####[root@93cc8a93f8ef /]#若需主机网络访问,可添加 --net=host(但可能降低隔离性)。 ###上面加入了 22 看看能不能成

直接改为进行运行::
docker run -v E:/yyp/soft/sc/pytorch:/home/yyp/pytorch -v /var/run/docker.sock:/var/run/docker.sock --privileged -it -p 2100:2020 -p 8589:8888 --entrypoint /bin/bash registry.cn-shanghai.aliyuncs.com/yore/bigdata:7.8.2003_v1

–volumes-from 是 Docker 的一个参数,用于让新创建的容器复用另一个容器的数据卷(Data Volumes)。具体到你的场景中,–volumes-from dind 表示新容器会继承名为 dind 的容器的所有数据卷配置。

在宿主机上开放端口(如使用 firewalld) 可以不用管

###sudo firewall-cmd --permanent --add-port=2100/tcp
###sudo firewall-cmd --permanent --add-port=8589/tcp
###sudo firewall-cmd --reload

curl -s https://install.zerotier.com |
添加root权限和9993端口
##docker run -it --privileged --rm -p 9993:9993 zt /bin/bash
为 Docker 不支持直接动态修改已运行容器的端口映射
-p 9994:9993
curl -s https://install.zerotier.com | bash
不必要再window 上的linux(docker destop) 内重复安装 zerotier!!! 直接用就行了 192.168.1.33
C:\Users\dell>ping 192.168.1.33
正在 Ping 192.168.1.33 具有 32 字节的数据:
来自 192.168.1.33 的回复: 字节=32 时间<1ms TTL=64

1127:22
ssh root@192.168.1.33 -p 1127
192.168.1.121/24

ssh root@192.168.1.121 -p 1127
[root@683148a82b0f /]# systemctl status sshd # Linux 系统
Failed to get D-Bus connection: Operation not permitted
[root@683148a82b0f /]#
yum install openssh-server
[root@683148a82b0f /]# systemctl start sshd
Failed to get D-Bus connection: Operation not permitted
[root@683148a82b0f /]# pkill sshd && /usr/sbin/sshd -D
[root@683148a82b0f /]#
vi /etc/ssh/sshd_config

  1. 直接运行 SSH 服务(推荐)​
    在 Docker 容器中,通常不需要 systemd,可以直接运行 sshd 守护进程:

bash
/usr/sbin/sshd -D
-D 参数表示让 sshd 在前台运行(适合 Docker 容器)。
[root@683148a82b0f /]# ps aux | grep sshd
root 449 0.0 0.0 12388 2220 pts/0 S+ 10:54 0:00 grep --color=auto sshd
[root@683148a82b0f /]#

创建必要目录(部分系统需手动创建)

mkdir -p /var/run/sshd

启动 SSH 服务(前台运行,适合容器)

/usr/sbin/sshd -D &
[root@683148a82b0f /]# ps aux | grep sshd # 应显示 sshd 进程
root 453 0.0 0.0 112940 7752 pts/0 S 10:56 0:00 /usr/sbin/sshd -D
root 457 0.0 0.0 12388 2216 pts/0 S+ 10:57 0:00 grep --color=auto sshd
[root@683148a82b0f /]# netstat -tuln | grep 22 # 应显示 22 端口监听
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp6 0 0 :::22 ::😗 LISTEN
[root@683148a82b0f /]#

sed -i ‘s/#PermitRootLogin prohibit-password/PermitRootLogin yes/’ /etc/ssh/sshd_config
sed -i ‘s/#PasswordAuthentication yes/PasswordAuthentication yes/’ /etc/ssh/sshd_config
pkill sshd && /usr/sbin/sshd -D &

ssh root@192.168.1.121 -p 1127 这个在docker 上安装的zerotier 虽然可以连接 但是没用 应该在电脑上在做一个映射 把1127 映射到192.168.1.33 或者直接用192.168.1.33的地址来寻找1127 就可以了!!! 因为docker 的22端口已经 映射到1127 除非docker 的docker 上运行zerotier
ssh root@192.168.1.33 -p 1127

[root@683148a82b0f /]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6a551f683b7a zerotier/zerotier-synology:latest “/entrypoint.sh” 57 minutes ago Up 57 minutes 9993/udp zerotier
docker exec -it 6a551f683b7a /bin/bash
6a551f683b7a:/# docker
bash: docker: command not found
6a551f683b7a:/#-p 2100:2020 -p 8589:8888

[root@683148a82b0f /]# docker exec -it 6a551f683b7a /bin/bash
6a551f683b7a:/# ping 192.168.1.121
PING 192.168.1.121 (192.168.1.121): 56 data bytes
64 bytes from 192.168.1.121: seq=0 ttl=64 time=0.019 ms

根据你的配置和错误信息,以下是详细的问题分析和解决方案:

​问题诊断
​SSH 配置问题:

/etc/ssh/sshd_config 中 ListenAddress :: 表示 SSH 仅监听 IPv6 地址(:: 是 IPv6 的通配符)。
但 Docker 端口映射 -p 2121:2020 默认绑定到 IPv4(0.0.0.0),导致 IPv4 的 SSH 连接被拒绝。
​连接错误:

你尝试从 Windows 主机连接 ssh root@localhost -p 2121,但收到 kex_exchange_identification: read: Connection aborted。
方法 1:强制 SSH 服务监听 IPv4 用这个ssh 才能成功连接上!!!!!!!!!!!!!!!!!!!!!!!!!!!!
echo “ListenAddress 0.0.0.0” >> /etc/ssh/sshd_config
pkill sshd && /usr/sbin/sshd -D &
netstat -tulnp | grep sshd
[root@683148a82b0f /]# netstat -tulnp | grep sshd
tcp 0 0 0.0.0.0:2020 0.0.0.0:* LISTEN 13865/sshd
tcp6 0 0 :::2020 ::😗 LISTEN 13865/sshd
[root@683148a82b0f /]#
方法 2:通过 IPv6 连接
如果不想修改配置,可以显式指定 IPv6 地址连接:

bash
ssh -6 root@localhost -p 2121
-6 表示强制使用 IPv6。

[若需持久化配置,建议修改 Dockerfile 或启动命令:
bash

示例 Dockerfile 片段

RUN apt update && apt install -y openssh-server
&& mkdir -p /run/sshd
&& echo ‘root:your_password’ | chpasswd
&& sed -i ‘s/#PermitRootLogin prohibit-password/PermitRootLogin yes/’ /etc/ssh/sshd_config
CMD [“/usr/sbin/sshd”, “-D”]
构建并运行容器时映射端口:
bash
docker run -d -p 2222:22 your_image]

也可以单独
​Docker 容器默认没有 systemd 或其他 init 系统,无法直接管理服务。
​ZeroTier 需要特权模式​(如访问 /dev/net/tun 设备)才能正常运行。
​网络模式:
若需主机网络访问,可添加 --net=host(但可能降低隔离性)。
完整示例命令
bash
docker run -d --name zerotier --privileged --cap-add=NET_ADMIN --cap-add=SYS_ADMIN --device=/dev/net/tun -v /var/lib/zerotier-one:/var/lib/zerotier-one zerotier/zerotier-synology:latest
#查看zerotier状态
docker exec -it zerotier zerotier-cli status

#加入网络
docker exec -it zerotier zerotier-cli join 4dfe6b96cd6a144a

570e3de8aec2: Pull complete
Digest: sha256:1813b4a445e3e9ec7b2999b037bd6c8b2fe182780a78ebe9d82c4991981fcee0
Status: Downloaded newer image for zerotier/zerotier-synology:latest
6a551f683b7ab90f95b0d5a2d1aefdd3e50c21c030891acd23f316cbe25fe86f
[root@683148a82b0f /]# docker exec -it zt zerotier-cli status
Error response from daemon: No such container: zt
[root@683148a82b0f /]# docker exec -it 6a551f683b7ab90f95b0d5a2d1aefdd3e50c21c030891acd23f316cbe25fe86f /bin/bash
6a551f683b7a:/#
6a551f683b7a:/#
[root@683148a82b0f /]# docker exec -it zerotier zerotier-cli status
200 info a3e2e961e8 1.14.0 ONLINE
[root@683148a82b0f /]# docker exec -it zerotier zerotier-cli join 4dfe6b96cd6a144a
200 join OK
[root@683148a82b0f /]#
[root@683148a82b0f /]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6a551f683b7a zerotier/zerotier-synology:latest “/entrypoint.sh” 5 minutes ago Up 5 minutes 9993/udp
[root@683148a82b0f /]# docker exec -it zerotier zerotier-cli status
200 info a3e2e961e8 1.14.0 ONLINE
[root@683148a82b0f /

http://www.dtcms.com/a/108586.html

相关文章:

  • 深入解析 Git Submodule:从基础到高级操作指南
  • 电子电气架构 --- 控制器级架构
  • 基于HTML5的拖拽排序功能实现详解
  • Dify接口api对接,流式接收流式返回(.net)
  • Java迭代器【设计模式之迭代器模式】
  • C++ 中的类型处理与类型别名(二十六)
  • 车辆选择解决方案
  • 5.模型训练-毕设篇3
  • 字节跳动 UI-TARS 汇总整理报告
  • 核桃派2B:opencv python的 Canny findContours得到两个非常接近的轮廓,角点有几个像素的差距,如何处理?
  • 使用 Flutter 制作地图应用
  • 封装一套通用echats
  • 电子电气架构 --- 域控制器和EE架构关系
  • 时间字段前端VO接收用String,后端用Date
  • 防火墙和端口开关
  • Kafka和RocketMQ零拷贝对比
  • ABeam 德硕 | 中国汽车市场(2)——新能源车的崛起与中国汽车市场机遇与挑战
  • nuxt3 部署到服务器配置
  • 关于 数据库表关联查询(JOIN) 和 子查询(Subquery) 的详细对比,包括定义、语法、优缺点、使用场景及示例代码,并以表格总结关键差异
  • gitblit服务启动报错Cannot assign requested address: bind
  • Spring Boot3使用Spring AI通过Ollama集成deepseek
  • 从技术视角看海外服务器免备案机制——以AWS云为例
  • C#:DispatcherTimer计时器
  • WHAT - 从后端开发的 trace 追踪认识请求的完整流转过程
  • 洛谷 P1032 [NOIP 2002 提高组] 字串变换
  • 第一期:Spring Web MVC 入门 [特殊字符](基础概念 + 环境搭建)
  • 解锁医疗行业软件 UI 设计密码,打造高效就医体验
  • Linux NUC小主机化身视频会议服务器: 技术优势与部署实战
  • 少儿编程 中国电子学会软件编程C语言/C++等级考试二级历年真题答案解析【持续更新 已更新21题】
  • android设备出厂前 按键测试 快速实现-屏蔽Home,Power等键