镜像和模版

SmartIDE开发容器镜像和模版库说明

开发者镜像

SmartIDE 提供了 主流开发语言的SDK 的容器镜像,包括 node/javascript、java、golang、python、dotnet/C#、php、C/C++、,集成了VSCode和JetBrains两大主流IDE体系,并在近期完成了对OpenSumi国产IDE的node SDK支持。开发者可以直接使用这些作为自己的通用开发环境,或者以这些镜像为基础来构建自己专属的开发镜像。

SmartIDE所提供的开发者容器镜像中已经针对开发调试和测试场景进行了一系列的优化,相对于自己从头构建容器镜像来说,使用SmartIDE的开发者镜像会有一系列的好处:

  • 非root用户运行:docker默认采用root方式运行容器,这带来了很多方便的同时也造成一些不安全的因素,比如用户可能在容器内越权操作主机系统,在容器内创建的文件如果被映射到主机将会作为root用户所有等等。这些问题对于使用容器单纯运行应用不易构成太大的问题,但是对于直接使用容器进行应开发来说就会造成巨大的安全隐患以及不方便。SmartIDE所提供的所有开发者容器镜像均采用普通用户权限运行,并且允许用户在启动容器时指定容器内用户的密码,方便开发者控制容器内环境同时也避免容器内操作越权。
  • 内置SSH服务支持:对于开发者来说,对容器内环境需要非常高的操作便利性,提供SSH访问能力可以极大的方便开发者对自己的开发环境进行各类操作和控制。这一点上与运维用途的容器也非常不同,一般来说运维用途的容器会尽量避免用户直接进入,而尽量采用 不可变 原则来进行管理,而开发者容器在利用 不可变 原则提供环境一致性的同时还要允许开发者进行定制,因此提供SSH直接访问就非常的重要。

国内国外双托管

为了同时兼顾国内和国外开发者使用,所有SmartIDE的镜像同时托管至阿里云和Docker Hub,方便开发者根据自己的地理位置选择最快速的拉取地址

  • 国内阿里云地址:registry.cn-hangzhou.aliyuncs.com/smartide/<镜像名称:TAG>
  • 国外 Docker Hub 地址:registry.hub.docker.com/smartide/<镜像名称:TAG>

对于以下列表中所列出的所有镜像,均可以通过替换地址前缀的方式更换拉取源。

模版库

为了方便开发者使用我们所提供的开发者镜像,我们在 SmartIDE CLI 中内置了环境模版功能,开发者可以使用 smartide new 指令获取所有可用的模版,这些模版与以上的开发者镜像一一对应,可以用来一键创建标准化的开发环境。

SmartIDE模版库本身是开源的,地址为

完整的指令列表如下

## 完整技术栈和IDE匹配列表
smartide new node|java|golang|dotnet|python|php|cpp [-T (vscode|vscode-vmlc)|(webstorm|(idea|idea-vmlc)|rider|goland|pycharm|phpstorm|clion)|opensumi|vmlc]

各个技术栈相关的模版启动指令如下:

Node/JavaScript/前端

#########################################
# Node/JavaScript 前端技术栈
#########################################

## 创建带有node全版本sdk的开发容器,无IDE,可通过VSCode SSH Remote或者JetBrains Gateway接入
smartide new node
## 创建带有node全版本sdk的VMLC开发容器,无IDE,可通过VSCode SSH Remote或者JetBrains Gateway接入。只支持linux操作系统
smartide new node -T vmlc
## 创建带有node全版本sdk的开发容器,使用VSCode WebIDE
smartide new node -T vscode
## 创建带有node全版本sdk的VMLC开发容器,使用VSCode WebIDE。只支持linux操作系统
smartide new node -T vscode-vmlc
## 创建带有node全版本sdk的开发容器,使用JetBrains WebStorm WebIDE
smartide new node -T webstorm
## 创建带有node全版本sdk的开发容器,使用Opensumi WebIDE
smartide new node -T opensumi

Java语言

#########################################
# Java语言
#########################################

## 创建带有JDK的开发容器,无IDE,可通过VSCode SSH Remote或者JetBrains Gateway接入
smartide new java
## 创建带有JDK的VMLC开发容器,无IDE,可通过VSCode SSH Remote或者JetBrains Gateway接入。只支持linux操作系统
smartide new java -T vmlc
## 创建带有JDK开发容器,使用VSCode WebIDE
smartide new java -T vscode
## 创建带有JDK的VMLC开发容器,使用VSCode WebIDE。只支持linux操作系统
smartide new java -T vscode-vmlc
## 创建带有JDK开发容器,使用JetBrains IntelliJ IDEA WebIDE
smartide new java -T idea
## 创建带有JDK的VMLC开发容器,使用JetBrains IntelliJ IDEA WebIDE。只支持linux操作系统
smartide new java -T idea-vmlc

Go语言

#########################################
# Go语言
#########################################

## 创建带有Go的开发容器,无IDE,可通过VSCode SSH Remote或者JetBrains Gateway接入
smartide new golang
## 创建带有Go开发容器,使用VSCode WebIDE
smartide new golang -T vscode
## 创建带有Go开发容器,使用JetBrains Goland WebIDE
smartide new golang -T goland

DotNet (跨平台版本)

#########################################
# DotNet (跨平台版本)
#########################################

## 创建带有.Net的开发容器,无IDE,可通过VSCode SSH Remote或者JetBrains Gateway接入
smartide new dotnet
## 创建带有.Net开发容器,使用VSCode WebIDE
smartide new dotnet -T vscode
## 创建带有.Net开发容器,使用JetBrains Rider WebIDE
smartide new dotnet -T rider

Python

#########################################
# Python
#########################################

## 创建带有Python的开发容器,无IDE,可通过VSCode SSH Remote或者JetBrains Gateway接入
smartide new python
## 创建带有Python开发容器,使用VSCode WebIDE
smartide new python -T vscode
## 创建带有Python开发容器,使用JetBrains PyCharm WebIDE
smartide new python -T pycharm

PHP

#########################################
# PHP
#########################################

## 创建带有PHP的开发容器,无IDE,可通过VSCode SSH Remote或者JetBrains Gateway接入
smartide new php
## 创建带有PHP开发容器,使用VSCode WebIDE
smartide new php -T vscode
## 创建带有PHP开发容器,使用JetBrains PhpStorm WebIDE
smartide new php -T phpstorm

C/C++

#########################################
# C/C++
#########################################

## 创建带有C/C++的开发容器,无IDE,可通过VSCode SSH Remote或者JetBrains Gateway接入
smartide new cpp
## 创建带有C/C++开发容器,使用VSCode WebIDE
smartide new cpp -T vscode
## 创建带有C/C++开发容器,使用JetBrains Clion WebIDE
smartide new cpp -T clion

镜像和模版指令列表

为了方便开发者使用我们的镜像,当前所有公开镜像的地址公布如下并会持续更新。有关以下镜像体系的详细说明,请参考 SmartIDE Sprint 9 (v0.1.9)发布说明

SmartIDE开发者镜像分成3层提供,分别提供不同的能力。

L0 - 基础镜像

提供基础能力,比如:认证,权限,SSH,git;使用Ubuntu满足日常开发基础组件的需求,还有一些其他的基础工具,如下:

  • libsecret:是一个用于存储和获取密钥和其他私密信息的库。它使用 DBUS 与“私密服务”进行通讯,
  • apt-utils: 与软件包管理相关的工具程序
  • [moreutils](Debian – 在 sid 中的 moreutils 软件包详细信息)一些通用库扩展
  • jq:json文件处理和解析工具
  • zip: 压缩/解压工具
  • vim: 命令行编辑器
  • iputils-ping: 网络命令ping
  • telnet:远程登陆
  • lsof: 列出当前系统打开文件的工具

除此之外,vmlc的基础镜像还包括了以下工具:

  • docker && docker-compose
  • kind、helm、k9s、Dapr、Kubectl
开发语言镜像类型tagPull命令new指令备注
base基础latestdocker pull registry.cn-hangzhou.aliyuncs.com/smartide/smartide-base-v2:latestse new base基于ubuntu:20.04,集成git、ssh server等基础库
base基础+VMLClatestdocker pull registry.cn-hangzhou.aliyuncs.com/smartide/smartide-base-v2-vmlc:latestse new base -T vmlc基于ubuntu:20.04,支持VMLC容器。集成git、ssh server等基础库,并包括Kind、Kubectl、Helm、K9S等基础库。只支持linux操作系统。
base基础latestdocker pull registry.cn-hangzhou.aliyuncs.com/smartide/smartide-base-v2-vscode:latestse new base -T vscode基于ubuntu:20.04,集成git、ssh server等基础库,内置VSCode WebIDE
base基础+VMLClatestdocker pull registry.cn-hangzhou.aliyuncs.com/smartide/smartide-base-v2-vscode-vmlc:latestse new base -T vscode-vmlc基于ubuntu:20.04,支持VMLC容器。集成git、ssh server等基础库,内置VSCode WebIDE,并包括Kind、Kubectl、Helm、K9S等基础库。只支持linux操作系统。

L1 - SDK镜像

SDK镜像提供开发语言环境支持能力,同时提供SDK Only的使用方式,允许本地IDE将SDK镜像作为开发环境直接使用,不嵌入WebIDE

开发语言镜像类型tagPull命令new指令备注
nodeSDKall-version,latestdocker pull registry.cn-hangzhou.aliyuncs.com/smartide/smartide-node-v2:latestse new node在base 镜像的基础上,集成了Node V14.17.6(默认)、V12.22.7 V16.7.0 SDK及nvm
nodeSDK+VMLCall-version,latestdocker pull registry.cn-hangzhou.aliyuncs.com/smartide/smartide-node-v2-vmlc:latestse new node -T vmlc在base vmlc 镜像的基础上,集成了Node V14.17.6(默认)、V12.22.7 V16.7.0 SDK及nvm。 只支持linux操作系统。
JavaSDKopenjdk-11-jdk,latestdocker pull registry.cn-hangzhou.aliyuncs.com/smartide/smartide-java-v2:latestse new java在Node SDK 镜像的基础上,集成Java Open JDK 11及maven
JavaSDK+VMLCopenjdk-11-jdk,latestdocker pull registry.cn-hangzhou.aliyuncs.com/smartide/smartide-java-v2-vmlc:latestse new java -T vmlc在Node SDK VMLC 镜像的基础上,集成Java Open JDK 11及maven。只支持linux操作系统。
golangSDK1.17.5,latest; 1.16.12,1745docker pull registry.cn-hangzhou.aliyuncs.com/smartide/smartide-golang-v2:latestse new golang在Node SDK 镜像的基础上,集成Go SDK,分为1.17.5、1.16.12两个版本
pythonSDKall-version,latestdocker pull registry.cn-hangzhou.aliyuncs.com/smartide/smartide-python-v2:latestse new python在Node SDK 镜像的基础上,集成python2和python3
dotnetSDK6.0,latestdocker pull registry.cn-hangzhou.aliyuncs.com/smartide/smartide-dotnet-v2:latestse new dotnet在Node SDK 镜像的基础上,集成Net6.0 SDK 和asp.net core
phpSDKphp7.4,latestdocker pull registry.cn-hangzhou.aliyuncs.com/smartide/smartide-php-v2:latestse new php在Node SDK 镜像的基础上,集成php7.4和Apache2
C++SDKclang,latestdocker pull registry.cn-hangzhou.aliyuncs.com/smartide/smartide-cpp-v2:latestse new cpp在Node SDK 镜像的基础上,集成cmake、clang

L2 - WebIDE镜像

WebIDE镜像,在SDK镜像的基础上嵌入常用的IDE

VSCode WebIDE

开发语言镜像类型tagPull命令new指令备注
nodeVSCodeall-version,latestdocker pull registry.cn-hangzhou.aliyuncs.com/smartide/smartide-node-v2-vscode:latestse new node -T vscode在Node SDK镜像的基础上集成VSCode WebIDE
nodeVSCode+VMLCall-version,latestdocker pull registry.cn-hangzhou.aliyuncs.com/smartide/smartide-node-v2-vscode-vmlc:latestse new node -T vscode-vmlc在Node SDK VMLC镜像的基础上集成VSCode WebIDE。只支持linux操作系统。
JavaVSCodeopenjdk-11-jdk,latestdocker pull registry.cn-hangzhou.aliyuncs.com/smartide/smartide-java-v2-vscode:latestse new java -T vscode在Java SDK镜像的基础上集成VSCode WebIDE
JavaVSCode+VMLCopenjdk-11-jdk,latestdocker pull registry.cn-hangzhou.aliyuncs.com/smartide/smartide-java-v2-vscode-vmlc:latestse new java -T vscode-vmlc在Java SDK VMLC镜像的基础上集成VSCode WebIDE。只支持linux操作系统。
golangVSCode1.17.5,latest;1.16.12,1747docker pull registry.cn-hangzhou.aliyuncs.com/smartide/smartide-golang-v2-vscode:latestse new golang -T vscode在GoLang SDK镜像的基础上集成VSCode WebIDE
pythonVSCodeall-version,latestdocker pull registry.cn-hangzhou.aliyuncs.com/smartide/smartide-python-v2-vscode:latestse new python -T vscode在Python SDK镜像的基础上集成VSCode WebIDE
dotnetVSCode6.0,latestdocker pull registry.cn-hangzhou.aliyuncs.com/smartide/smartide-dotnet-v2-vscode:latestse new dotnet -T vscode在DotNet SDK镜像的基础上集成VSCode WebIDE
phpVSCodephp7.4,latestdocker pull registry.cn-hangzhou.aliyuncs.com/smartide/smartide-php-v2-vscode:latestse new php -T vscode在PHP SDK镜像的基础上集成VSCode WebIDE
C++VSCodeclang,latestdocker pull registry.cn-hangzhou.aliyuncs.com/smartide/smartide-cpp-v2-vscode:latestse new cpp -T vscode在C++ SDK镜像的基础上集成VSCode WebIDE

JetBrains Projector WebIDE

开发语言镜像类型tagPull命令new指令备注
nodeWebStorm2021.3.2-2834,3.2-latest,latestdocker pull registry.cn-hangzhou.aliyuncs.com/smartide/smartide-node-v2-jetbrains-webstorm:latestse new node -T webstorm在Node SDK镜像的基础上集成WebStorm V2021.3.2 WebIDE
JavaIDEA2021.2.3-openjdk-11-jdk-4108,2021.2.3-4108,2021.2.3-latest,latestdocker pull registry.cn-hangzhou.aliyuncs.com/smartide/smartide-java-v2-jetbrains-idea:latestse new java -T idea在Java SDK镜像的基础上集成IDEA社区版 V2021.2.3 WebIDE
JavaIDEA+VMLC2021.2.3-openjdk-11-jdk-4108,2021.2.3-4108,2021.2.3-latest,latestdocker pull registry.cn-hangzhou.aliyuncs.com/smartide/smartide-java-v2-jetbrains-idea-vmlc:latestse new java -T idea-vmlc在Java SDK VMLC镜像的基础上集成IDEA社区版 V2021.2.3 WebIDE。只支持linux操作系统。
golangGoland2021.3.3-2830,2021.3.3-latest,latestdocker pull registry.cn-hangzhou.aliyuncs.com/smartide/smartide-golang-v2-jetbrains-goland:latestse new golang -T goland在SDK镜像的基础上集成Goland V2021.3.3 WebIDE
pythonPycharmall-version,2021.2.3-2850,latestdocker pull registry.cn-hangzhou.aliyuncs.com/smartide/smartide-python-v2-jetbrains-pycharm:latestse new python -T pycharm在SDK镜像的基础上集成 Pycharm V2021.2.5 WebIDE
dotnetRider6.0,2021.3.3-2828,latestdocker pull registry.cn-hangzhou.aliyuncs.com/smartide/smartide-dotnet-v2-jetbrains-rider:latestse new dotnet -T rider在SDK镜像的基础上集成 Rider V2021.3.3 WebIDE
phpPhpStorm2021.3.2-php7.4-2837,2021.3.2-2837,2021.3.2-latest,latestdocker pull registry.cn-hangzhou.aliyuncs.com/smartide/smartide-php-v2-jetbrains-phpstorm:latestse new php -T phpstorm在SDK镜像的基础上集成PhpStorm社区版 V2021.2.7 WebIDE
C++Clionclang,2021.3.3-2827,latestdocker pull registry.cn-hangzhou.aliyuncs.com/smartide/smartide-cpp-v2-jetbrains-clion:latestse new cpp -T clion在SDK镜像的基础上集成 Clion V2021.3.3 WebIDE

OpenSumi WebIDE

开发语言镜像类型tagPull命令new指令备注
nodeOpenSumiall-version,latestdocker pull registry.cn-hangzhou.aliyuncs.com/smartide/smartide-node-v2-opensumi:latestse new node -T opensumi在SDK镜像的基础上集成OpenSumi WebIDE

最后修改 2022.12.21: fix java vscode vmlc (6f32490)