如果着急使用可以直接使用我构建的镜像,请从配置镜像源开始看
SDKMAN
SDKMAN!
是在大多数基于Unix
的系统上管理多个软件开发工具包的并行版本的工具,
官方网站为
http://sdkman.io/
SDKMAN
的安装很简单
$ curl -s "https://get.sdkman.io" | bash
不过在网络受到限制的情况下,就不适合自动安装了,此时可以借助Docker
构建镜像,然后分发到目标设备。
由于SDKMAN
是开源软件,所构建的镜像并不需要保密,因此可以借助Docker
的镜像构建服务构建为公开镜像。
在 https://github.com/ 上注册账号,我的账号为
https://github.com/huzhenghui
创建一个用于构建镜像的项目,本例为
https://github.com/huzhenghui/SDKMAN-Docker-Autobuild
其中包含一个用于构建镜像的文件
https://github.com/huzhenghui/SDKMAN-Docker-Autobuild/blob/master/Dockerfile
内容为
FROM debian:stretch
LABEL maintainer="[email protected]"
RUN apt-get update && \
apt-get install -y curl unzip zip && \
curl -s "https://get.sdkman.io" | bash
在 https://hub.docker.com 上注册账号,我的账号为
https://hub.docker.com/r/huzhenghui/
创建一个用于保存镜像的仓库,本例为
https://hub.docker.com/r/huzhenghui/sdkman
按照Docker
网站上创建仓库时的说明设置自动构建,完成后可在此看到相关信息
(本页面仅限于自己访问,请将链接中的用户名和仓库名替换为你自己的用户名和仓库名)
https://cloud.docker.com/app/huzhenghui/repository/docker/huzhenghui/sdkman/general
设置成功后,每次向 https://github.com/huzhenghui/SDKMAN-Docker-Autobuild 提交代码,即会自动触发构建。
构建成功后,可以在镜像仓库中看到公开的信息
https://hub.docker.com/r/huzhenghui/sdkman
既然网络受到限制影响构建,那么也影响拉取镜像,此时可以使用更快捷的镜像源。
比较方便的是中国科学技术大学提供的镜像源,文档为
http://mirrors.ustc.edu.cn/help/dockerhub.html
本例中使用的是Boot2Docker,配置镜像源需要编辑文件
vi /var/lib/boot2docker/profile
在如下位置增加行
EXTRA_ARGS='
--label provider=hyperv
+ --registry-mirror=https://docker.mirrors.ustc.edu.cn
'
CACERT=/var/lib/boot2docker/ca.pem
DOCKER_HOST='-H tcp://0.0.0.0:2376'
DOCKER_STORAGE=aufs
DOCKER_TLS=auto
SERVERKEY=/var/lib/boot2docker/server-key.pem
SERVERCERT=/var/lib/boot2docker/server.pem
修改后如下所示
EXTRA_ARGS='
--label provider=hyperv
--registry-mirror=https://docker.mirrors.ustc.edu.cn
'
CACERT=/var/lib/boot2docker/ca.pem
DOCKER_HOST='-H tcp://0.0.0.0:2376'
DOCKER_STORAGE=aufs
DOCKER_TLS=auto
SERVERKEY=/var/lib/boot2docker/server-key.pem
SERVERCERT=/var/lib/boot2docker/server.pem
速度快到飞起来
docker pull huzhenghui/sdkman
查看效果
docker run -it --rm --entrypoint /bin/bash huzhenghui/sdkman -l -c 'sdk'
输出如下内容表示可以正常运行了
Usage: sdk [candidate] [version]
sdk offline
commands:
install or i [version]
uninstall or rm <version>
list or ls [candidate]
use or u [version]
default or d [version]
current or c [candidate]
upgrade or ug [candidate]
version or v
broadcast or b
help or h
offline [enable|disable]
selfupdate [force]
update
flush
candidate : the SDK to install: groovy, scala, grails, gradle, kotlin, etc.
use list command for comprehensive list of candidates
eg: $ sdk list
version : where optional, defaults to latest stable if not provided
eg: $ sdk install groovy
由于sdk
是一个function
,因此需要-l
参数