docker安装 VScode
时间: 2024-12-30 12:23:02 浏览: 8
### 如何在 Docker 容器中安装 Visual Studio Code
为了实现在 Docker 容器内运行 Visual Studio Code 的目标,通常不是直接在容器内部安装 VSCode 应用程序本身,而是利用远程连接的方式让本地的 Visual Studio Code 连接到远端正在运行的应用服务所在的容器环境中。具体实现方法如下:
#### 使用官方提供的基础镜像创建自定义镜像
可以基于 `mcr.microsoft.com/vscode/devcontainers/base` 或者其他适合项目需求的基础镜像来构建新的 Dockerfile 文件。
```dockerfile
FROM mcr.microsoft.com/vscode/devcontainers/base:ubuntu-18.04
# 设置工作目录
WORKDIR /workspace
# 安装必要的依赖包以及工具链
RUN apt-get update && \
apt-get install -y --no-install-recommends \
git \
python3-pip \
curl \
vim \
openssh-server \
build-essential \
cmake \
g++ \
make \
ninja-build \
unzip \
zip \
wget \
ca-certificates \
libgtk2.0-0 \
libnotify-dev \
libgconf-2-4 \
libnss3 \
libxss1 \
libasound2 \
locales \
fonts-liberation \
sudo \
iproute2 \
net-tools \
procps \
lsb-release \
less \
jq \
htop \
strace \
dstat \
sysdig \
tcpdump \
gdb \
valgrind \
perf \
linux-tools-common \
linux-tools-generic \
linux-cloud-tools-generic \
software-properties-common \
tzdata \
language-pack-en-base \
manpages \
man-db \
bash-completion \
rsync \
sshpass \
telnet \
ftp \
nmap \
whois \
dnsutils \
iptables \
traceroute \
bind9-host \
iputils-traceroute \
ethtool \
usbutils \
pciutils \
kmod \
lm-sensors \
acpid \
apg \
atop \
axel \
bc \
bmon \
cifs-utils \
colordiff \
cowsay \
curlftpfs \
dialog \
diff-so-fancy \
dirmngr \
dosfstools \
exfat-fuse \
exfat-utils \
fping \
fuse \
gcc \
gettext \
glances \
gnupg-agent \
graphviz \
groff \
hdparm \
httpie \
iotop \
iperf3 \
ipset \
iptstate \
irqbalance \
isc-dhcp-client \
jwhois \
keychain \
ldap-utils \
lrzsz \
lsof \
ltrace \
mailutils \
mc \
moreutils \
mtr-tiny \
multitail \
mycli \
ncdu \
neofetch \
nethogs \
ngrep \
nkf \
nload \
ntfs-3g \
numactl \
p7zip-full \
parted \
pigz \
pv \
reptyr \
ripgrep \
rlwrap \
screenfetch \
shellcheck \
siege \
slurm \
socat \
sqlite3 \
ssldump \
stress-ng \
subversion \
tig \
tmux \
tree \
unrar \
unzip \
uuid-runtime \
vagrant \
virt-manager \
wcalc \
wireshark \
xclip \
xmlstarlet \
xorriso \
zstd \
zlib1g-dev \
zsh \
&& rm -rf /var/lib/apt/lists/*
# 创建非root用户并赋予sudo权限
ARG USERNAME=vscode
ARG USER_UID=1000
ARG USER_GID=$USER_UID
RUN groupadd --gid $USER_GID $USERNAME \
&& useradd -s /bin/bash --uid $USER_UID --gid $USER_GID -m $USERNAME \
&& echo "$USERNAME ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers.d/$USERNAME \
&& chmod 0440 /etc/sudoers.d/$USERNAME
# 可选配置SSH访问
EXPOSE 22/tcp
RUN mkdir /home/${USERNAME}/.ssh; chown ${USERNAME}:${USERNAME} /home/${USERNAME}/.ssh ;chmod 700 /home/${USERNAME}/.ssh
# 开启 SSH 服务以便于通过 Remote-Containers 插件接入
CMD service ssh start && tail -f /dev/null
```
此段脚本展示了如何准备一个适用于开发工作的 Linux 环境,并确保其中包含了用于支持图形界面应用(如 VSCode GUI 版)所需的各种库文件[^1]。
#### 利用Remote Development插件集建立链接
完成上述步骤之后,在宿主机上的 Visual Studio Code 中安装 Microsoft 提供的 "Remote Development" 扩展集合,它允许开发者轻松地打开位于不同位置的工作区——无论是物理机还是虚拟机甚至是云服务器中的容器实例。一旦成功建立了到目标容器内的连接,则可以直接在这个隔离环境下编写代码、调试程序等操作而无需担心影响到系统的稳定性[^2]。
对于某些特定场景下可能遇到的问题比如文件监听失败的情况可以通过调整内核参数解决,例如增加 `fs.inotify.max_user_watches` 参数值以适应大型项目的监控需求[^4]。
阅读全文