Dim*_*ace 5 amazon-ec2 volumes mongodb docker ubuntu-14.04
在我的Ubuntu EC2主持一个使用docker容器的应用程序.db数据和upload数据存储在卷中,CaseBook-data-db并CaseBook-data-uploads使用以下命令创建:
docker volume create --name=CaseBook-data-db
docker volume create --name=CaseBook-data-uploads
Run Code Online (Sandbox Code Playgroud)
通过docker-compose文件附加的卷:
version: '2'
services:
mongo:
container_name: "CaseBook-db"
restart: always
image: mongo:3.2.7
ports:
- "27017"
volumes:
- data_db:/data/db
labels:
- "ENVIRONMENT_TYPE=meteor"
app:
container_name: "CaseBook-app"
restart: always
image: "meteor/casebook"
build: .
depends_on:
- mongo
environment:
- MONGO_URL=mongodb://mongo:27017/CaseBook
ports:
- "80:3000"
volumes:
- data_uploads:/Meteor-CaseBook-Container/.uploads
labels:
- "ENVIRONMENT_TYPE=meteor"
volumes:
data_db:
external:
name: CaseBook-data-db
data_uploads:
external:
name: CaseBook-data-uploads
Run Code Online (Sandbox Code Playgroud)
我需要将这些docker卷存储/home/ubuntu/data/在主机的不同文件夹(例如)中.如何更改卷的docker存储文件夹?或者有更好的方法来做到这一点?先感谢您.
BMi*_*tch 10
命名卷将存储在docker的文件夹(/ var/lib/docker)中.如果要在特定主机文件夹中创建卷,请使用具有以下语法的主机卷:
docker run -v /home/ubuntu/data/app-data:/app-data my-image
Run Code Online (Sandbox Code Playgroud)
或者从你的撰写文件中:
version: '2'
services:
mongo:
container_name: "CaseBook-db"
restart: always
image: mongo:3.2.7
ports:
- "27017"
volumes:
- /home/ubuntu/data/db:/data/db
labels:
- "ENVIRONMENT_TYPE=meteor"
app:
container_name: "CaseBook-app"
restart: always
image: "meteor/casebook"
build: .
depends_on:
- mongo
environment:
- MONGO_URL=mongodb://mongo:27017/CaseBook
ports:
- "80:3000"
volumes:
- /home/ubuntu/data/uploads:/Meteor-CaseBook-Container/.uploads
labels:
- "ENVIRONMENT_TYPE=meteor"
Run Code Online (Sandbox Code Playgroud)
对于主机卷,映像中卷的任何内容都将与主机文件夹的确切内容重叠,包括主机文件夹的UID.未按空白命名卷的方式从映像初始化空主机文件夹.UID映射往往是使用主机卷最困难的部分.
编辑:从下面的评论中,如果您需要一个充当主机卷的命名卷,则会在docker的插件列表中列出一个本地持久卷插件.安装插件后,您可以创建指向主机文件夹的卷,其功能即使在删除指定卷后,主机目录也会被遗忘.插件的示例用法包括:
docker volume create -d local-persist -o mountpoint=/data/images --name=images
docker run -d -v images:/path/to/images/on/one/ one
docker run -d -v images:/path/to/images/on/two/ two
Run Code Online (Sandbox Code Playgroud)
它们还包含一个v2 compose文件,其中包含以下卷示例:
volumes:
data:
driver: local-persist
driver_opts:
mountpoint: /data/local-persist/data
Run Code Online (Sandbox Code Playgroud)
我在过去一个月中已经意识到的另一个选项是使用本地卷驱动程序的挂载选项来手动创建绑定挂载.这与docker中的主机卷类似,但有以下区别:
要将命名卷创建为绑定装载,可以使用以下命令预先创建它:
docker volume create --driver local \
--opt type=none \
--opt device=/home/user/test \
--opt o=bind \
test_vol
Run Code Online (Sandbox Code Playgroud)
从docker run命令,这可以通过以下方式完成--mount:
docker run -it --rm \
--mount type=volume,dst=/container/path,volume-driver=local,volume-opt=type=none,volume-opt=o=bind,volume-opt=device=/home/user/test \
foo
Run Code Online (Sandbox Code Playgroud)
或者在撰写文件中,您可以使用以下命令创建命名卷:
volumes:
data:
driver: local
driver_opts:
type: none
o: bind
device: /home/user/test
Run Code Online (Sandbox Code Playgroud)
如果您需要命名的卷功能,我的首选是使用本地驱动程序而不是local-persist第三方驱动程序使用命名卷.
使用内置驱动程序local的另一种方法:
docker volume create --opt type=none --opt device=/home/ubuntu/data/ --opt o=bind data_db
Run Code Online (Sandbox Code Playgroud)
(这里使用 DimonVersace 示例:data_db在 docker-compose 中声明为外部命名卷,并将/home/ubuntu/data/声明为主机上的文件夹)
| 归档时间: |
|
| 查看次数: |
5563 次 |
| 最近记录: |