【问题标题】:Digital Ocean: How to docker compose build in a volume数字海洋:如何 docker compose build in a volume
【发布时间】:2019-03-20 15:44:11
【问题描述】:

我已经为我在数字海洋中的水滴购买了体积,当我购买 docker compose build 时,它占用了我当前设置的空间,我无法构建我的图像。

我的当前设置已开启

`/dev/vda1       25227048 25191932     18732 100% /`

完整的 Ubunto 是:

udev             2013884        0   2013884   0% /dev
tmpfs             404632     5672    398960   2% /run
/dev/vda1       25227048 25191932     18732 100% /
tmpfs            2023160        0   2023160   0% /dev/shm
tmpfs               5120        0      5120   0% /run/lock
tmpfs            2023160        0   2023160   0% /sys/fs/cgroup
/dev/vda15        106858     3437    103421   4% /boot/efi
tmpfs             404632        0    404632   0% /run/user/0
/dev/sda       103081248    93980  97728004   1% /mnt/volume_lon1_01

如何构建以使其在我的新卷上构建?

`/dev/sda       103081248    93980  97728004   1% /mnt/volume_lon1_01`

现在出错了:

 Version:       18.03.0-ce
 API version:   1.37
 Go version:    go1.9.4
 Git commit:    0520e24
 Built: Wed Mar 21 23:10:01 2018
 OS/Arch:       linux/amd64
 Experimental:  false
 Orchestrator:  swarm
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

【问题讨论】:

  • 您应该通过命令 docker prune image 删除未使用的图像和实例,以释放磁盘空间。然后决定是否需要添加更多卷。 docs.docker.com/config/pruning

标签: docker server docker-compose digital-ocean


【解决方案1】:

如果您只想将新磁盘用于 docker,则需要将其挂载到 docker 基目录:/var/lib/docker

但在此之前,您需要:

  • 完全停止 docker 守护进程sudo systemctl docker stop
  • 将当前目录中的所有内容同步到新磁盘:sudo rsync -aqxP /var/lib/docker/ /mnt/volume_lon1_01
  • 删除旧内容:sudo rm -rf /var/lib/docker/*
  • 将新卷挂载到正确的位置:sudo mount /dev/sda /var/lib/docker
  • 启动docker守护进程sudo systemctl start docker
  • 检查一切是否正常 - 您可以检查您的卷是否仍然列出docker volume ls,或一些本地映像docker images ls,或者您是否可以启动一个新容器docker run -ti alpine
  • 将新的挂载定义添加到/etc/fstab*

您也可以将 docker 的默认目录更改为使用/mnt/volume_lon1_01

如果你想要第二个选项,我建议你阅读https://linuxconfig.org/how-to-move-docker-s-default-var-lib-docker-to-another-directory-on-ubuntu-debian-linux

*修改fstab,如果你不熟悉,你需要一些信息:分区使用的文件系统是什么,它的路径以及你想挂载它的位置 之后,编辑文件/etc/fstab 并检查分区路径是否已经存在一行(/dev/sda 为你)。如果不是,添加一个新行,如果是,只需编辑它以将挂载路径更改为新行。

如何找到已挂载的分区文件系统:mount 这将返回一个 line par 分区,您需要检查分区的类型。

例如:rootfs on / type lxfs (rw,noatime),分区类型为lxfs

如果你需要添加一个新行,它会是这样的:

/dev/sda /var/lib/docker <fs type> defaults 0 0

【讨论】:

  • 太棒了。如果任何知识较少的人都可以运行命令,那么每个步骤都有命令行会很棒。比如如何停止 docker daemon 等。
  • 我一开始没有做,因为很多命令取决于系统,比如在ubuntu上它不会和在CentOS上的一样,等等。你使用的操作系统是什么?我可以为你添加它们:)
  • 我在 Ubunto 上,我按照步骤做第二个选项,但看起来文档中有错误:(
  • 看起来像 systemctl start docker return empty。你需要做 sudo dockerd
  • 没错,我的大部分命令都需要以sudo为前缀,让我更新一下。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-02
  • 2015-03-14
相关资源
最近更新 更多