我想使用通过 ECS 在 Docker 中运行的 C# 应用程序中的 I3 快速驱动器。但是我没有通过 System.IO.DriveInfo.GetDrives().Select(d => d.ToString());
在驱动器列表中看到 dev/nvme0n1
:
"/",
"/proc",
"/dev",
"/dev/pts",
"/sys",
"/sys/fs/cgroup",
"/sys/fs/cgroup/blkio",
"/sys/fs/cgroup/cpu",
"/sys/fs/cgroup/cpuacct",
"/sys/fs/cgroup/cpuset",
"/sys/fs/cgroup/devices", -- maybe here?
"/sys/fs/cgroup/freezer",
"/sys/fs/cgroup/hugetlb",
"/sys/fs/cgroup/memory",
"/sys/fs/cgroup/perf_event",
"/dev/mqueue",
"/etc/resolv.conf",
"/etc/hostname",
"/etc/hosts",
"/dev/shm",
"/proc/bus",
"/proc/fs",
"/proc/irq",
"/proc/sys",
"/proc/sysrq-trigger",
"/proc/kcore",
"/proc/latency_stats",
"/proc/timer_list",
"/proc/sched_debug",
"/proc/scsi",
"/sys/firmware"
我读到设备未格式化且未在开始时安装。如何格式化和挂载它们只在实例启动时一次,而不是在我发布新的 docker 镜像时?还是通过代码执行此操作但检查是否已安装并保留现有数据?
找到存储Docker的方案volumes关于实例存储。
来自 this gist将 /var/lib/docker/volumes
替换为指向 dev/nvme0n1
的链接的命令:
#!/bin/sh -e
service docker stop || true
DEV="dev/nvme0n1"
umount $DEV 2>/dev/null || true
mkdir /mnt/docker-volumes 2>/dev/null || rm -rf /mnt/docker-volumes/*
mkfs.ext4 $DEV
rm -rf /var/lib/docker/vfs
rm -rf /var/lib/docker/volumes
mount -t ext4 -o noatime,data=writeback,nobh,barrier=0,commit=300 $DEV /mnt/docker-volumes
mkdir /mnt/docker-volumes/vfs
ln -s /mnt/docker-volumes/vfs /var/lib/docker/vfs
mkdir /mnt/docker-volumes/volumes
ln -s /mnt/docker-volumes/volumes /var/lib/docker/volumes
service docker start
然后 Dockerfile 中的命令 VOLUME my-vol
在主机上的 /mnt/docker-volumes/volumes
目录中创建/使用卷。
此命令必须通过 SSH 在主机上运行一次,然后 AWS ECS 才能正常工作,我只需单击几下就可以从 Visual Studio 发布新应用程序。还没有找到 pass user data 的方法来自 ECS 创建集群向导,看起来现在不支持它。
我是一名优秀的程序员,十分优秀!