You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker中升级code-server基础镜像时如何保留附加应用?

解决code-server镜像升级时保留自定义程序的方案

针对你升级code-server镜像时需要重复安装JVM、Python包等问题,给你几个可行的解决办法:

1. 基于官方镜像构建自定义镜像(推荐长期使用)

这是最规范的方式,把所有需要的依赖和工具都写入Dockerfile,每次官方镜像更新后,重新构建自己的镜像即可。

  • 编写Dockerfile:
    FROM linuxserver/code-server:latest
    
    # 安装JVM(以OpenJDK 17为例)
    RUN apt update && apt install -y --no-install-recommends openjdk-17-jdk && rm -rf /var/lib/apt/lists/*
    
    # 安装Python依赖(提前把需要的包列在requirements.txt里)
    COPY requirements.txt /tmp/
    RUN pip install --no-cache-dir -r /tmp/requirements.txt
    
    # 添加其他自定义工具的安装命令,比如maven、gradle等
    
  • 每次官方镜像更新后,重新构建你的镜像:
    docker build -t my-custom-code-server .
    
  • 用这个自定义镜像启动容器,升级时只需要重新构建,所有依赖都会保留。

2. 将程序安装目录挂载到宿主机卷

把JVM、Python包等的安装路径挂载到宿主机,这样容器升级时,数据存在宿主机不会丢失。

  • 先在现有容器内找到对应路径:
    • JVM路径:执行which java,通常是/usr/lib/jvm/java-17-openjdk-amd64这类路径
    • Python包路径:执行pip show pip查看Location字段,比如/usr/local/lib/python3.10/site-packages
  • 启动容器时添加挂载参数(替换成你自己的宿主机路径):
    docker run -d \
      -v /your/host/path/jvm:/usr/lib/jvm/java-17-openjdk-amd64 \
      -v /your/host/path/python-packages:/usr/local/lib/python3.10/site-packages \
      # 其他原有启动参数
      linuxserver/code-server:latest
    
  • 注意:要确保宿主机挂载目录的权限和容器内一致,避免出现权限报错。

3. Docker commit保存容器为镜像(临时应急方案)

如果不想写Dockerfile,可以直接把当前配置好的容器提交为新镜像,升级时基于这个镜像使用。

  • 停止当前容器:
    docker stop code-server
    
  • 提交容器为自定义镜像:
    docker commit code-server my-code-server:current
    
  • 之后用这个自定义镜像启动容器,下次升级时可以重复这个步骤。
  • 缺点:镜像会越来越臃肿,且无法追踪具体做了哪些修改,不推荐长期使用。

内容的提问来源于stack exchange,提问作者RAY

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 15:35:20