[英]How do I use EBS volume with ECS container
我創建了一個EBS卷,將其附加並安裝到我的Container實例中。 在任務定義卷中,我使用已安裝的目錄設置卷Source Path。 容器數據不是在掛載的目錄中創建的,掛載的EBS之外的所有其他目錄都可以正常工作。
目的是將數據保存在容器外,並用另一個卷備份它。
有沒有辦法在我的容器中使用這個附加的卷? 或者是使用卷和備份的更好方法。
編輯 :它是使用隨機的docker圖像測試運行它指定音量,我遇到了同樣的問題。 我設法讓它重新啟動Docker服務,但我仍然在尋找一個沒有重啟Docker的解決方案。
使用作為已裝入的EBS的卷目錄檢查容器
"HostConfig": {
"Binds": [
"/mnt/data:/data"
],
...
"Mounts": [
{
"Source": "/mnt/data",
"Destination": "/data",
"Mode": "",
"RW": true,
"Propagation": "rprivate"
}
],
目錄顯示:
$ ls /mnt/data/
lost+found
使用不是已安裝的EBS的卷目錄檢查容器
"HostConfig": {
"Binds": [
"/home/ec2-user/data:/data"
],
...
"Mounts": [
{
"Source": "/home/ec2-user/data",
"Destination": "/data",
"Mode": "",
"RW": true,
"Propagation": "rprivate"
}
]
目錄顯示:
$ ls /home/ec2-user/data
databases dbms
聽起來您可能想要做的就是使用AWS EC2 啟動配置 。 使用啟動配置,您可以指定在啟動時創建並附加到您的實例的EBS卷。 這在Docker代理和后續任務啟動之前發生。
作為啟動配置的一部分,您還需要使用以下內容更新“ 配置詳細信息”下的“ 用戶”數據 :
mkdir /data;
mkfs -t ext4 /dev/xvdb;
mount /dev/xvdb /data;
echo '/dev/xvdb /data ext4 defaults,nofail 0 2' >> /etc/fstab;
然后,只要您的容器設置為訪問主機上的/data
,一切都將正常工作。
額外獎勵:如果您正在使用ECS群集,我認為您已經在使用啟動配置來將您的實例加入群集。 如果沒有,您也可以使用以下內容自動添加新實例:
#!/bin/bash
docker pull amazon/amazon-ecs-agent
docker run --name ecs-agent --detach=true --restart=on-failure:10 --volume=/var/run/docker.sock:/var/run/docker.sock --volume=/var/log/ecs/:/log --volume=/var/lib/ecs/data:/data --volume=/sys/fs/cgroup:/sys/fs/cgroup:ro --volume=/var/run/docker/execdriver/native:/var/lib/docker/execdriver/native:ro --publish=127.0.0.1:51678:51678 --env=ECS_LOGFILE=/log/ecs-agent.log --env=ECS_AVAILABLE_LOGGING_DRIVERS=[\"json-file\",\"syslog\",\"gelf\"] --env=ECS_LOGLEVEL=info --env=ECS_DATADIR=/data --env=ECS_CLUSTER=your-cluster-here amazon/amazon-ecs-agent:latest
特別是在那一位,你需要編輯這個部分: - --env=ECS_CLUSTER=your-cluster-here
希望這可以幫助。
關於在任務中使用數據卷的當前文檔似乎解決了這個問題:
在發布Amazon ECS優化的AMI版本2017.03.a之前,只有Docker守護程序啟動時可用的文件系統才可用於Docker容器。 您可以使用最新的Amazon ECS優化AMI來避免此限制,或者您可以將docker軟件包升級到最新版本並重新啟動Docker。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.