我正在嘗試使用ECS + EFS(MySQL用於個人站點)執行POC,但文件更改爲docker中已安裝的卷不會使他們去EFS的途徑。ECS + EFS-文件永遠不會出現在容器中
我把它裝在容器主機上:
us-east-1a.fs-#####.efs.us-east-1.amazonaws.com:/ on /mnt/mysql-data-docker type nfs4 (rw,relatime,vers=4.0,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=10.0.0.128,local_lock=none,addr=10.0.0.90)
我的任務定義(相關部分)顯示:
"mountPoints": [
{
"containerPath": "/var/lib/mysql",
"sourceVolume": "mysql-data",
"readOnly": null
}
]
和
"volumes": [
{
"host": {
"sourcePath": "/mnt/mysql-data-docker"
},
"name": "mysql-data"
}
],
我可以寫一個文件在那裏,終止主機,讓新的主機通過sc出現並且該文件仍然存在,所以我知道這是行得通的(而且EFS在FS上顯示12kb而不是6kb)。
縱觀運行MySQL容器:
[[email protected] ~]$ docker inspect e96a7 | jq '.[0].Mounts'
[
{
"Source": "/mnt/mysql-data-docker",
"Destination": "/var/lib/mysql",
"Mode": "",
"RW": true,
"Propagation": "rprivate"
}
]
/mnt/mysql-data-docker
主機上只顯示我的測試文件,我驗證。在容器中,/var/lib/mysql
中有一堆東西,但它永遠不會進入主機或EFS。
這不是真的,docker在用戶數據運行之前啓動。我之前的腳本也通過userdata失敗。我發佈的後續答案是確認正在工作 –
這個「魔法」就是用#cloud-boothook。你可以在這裏閱讀更多http://docs.aws.amazon.com/AmazonECS/latest/developerguide/bootstrap_container_instance.html和這裏:https://cloudinit.readthedocs.io/en/latest/topics/format.html –