开发者社区 > 云原生 > 容器服务 > 正文

docker -v 一映射就无法启动容器要怎么排查?怎么解决呢?

本机环境 window10

Docker Engine

v20.10.8

Dockerfile 文件如下

image.png

流程如下

创建镜像

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 运行后发现输出了一段,不是报错,容器也没有运行

image.png

搜了很久问题都是说加上 –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"] 这个我用上之后还无法运行了........

展开
收起
我是小美女 2021-10-18 13:33:55 884 0
1 条回答
写回答
取消 提交回答
  • 网络规划设计师、敏捷专家、CISP、ITSS服务经理、ACA全科目、ACP4项、ACE、CBP、CDSP、CZTP等。拥有 PRINCE2 Foundation/Practitioner、CCSK、ITIL、ISO27001、PMP等多项国际认证。 专利5+、期刊10+、知识产权师。核心期刊审稿人。

    第一个问题:

    使用 -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
    
    2021-10-18 13:38:55
    赞同 1 展开评论 打赏

国内唯一 Forrester 公共云容器平台领导者象限。

相关电子书

更多
应用 Docker 进行持续交付:用技术改变交付路程 立即下载
从Docker到容器服务 立即下载
构建基因数据应用生态系统—— docker in Bio/informatics 立即下载