本机环境 window10
Docker Engine
v20.10.8
Dockerfile 文件如下
流程如下
创建镜像
docker image build -t hello-php-demo:0.0.1 .
直接运行镜像不挂载【正常】
docker run -it --rm -p 80:80 hello-php-demo:0.0.1 /bin/bash
将docker的 /var/www/html 挂载到当前目录
docker run -it --rm -p 80:80 hello-php-demo:0.0.1 -v "$PWD/":/var/www/html /bin/bash
我就是多加了 -v "$PWD/":/var/www/html 运行后发现输出了一段,不是报错,容器也没有运行
搜了很久问题都是说加上 –privileged=true 参数,实际测试并不行
查看容器启动失败原因(看不出来原因啊....)
Server version: Apache/2.4.48 (Debian)
Server built: 2021-08-12T11:51:47
疑问1:如何挂载才能成功啊
疑问2:事实上这样运行这个容器的话里面的apache还需要手动启动的,怎么让他自动运行呢 CMD
["/usr/sbin/apache2ctl","-D","FOREGROUND"] 这个我用上之后还无法运行了........
第一个问题:
使用 -v 参数挂载是没问题的,出现你截图的上的问题是因为-v加错位置了。
docker run -it --rm -p 80:80 hello-php-demo:0.0.1 -v "$PWD/":/var/www/html /bin/bash
应该这样执行:
docker run -it --rm -p 80:80 -v "$PWD/":/var/www/html hello-php-demo:0.0.1 /bin/bash
docker run 要把参数放在镜像名字前面,你放在后面相当于把-v参数传给 apache2ctl了。你可以试试在容器里执行 apache2ctl -v ,就能复现那个"错误"的输出了。
第二个问题: 把 /bin/bash 去掉,直接这样运行:
docker run -d -p 80:80 -v "$PWD/":/var/www/html hello-php-demo:0.0.1
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。