我正在尝试Dockerize我的Rails应用程序。
目前我有两个容器:
“数据容器”。 在这个容器中是Rails应用程序代码和所有必需的gem。 “数据容器”暴露了Rails应用程序的根目录和gem目录
“Web服务器容器”。 在这个容器里运行Nginx + Passenger。 “Web服务器容器”绑定到“数据容器”卷。
一切正常。
但是我需要将所有日志和用户上传的图像(存储在Rails应用程序根目录“public / images”目录下)备份在主机目录中。 我知道我可以启动连接到“数据容器”的新容器,并对主机目录做一些备份。 但是这种方法并不是我想要实现的。 我希望所有的日志和图像都是直接的,并且一直写在主机目录上。
我尝试将主机目录挂载到“数据容器”目录中,我想将这些数据存储在主机上,但是这种方法不起作用。
docker run --name application -v $HOME/cabin/data/log:/opt/application/log -v $HOME/cabin/data/images:/opt/application/public/images foo/application docker inspect application "Volumes": { "/opt/application": "/var/lib/docker/vfs/dir/0c2a96af0e13d2b1c451610dc7bd561cffd246564e1966cb55628d329b4ee62b", "/opt/application/log": "/home/vagrant/cabin/data/log", "/opt/application/public/images": "/home/vagrant/cabin/data/images", "/webapp_gems": "/var/lib/docker/vfs/dir/b2a08475272e1a04eae121094c0369a38c22dd92ca76fc2c2418eeabea31e266", "/webapp_lib64": "/var/lib/docker/vfs/dir/44df839567e15c471e3ccd33a28778d7f67496c32f6110703d4d5e15677e00f6" }, "VolumesRW": { "/opt/application": true, "/opt/application/log": true, "/opt/application/public/images": true, "/webapp_gems": true, "/webapp_lib64": true }
docker run -d -p 9101:9101 --name server -v $HOME/cabin/data/log:/var/log/nginx -v $HOME/cabin/data/run:/var/run/nginx -v $HOME/cabin/configuration/nginx:/etc/nginx --volumes-from application foo/server nginx -c /etc/nginx/demo.conf docker inspect server "Volumes": { "/etc/nginx": "/home/vagrant/cabin/configuration/nginx", "/opt/application": "/var/lib/docker/vfs/dir/0c2a96af0e13d2b1c451610dc7bd561cffd246564e1966cb55628d329b4ee62b", "/opt/application/log": "/home/vagrant/cabin/data/log", "/opt/application/public/images": "/home/vagrant/cabin/data/images", "/var/log/nginx": "/home/vagrant/cabin/data/log", "/var/run/nginx": "/home/vagrant/cabin/data/run", "/webapp_gems": "/var/lib/docker/vfs/dir/b2a08475272e1a04eae121094c0369a38c22dd92ca76fc2c2418eeabea31e266", "/webapp_lib64": "/var/lib/docker/vfs/dir/44df839567e15c471e3ccd33a28778d7f67496c32f6110703d4d5e15677e00f6" }, "VolumesRW": { "/etc/nginx": true, "/opt/application": true, "/opt/application/log": true, "/opt/application/public/images": true, "/var/log/nginx": true, "/var/run/nginx": true, "/webapp_gems": true, "/webapp_lib64": true }
通过在/ home / vagrant / cabin / data / log中运行应用程序,并且/ home / vagrant / cabin / data / images不会从应用程序容器中写入任何数据
docker info Containers: 2 Images: 92 Storage Driver: devicemapper Pool Name: docker-8:1-524459-pool Pool Blocksize: 64 Kb Data file: /var/lib/docker/devicemapper/devicemapper/data Metadata file: /var/lib/docker/devicemapper/devicemapper/metadata Data Space Used: 7605.2 Mb Data Space Total: 102400.0 Mb Metadata Space Used: 8.3 Mb Metadata Space Total: 2048.0 Mb Execution Driver: native-0.2 Kernel Version: 2.6.32-431.3.1.el6.x86_64 Operating System: <unknown>
。
docker version Client version: 1.2.0 Client API version: 1.14 Go version (client): go1.3.1 Git commit (client): fa7b24f OS/Arch (client): linux/amd64 Server version: 1.2.0 Server API version: 1.14 Go version (server): go1.3.1 Git commit (server): fa7b24f
。
uname -a Linux vagrant-centos65.vagrantup.com 2.6.32-431.3.1.el6.x86_64 #1 SMP Fri Jan 3 21:39:27 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
。
cat /etc/redhat-release CentOS release 6.5 (Final)
感谢您的任何build议