镜像和模版

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
开发语言 镜像类型 tag Pull命令 new指令 备注
base 基础 latest docker pull registry.cn-hangzhou.aliyuncs.com/smartide/smartide-base-v2:latest se new base 基于ubuntu:20.04,集成git、ssh server等基础库
base 基础+VMLC latest docker pull registry.cn-hangzhou.aliyuncs.com/smartide/smartide-base-v2-vmlc:latest se new base -T vmlc 基于ubuntu:20.04,支持VMLC容器。集成git、ssh server等基础库,并包括Kind、Kubectl、Helm、K9S等基础库。只支持linux操作系统。
base 基础 latest docker pull registry.cn-hangzhou.aliyuncs.com/smartide/smartide-base-v2-vscode:latest se new base -T vscode 基于ubuntu:20.04,集成git、ssh server等基础库,内置VSCode WebIDE
base 基础+VMLC latest docker pull registry.cn-hangzhou.aliyuncs.com/smartide/smartide-base-v2-vscode-vmlc:latest se 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

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

L2 - WebIDE镜像

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

VSCode WebIDE

开发语言 镜像类型 tag Pull命令 new指令 备注
node VSCode all-version,latest docker pull registry.cn-hangzhou.aliyuncs.com/smartide/smartide-node-v2-vscode:latest se new node -T vscode 在Node SDK镜像的基础上集成VSCode WebIDE
node VSCode+VMLC all-version,latest docker pull registry.cn-hangzhou.aliyuncs.com/smartide/smartide-node-v2-vscode-vmlc:latest se new node -T vscode-vmlc 在Node SDK VMLC镜像的基础上集成VSCode WebIDE。只支持linux操作系统。
Java VSCode openjdk-11-jdk,latest docker pull registry.cn-hangzhou.aliyuncs.com/smartide/smartide-java-v2-vscode:latest se new java -T vscode 在Java SDK镜像的基础上集成VSCode WebIDE
Java VSCode+VMLC openjdk-11-jdk,latest docker pull registry.cn-hangzhou.aliyuncs.com/smartide/smartide-java-v2-vscode-vmlc:latest se new java -T vscode-vmlc 在Java SDK VMLC镜像的基础上集成VSCode WebIDE。只支持linux操作系统。
golang VSCode 1.17.5,latest;1.16.12,1747 docker pull registry.cn-hangzhou.aliyuncs.com/smartide/smartide-golang-v2-vscode:latest se new golang -T vscode 在GoLang SDK镜像的基础上集成VSCode WebIDE
python VSCode all-version,latest docker pull registry.cn-hangzhou.aliyuncs.com/smartide/smartide-python-v2-vscode:latest se new python -T vscode 在Python SDK镜像的基础上集成VSCode WebIDE
dotnet VSCode 6.0,latest docker pull registry.cn-hangzhou.aliyuncs.com/smartide/smartide-dotnet-v2-vscode:latest se new dotnet -T vscode 在DotNet SDK镜像的基础上集成VSCode WebIDE
php VSCode php7.4,latest docker pull registry.cn-hangzhou.aliyuncs.com/smartide/smartide-php-v2-vscode:latest se new php -T vscode 在PHP SDK镜像的基础上集成VSCode WebIDE
C++ VSCode clang,latest docker pull registry.cn-hangzhou.aliyuncs.com/smartide/smartide-cpp-v2-vscode:latest se new cpp -T vscode 在C++ SDK镜像的基础上集成VSCode WebIDE

JetBrains Projector WebIDE

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

OpenSumi WebIDE

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