我对Docker有疑问。这个容器的概念对我来说是全新的,我相信我还没有掌握工作原理(容器,Dockerfiles ......)以及它们如何工作。
让我们说,我想在同一个虚拟机上托管小型网站,包括Apache,PHP-FPM,MySQL和可能的Memcache。
这就是我的想法:
1)一个包含Apache,PHP,MySQL和Memcache的图像 2)包含我的网站文件的一个或多个图像
我必须找到一种方法来告诉我的第一张图片,在apache中,存储托管网站的网站文件夹。但是,我不知道第一个容器是否可以读取另一个容器内的文件。
这里有人做过类似的事吗?
谢谢
答案 0 :(得分:4)
您的容器设置应为:
运行MySQL并使用-p命令公开其端口:
docker run -d --name mysql -p 3306:3306 dockerfile/mysql
运行Memcached
docker run -d --name memcached -p 11211:11211 borja/docker-memcached
运行Web容器并将Web文件从主机文件系统挂载到容器中。它们将在容器内的/container_fs/web_files/
处提供。链接到其他容器,以便能够通过tcp与它们通信。
docker run -d --name web -p 80:80 \
-v /host_fs/web_files:/container_fs/web_files/ \
--link mysql:mysql \
--link memcached:memcached \
your/docker-web-container
在您的网络容器内
查找环境变量MYSQL_PORT_3306_TCP_ADDR
和MYSQL_PORT_3306_TCP_PORT
以告诉您在何处连接到mysql实例,同样地MEMCACHED_PORT_11211_TCP_ADDR
和MEMCACHED_PORT_11211_TCP_PORT
告诉您连接到memcacheed的位置。
答案 1 :(得分:1)
使用Docker的惯用方法是尝试每个容器保持一个进程。因此,Apache和MySQL等应该在不同的容器中。
然后,您可以创建一个数据容器来保存您的网站文件,并使用--volumes-from
简单地将卷装入Webserver容器中。有关更多信息,请参阅https://docs.docker.com/userguide/dockervolumes/,特别是“创建和装载数据卷容器”。