如何在 docker 容器内部运行 docker命令

背景

有些场景在容器内部需要调用 docker 命令。为此,本文梳理2种可以在容器内部执行docker命令的方法。

方法1:基于 docker.sock

/var/run/docker.sock是默认的Unix socket(套接字),socket是同一机器中进程间通讯的一种方式。Docker daemon 默认监听docker.sock。比如可以使用下述命令获取 docker engine 的版本信息,以下在宿主机上执行:

在这里插入图片描述

那么如何在 docker 内运行 docker呢?只需要将宿主机的 docker 命令和 套接子映射到容器内部即可。

docker run --privileged --name='test_triton_jason' -v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker -itd your-images bash 

进入到容器内部可以正常运行docker命令:

在这里插入图片描述

方法2:使用 dind

该方法其实是在container内部创建一个子 container,除非真的是需要在container内部构建containers 和 images,否则一般建议使用方法1。
创建一个名为dind-test的容器:

docker run --privileged -d --name dind-test docker:dind 

进入容器:

docker exec -it dind-test /bin/sh 

在子容器内运行:

docker run --privileged --name='test_triton_jason_v3' --net=host --ipc=host -v /data/home/:/home -w /home -itd -image bash 

在这里插入图片描述

可以看出,此时在容器内部可以执行 docker命令。

原文链接:https://blog.csdn.net/m0_67402125/article/details/126565719?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522171836987416800182186383%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=171836987416800182186383&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~times_rank-28-126565719-null-null.nonecase&utm_term=%E7%BB%BF%E8%81%94NAS

© 版权声明
THE END
喜欢就支持一下吧
点赞9 分享