所以这就是我要做的:我需要使用 docker 自动设置一些容器。其中之一是这样的: Debian Squeeze 具有有限的 CPU 份额和有限的内存(1 个 cpu 份额和 512 mb 内存),预装了 apache2、build-essential、php5、mysql-server-5.5、openssh-server 并打开了一些端口( Apache 为 8000,MySQL 为 1500)。所以我创建了以下 dockerfile :
FROM debian:squeeze
MAINTAINER Name < email : >
# Update the repository sources list
RUN apt-get update
# Install apache, PHP, and supplimentary programs. curl and lynx-cur are for debugging the container.
RUN DEBIAN_FRONTEND=noninteractive apt-get -y install apache2 build-essential php5 mysql-server openssh-server libapache2-mod-php5 php5-mysql php5-gd php-pear php-apc php5-curl curl lynx-cur
# Enable apache mods.
RUN a2enmod php5
RUN a2enmod rewrite
# Manually set up the apache environment variables
ENV APACHE_RUN_USER www-data
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 site into place.
ADD www /var/www/site
# Update the default apache site with the config we created.
ADD apache-config.conf /etc/apache2/sites-enabled/000-default.conf
# By default, simply start apache.
CMD /usr/sbin/apache2ctl -D FOREGROUND
#CMD [ "mysqladmin -u root password mysecretpasswordgoeshere"]
EXPOSE 3306
apache-config.conf 的内容是这样的:
<VirtualHost *:80>
ServerAdmin me@mydomain.com
DocumentRoot /var/www/site
<Directory /var/www/site/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order deny,allow
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
在 www 文件夹中,我使用以下代码放置了一个 php 文件:
<?php
$connect=mysql_connect("localhost:1500","root","") or die("Unable to Connect");
?>
测试与 mysql 服务器的连接
然后
我将所有这些构建成这样的图像:
sudo docker build --rm --tag="tag_name" .
然后我像这样运行图像
sudo docker run -c=1 -m="512m" --net=bridge -p 8000:80 -p 1500:3306 -d --name="container_name" tag_name
它似乎可以工作,当我在浏览器中访问 localhost:8000/site 时,apache 服务器可以工作,但显示“无法连接”。我究竟做错了什么?另一个问题是,contaienr 正在运行,但我无法附加到它。我运行这个命令
sudo docker attach CONTAINER_ID
然后什么也没有发生,不能从那里做任何其他事情,我做错了什么?
我必须再构建几个与此类似的 dockerfile 来创建容器。所有这些都必须托管在 ZFS 文件系统上,我必须基于它配置一个 50gb 的容器存储库,这是什么意思,我该怎么做?
对不起我的英语,这不是我的母语:(提前谢谢你