概要
此方法实际上在容器内部创建一个子容器。仅当您确实要在容器中包含容器和镜像时才使用此方法。
整体架构
实现步骤
该方法要求容器以特权模式运行。
step1:建立名为stone 以fdle_env 为镜像的容器
docker run -itd -p 9011:22 --name stone --privileged=true fdlc_env /sbin/init
参数说明:
- -i:交互式操作。
- -t: 终端。
- -d: 默认不会进入容器,想要进入容器需要使用指令 docker exec
- /sbin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,并且/sbin一般是指超级用户指令。(system binary)主要放置些系统管理的必备程式例如:cfdisk、dhcpcd、dump、e2fsck、fdisk。因此用的是 /sbin/bash。
step2:使用exec登录到容器。
docker exec -it stone /sbin/sh
小结
这种方式有两个潜在的问题:
第一,能运行Docker的容器需要privileged权限,会有安全风险;
第二,可能会出现文件系统的兼容性问题。