您可能想知道-为什么Docker在这里? 转到ILO Web界面并按原样设置服务器有什么问题?
所以我想,当他们给我几个旧的不必要的服务器时,我不得不重新安装(称为重新配置)。 服务器本身位于大洋彼岸,唯一可用的是Web界面。 好吧,因此,我不得不进入虚拟控制台来执行一些命令。 这是它开始的地方。
如您所知,对于各种虚拟控制台,通常在HP和Dell使用Java。 无论如何,它曾经是如此的精确(而且系统很旧)。 但是Firefox和Chrome早已停止支持这些applet,而新的IcedTea不适用于这些系统。 因此,确定了几种选择:
- 要从计算机上的浏览器和Java版本开始构建Zoo,此选项立即消失。 不想为几个团队模拟该系统。
- 在虚拟机上运行相当古老的工具(实验发现需要Java 6),并通过它配置所需的一切。
- 与第2点相同,只是在容器中,因为几个同事都遇到了相同的问题,并且比起带有所有密码等的虚拟机映像,向他们传递dockerhub上的容器链接要容易得多。
(实际上,只有达到第2点后我才达到第3点)
第三点,我们今天要做。
我的主要灵感来自两个项目:
- docker-baseimage-gui
- docker-firefox-java
原则上,第一个
docker-baseimage-gui项目已经包含用于在
docker中启动桌面应用程序的实用程序和配置。 通常,您需要定义标准变量,并且可以通过浏览器(Websocket)或VNC访问您的应用程序。 在我们的例子中,我们将通过Firefox和VNC运行,通过websocket无法运行。
首先,安装必要的软件包-Java 6和IcedTea:
RUN echo "deb http://archive.ubuntu.com/ubuntu precise main universe" > /etc/apt/sources.list && \ apt-get update && \ apt-get -y upgrade && \ apt-get -y install firefox \ nano curl \ icedtea-6-plugin \ icedtea-netx \ openjdk-6-jre \ openjdk-6-jre-headless \ tzdata-java
现在仍然可以转到ILO界面页面并输入您的用户名和密码。 我们以自动启动方式启动Firefox:
RUN bash -c 'echo "exec openbox-session &" >> ~/.xinitrc' && \ bash -c 'echo "firefox \${HILO_HOST}">> ~/.xinitrc' && \ bash -c 'chmod 755 ~/.xinitrc'
HILO_HOST环境变量包含我们ILO界面的网址,例如
myhp.example.com 。
要自动执行该条目,让我们拧紧授权。 登录到ILO是通过常规POST请求执行的,结果是您获得JSON session_key,然后将其传递给GET请求。
如果定义了环境变量HILO_USER和HILO_PASS,则通过curl计算session_key:
export HOME=/config export HILO_HOST=${HILO_HOST%%/} SESSION_KEY="" data="{\"method\":\"login\",\"user_login\":\"${HILO_USER}\",\"password\":\"${HILO_PASS}\"}" if [[ -n "${HILO_USER}" && -n "${HILO_PASS}" ]]; then SESSION_KEY=$(curl -k -X POST "${HILO_HOST}/json/login_session" -d "$data" 2>/dev/null | grep -Eo '"session_key":"[^"]+' | sed 's/"session_key":"//') fi echo "SESSION_KEY=$SESSION_KEY" echo $SESSION_KEY > /session_key
在docker中记录session_key之后,我们可以启动VNC:
exec x11vnc -forever -create
现在,只需通过VNC连接到本地主机上的端口5900(或您选择的任何其他端口),然后转到虚拟控制台。
所有代码都在
docker-ilo-client存储库中。
连接到ILO的完整命令:
docker run -d --rm --name ilo-client -p 5900:5900 -e HILO_HOST=https://ADDRESS_OF_YOUR_HOST -e HILO_USER=SOME_USERNAME -e HILO_PASS=SOME_PASSWORD sshnaidm/docker-ilo-client
其中ADDRESS_OF_YOUR_HOST是ILO主机名,SOME_USERNAME是用户名,因此SOME_PASSWORD是ILO密码。
之后,只需在以下地址启动任何VNC客户端:
vnc://localhost:5900
当然,欢迎添加和请求请求。
存在用于连接DELL机器的IDRAC接口的类似项目:
docker-idrac6 。