Docker运行Coder时 code-server is unable to watch for file changes in this large workspace 的解决方案

CoderVisual Studio Code的Web版本。
通过把Coder部署在服务器上,你就可以随时随地的用浏览器编程序了。
用Docker部署Coder出奇的简单,我就不赘述了。
本文要讲的是Docker Coder成功部署,并且登录IDE以后,会出现code-server is unable to watch for file changes in this large workspace的提示。
那么如何在docker环境下,我们如何增加这个max_user_watches的数值。

问题背景

使用Docker安装Web版本VScode,既Coder,的时候。如果按照官方的安装命令:

1
# docker run -it -p 127.0.0.1:8443:8443 -v "${PWD}:/home/coder/project" codercom/code-server --allow-http --no-auth

程序运行以后IDE会提示错误信息:

1
code-server is unable to watch for file changes in this large workspace. Please follow the instructions link to resolve this issue.

按照官方解决方案,
需要修改 /etc/sysctl.conf ,在里面添加:

1
fs.inotify.max_user_watches=524288

但是,如果Coder是通过Docker运行的,在运行 sudo sysctl -p 会显示错误信息:

1
sysctl: setting key "fs.inotify.max_user_watches": Read-only file system

本文说明如何解决这个问题。

参考资料

资料1
资料2
资料3

解决方法1

在启动Docker的时候添加 –privileged 参数:

1
# docker run -it --privileged -p 127.0.0.1:8443:8443 -v "${PWD}:/home/coder/project" codercom/code-server --allow-http --no-auth

解决方法2

如果是已经运行的Docker容器,先导出其镜像,再重新加载并添加 –privileged 参数:

1
2
# docker commit coder mycoder
# docker run -it --privileged -p 127.0.0.1:8443:8443 -v "${PWD}:/home/coder/project" mycoder --allow-http --no-auth

最后

之后按照官方文档要求:

1
2
3
4
5
6
7
8
9
Run this in terminal:
# sudo vim /etc/sysctl.conf
Scroll to the bottom and paste:
fs.inotify.max_user_watches=524288
Save and clode the editor, then run this:
# sudo sysctl -p
To check your success:
# cat /proc/sys/fs/inotify/max_user_watches
This should return 524288

完成