当前位置: 首页 > 面试题库 >

Docker:使用Docker Toolbox在Windows上共享卷

有翰海
2023-03-14
问题内容

我正在尝试通过Windows 7计算机上的Docker容器设置开发人员环境。

我已经为Windows安装了Docker工具箱。

我有一个包含Apache和PHP 5.6的映像,这里是:

FROM php:5.6.15-apache

RUN apt-get update && apt-get install -y \
apt-utils vim git php5-mysql php5-memcache php5-memcached php5-intl \
wget
RUN apt-get install libapache2-mod-php5 -y -o Dpkg::Options::="--force-confdef"
RUN docker-php-ext-install mbstring
RUN docker-php-ext-install pdo pdo_mysql
RUN apt-get install libcurl4-gnutls-dev -y
RUN docker-php-ext-install curl
RUN a2enmod rewrite

ENV APACHE_RUN_USER myname
ENV APACHE_RUN_GROUP www-data
ENV APACHE_LOG_DIR /var/log/apache2
ENV APACHE_LOCK_DIR /var/lock/apache2
ENV APACHE_PID_FILE /var/run/apache2.pid

EXPOSE 80

COPY php.ini /usr/local/etc/php/php.ini
COPY apache-config.conf /etc/apache2/sites-enabled/000-default.conf
RUN echo "ServerName 127.0.1.1" >> /etc/apache2/apache2.conf

该映像已创建,当我在Docker快速入门终端中运行“ docker映像”时可以看到它。

在我的apache-config.conf中,我只有一个小的虚拟主机,仅使用index.php文件即可访问测试网站。

然后,我尝试在Docker快速入门终端中创建容器:

docker run --name=php5.6_container --rm -v "//c/sites:/var/www/html" -p 80:80 -p 8080:8080 php5.6

我收到以下错误:

AH00112: Warning: DocumentRoot [/var/www/html/test] does not exist
AH00112: Warning: DocumentRoot [/var/www/html/test] does not exist
[Tue Dec 08 16:36:37.703143 2015] [mpm_prefork:notice] [pid 1] AH00163: Apache/2.4.10 (Debian) configured -- resuming normal operations
[Tue Dec 08 16:36:37.703733 2015] [core:notice] [pid 1] AH00094: Command line: '
apache2 -D FOREGROUND'

似乎没有考虑我的音量选项。并且未创建容器。

我可能做错了什么?


问题答案:

请参阅https://docs.docker.com/engine/userguide/dockervolumes/#mount-a-host-
directory-as-a-data-
volume上

适用于Windows和Mac的说明。尤其:

如果在Mac或Windows上使用Docker Machine,则Docker守护程序仅具有对OS X或Windows文件系统的访问权限。Docker
Machine尝试自动共享您的/ Users(OS X)或C:\ Users(Windows)目录。

基本上,您需要将站点文件移动到某个位置c:\Users\sites,然后使用文档中建议的方式进行挂载:

docker run --name=php5.6_container --rm -v "/c/Users/sites:/var/www/html" -p 80:80 -p 8080:8080 php5.6


 类似资料:
  • 我已经为Windows安装了Docker工具箱。 我有一个包含Apache和PHP5.6的图像,下面是: 创建了这个映像,我可以在Docker quickstart终端中运行“Docker映像”时看到它。

  • Windows版本和内部版本2004(操作系统内部版本19037.1) windows上安装的docker 运行诸如,,,等命令都可以正常工作。现在我想推一个图像,所以当然我必须先登录。 我在WSL终端中运行

  • 问题内容: 我在生成允许分别使用gcc和MinGW在Linux和Windows中构建共享库的构建设置时遇到了麻烦。在Linux中,共享库不必在编译时就解决所有依赖关系。相反,在Windows中似乎是这种情况。这是问题设置: 现在,在Linux中,它可以编译并正常运行: 在Windows中,我们需要更改为dll,这是次要的事情: 但是,当我们尝试构建时,会出现以下错误: 现在,我们可以通过简单地将f

  • 问题内容: 使用docker客户端,有一种方法可以与docker容器共享Windows中的文件夹,而无需先通过Virtual Box VM共享文件夹。 明白具有从双斜杠的需要这个和这个 从Windows的Docker客户端运行以下命令 但是当在/ development / windev上执行ls时,结果发现它是空的。 当我尝试通过以下命令挂载c / Users / username文件夹时,我没

  • 问题内容: 嗨,我正在使用Docker部署一些服务,在这里我想在不同的Docker容器之间共享Docker卷。 假设我有一个Docker容器A在/ data挂载了一个卷。这是A的Dockerfile 据我了解,这会将一个卷附加到容器,但不会将主机目录装载到该容器。因此,该卷内的数据仍位于容器A内。 我有另一个提供ftp服务的容器B。它访问卷/ public下的数据。B的Dockerfile是 现在

  • 我正在使用Docker部署一些服务,我想在不同的容器之间共享Docker卷。 假设我有一个Docker容器a,它在/data处挂载了一个卷。下面是它的DockerFile: 根据我的理解,这会将卷附加到容器,但不会将主机目录挂载到容器。所以这个卷里面的数据仍然在容器A里面。