docker
docker完整配置nginx+php+mysql - 冒雨ing - 博客园 (cnblogs.com)
Docker秒搭建Php7开发环境 - 简书 (jianshu.com)
Docker 安装 PHP | 菜鸟教程 (runoob.com)
5 Dockerfile指令详解 && CMD 指令 - tengq - 博客园 (cnblogs.com)
Docker 不是虚拟机,容器就是进程。既然是进程,那么在启动容器的时候,需要指定所运行的程序及参数。
CMD 指令就是用于指定默认的容器主进程的启动命令的。
shell 格式: CMD <命令> exec 格式: CMD ["可执行文件", "参数1", "参数2"...]
Docker 不是虚拟机,容器中的应用都应该以前台执行,而不是像虚拟机、物理机里面那样,用 upstart/systemd 去启动后台服务,容器内没有后台服务的概念。
所以
前台程序不要后台执行:CMD php-fpm -D ×
后台执行程序,应该提升为前台:CMD ["nginx", "-g", "daemon off;"] √
容器本身是可以转为后台执行的:docker run -d nginx
Dockerfile 中 VOLUME 与 docker -v 的区别说明_docker_脚本之家 (jb51.net)
Dockerfile中 VOLUME 方式挂载到宿主机上的是匿名卷,在宿主机上是自动匿名挂载到 /var/lib/docker/volumes/ 目录下的
docker -v 可以指定挂载到宿主机的具体目录,相对于Dockerfile的 VOLUME 挂载方式更具有可控性