有时候还是需要在容器内部再启动新的容器,所以需要这个容器本身可以调用宿主机的docker命令。主要参考这篇文章,说的比较简单。
原理很简单,把宿主机的docker程序给容器挂载,并赋给容器权限。
使用前台状态启动一个容器
┌─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
如果希望容器持久运行并可以开机自动重启,可以使用这个命令。
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 镜像名称