sit*_*ith 5 amazon-web-services docker amazon-ecs amazon-efs
启动配置上的用户数据:
#!/bin/bash
echo ECS_CLUSTER=prodcluster >> /etc/ecs/ecs.config
sudo yum install -y nfs-utils
sudo mkdir /home/ec2-user/web_file_uploads
sudo chmod 777 /home/ec2-user/web_file_uploads
sudo mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2 fs-abcdef.efs.ap-southeast-2.amazonaws.com:/ /home/ec2-user/web_file_uploads
Run Code Online (Sandbox Code Playgroud)
任务定义:
{
"networkMode": "bridge",
"containerDefinitions": [
{
"portMappings": [
...
],
"essential": true,
"mountPoints": [
{
"containerPath": "/src/temp_uploads/",
"sourceVolume": "web_file_uploads",
"readOnly": null
}
],
"name": "webapp",
"readonlyRootFilesystem": null,
"image": "911911911.dkr.ecr.ap-southeast-2.amazonaws.com/webapp:release6",
"memoryReservation": 150
}
],
"volumes": [
{
"host": {
"sourcePath": "/home/ec2-user/web_file_uploads"
},
"name": "web_file_uploads"
}
],
"family": "webapp-task"
}
Run Code Online (Sandbox Code Playgroud)
注意:我已将所需的端口添加到安全组。src/temp_uploads 文件夹必须包含在使用此任务定义启动的所有其他容器实例中。
问题:如果我使用 手动挂载它sudo mount ... folder1,将一些文件放在那里并将其挂载到sudo mount ... folder2文件夹 2 中,其中包含显示它正确挂载的更改。
问题是通过任务定义映射的卷没有 map efs。相反,它实际上在里面放置/使用内容/home/ec2-user/web_file_uploads。如何使这个卷实际映射到efs
修改午餐配置以在挂载 EFS 后立即重新启动 docker 服务。那么只有 ECS 才会使用挂载的 EFS 作为卷。否则它将使用原始目录(挂载将被忽略)。
#!/bin/bash
echo ECS_CLUSTER=prodcluster >> /etc/ecs/ecs.config
sudo yum install -y nfs-utils
sudo stop ecs
sudo mkdir /home/ec2-user/web_file_uploads
sudo chmod 777 /home/ec2-user/web_file_uploads
sudo mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2 fs-abcdef.efs.ap-southeast-2.amazonaws.com:/ /home/ec2-user/web_file_uploads
sudo service docker restart
sudo start ecs
Run Code Online (Sandbox Code Playgroud)
注意:由于 ECS Agent 在 docker 内部运行,因此重启 docker 服务后,ECS 服务将停止。之后您需要启动ECS服务。
| 归档时间: |
|
| 查看次数: |
4469 次 |
| 最近记录: |