说明
有时候还是需要在容器内部再启动新的容器,所以需要这个容器本身可以调用宿主机的docker命令。主要参考这篇文章,说的比较简单。
内容
原理很简单,把宿主机的docker程序给容器挂载,并赋给容器权限。
1 测试
使用前台状态启动一个容器
┌─root@andy-m4:/opt/prj21/jupyter_server/data
└─ $ docker run -it \
> -u root \
> -v /usr/bin/docker:/usr/bin/docker \
> -v /var/run/docker.sock:/var/run/docker.sock \
> -v /usr/lib64/libltdl.so.7:/usr/lib/x86_64-linux-gnu/libltdl.so.7 622d529d0fe7
# 可以看到在容器里也可以成功调用docker命令
┌─root@ad56b6796c16:/
└─ $ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ad56b6796c16 622d529d0fe7 "bash" 3 seconds ago Up 3 seconds 5555/tcp wonderful_brahmagupta
d3762c9a6ae8 10e8fc9ebf35 "jupyter notebook" 9 minutes ago Up 9 minutes 0.0.0.0:8888->8888/tcp m4_pytorch_jupyter_v4
2 服务态
如果希望容器持久运行并可以开机自动重启,可以使用这个命令。
docker run -it -d \
--restart=always -u root \
-v /usr/bin/docker:/usr/bin/docker \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /usr/lib64/libltdl.so.7:/usr/lib/x86_64-linux-gnu/libltdl.so.7 镜像名称