在 Docker 容器中安装 Visual Studio Code 是否会比 snap 或 Flatpack 提供更好的隔离效果?
答案1
Code_OSS 应用图像
与其他应用程序不同,AppImage 无需安装即可使用,但需要标记为可执行文件才能运行。这是 Linux 的安全功能。
Visual Studio Code OSS 版本:
下载Code_OSS 应用图像并使用文件管理器或在终端中输入以下命令使其可执行:
chmod +x ./*.AppImage
然后双击文件管理器中的AppImage将其打开。
沙盒代码_OSS:
如果您想限制 Code_OSS 在您的系统上可以执行的操作,您可以在 Firejail 等沙盒中运行 AppImage。这完全是可选的,目前需要由用户配置。
答案2
作为普鲁莫已经声明该 docker 不是为此而设计的。如果你担心在沙箱,snaps 和 AppImages 会是更好的选择。
但是如果您仍然有兴趣在 Docker 容器内运行 Visual Studio Code,您可以按照以下步骤操作:
准备 Docker 容器
在一个空文件夹内创建一个新的 Dockerfile,例如“myimage”,并添加
FROM ubuntu:20.04
RUN apt update
RUN apt install -y gpg sudo
RUN echo "deb [arch=amd64] http://packages.microsoft.com/repos/vscode stable main" >> /etc/apt/sources.list.d/vscode.list
RUN apt-key adv --keyserver keyserver.ubuntu.com --recv-keys EB3E94ADBE1229CF
RUN apt update
RUN apt install --no-install-recommends -y code
RUN apt install --no-install-recommends -y libx11-xcb1
RUN apt install --no-install-recommends -y libxtst6
RUN apt install --no-install-recommends -y libasound2
CMD /usr/share/code/code --no-sandbox --unity-launch
构建容器:
sudo docker build -t myimage .
运行 Visual Studio Code:
使用以下方式运行容器:
sudo docker run --rm -ti --net=host -e DISPLAY=:0 myimage
如果你得到
(code:1): Gtk-WARNING **: cannot open display: :0
跑步
xhost +SI:localuser:root
重试运行容器。
创建桌面条目(又称快捷方式)
由于 docker 需要sudo
权限才能运行,因此您可以使用pkexec
在桌面条目内。要创建快捷方式,请运行
nano ~/.local/share/applications/vscode-docker.desktop
并添加这些内容
[Desktop Entry]
Version=1.0
Name=VSCode Docker
Icon=code
Exec=bash -c 'pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY /usr/bin/docker run --rm -t --net=host -e DISPLAY=:0 myimage'
Type=Application
Terminal=false
笔记:由于桌面入口使用pkexec
,docker需要以非交互方式运行,即无i
选项运行。