西安网站建设 盈科,徐州做网站的公司有几家,wordpress如何卸载插件,如何做网络免费推广方案场景#xff1a;
有些场景在容器内部需要调用 docker 命令。为此#xff0c;本文梳理2种可以在容器内部执行docker命令的方法。
方法1#xff1a;基于 docker.sock
/var/run/docker.sock是默认的Unix socket(套接字)#xff0c;socket是同一机器中进程间通讯的一种方式。…场景
有些场景在容器内部需要调用 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 --nametest_triton_jason -v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker -itd your-images bash
进入到容器内部可以正常运行docker命令就可以正常使用了。
实例我想在code-server中可以执行docker宿主机的命令我的安装如下
docker run -it --name code-server -p 8080:8080 \-v /var/run/docker.sock:/var/run/docker.sock \-v /usr/bin/docker:/usr/bin/docker \-v /home/docker/code-server/.config:/root/.config \-v /home/docker/code-server/.local:/root/.local \-v /home/docker:/home/docker \-u $(id -u):$(id -g) \-e DOCKER_USER$USER \
codercom/code-server:latest
方法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 --nametest_triton_jason_v3 --nethost --ipchost -v /data/home/:/home -w /home -itd -image bash
可以看出此时在容器内部可以执行 docker命令。