Docker container เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ„เบธเป‰เบกเบ„เบญเบ‡เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ HP เบœเปˆเบฒเบ™ ILO

เบ—เปˆเบฒเบ™เบญเบฒเบ”เบˆเบฐเบชเบปเบ‡เป„เบชเบงเปˆเบฒ - เป€เบ›เบฑเบ™เบซเบเบฑเบ‡ Docker เบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰? เบกเบตเบšเบฑเบ™เบซเบฒเบซเบเบฑเบ‡เบเบฑเบšเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบชเบนเปˆเบฅเบฐเบšเบปเบšเบญเบดเบ™เป€เบ•เบตเป€เบŸเบ”เป€เบงเบฑเบšเบ‚เบญเบ‡ ILO เปเบฅเบฐเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ‚เบญเบ‡เบ—เปˆเบฒเบ™เบ•เบฒเบกเบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™?
เบ™เบฑเป‰เบ™เปเบกเปˆเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเบ‚เป‰เบญเบเบ„เบดเบ”เป€เบกเบทเปˆเบญเบžเบงเบเป€เบ‚เบปเบฒเปƒเบซเป‰เบ‚เป‰เบญเบเบชเบญเบ‡เบชเบฒเบกเป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเป€เบเบปเปˆเบฒเบ—เบตเปˆเบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ—เบตเปˆเบ‚เป‰เบญเบเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ•เบดเบ”เบ•เบฑเป‰เบ‡เปƒเบซเบกเปˆ (เบญเบฑเบ™เบ—เบตเปˆเป€เบญเบตเป‰เบ™เบงเปˆเบฒ reprovision). เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบเบ‚เบญเบ‡เบกเบฑเบ™เป€เบญเบ‡เบ•เบฑเป‰เบ‡เบขเบนเปˆเบ•เปˆเบฒเบ‡เบ›เบฐเป€เบ—เบ”, เบชเบดเปˆเบ‡เบ”เบฝเบงเบ—เบตเปˆเบกเบตเบขเบนเปˆเปเบกเปˆเบ™เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเบ‚เบญเบ‡เป€เบงเบฑเบš. เปเบฅเป‰เบง, เบ•เบฒเบกเบ™เบฑเป‰เบ™, เบ‚เป‰เบญเบเบ•เป‰เบญเบ‡เป„เบ›เบซเบฒ Virtual Console เป€เบžเบทเปˆเบญเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡. เบ™เบฑเป‰เบ™เปเบกเปˆเบ™เบšเปˆเบญเบ™เบ—เบตเปˆเบกเบฑเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™.
เบ•เบฒเบกเบ—เบตเปˆเบ—เปˆเบฒเบ™เบฎเบนเป‰, Java เบ›เบปเบเบเบฐเบ•เบดเปเบฅเป‰เบงเบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เบชเปเบฒเบฅเบฑเบšเบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เป€เบ„เบทเปˆเบญเบ‡เบซเบผเบตเป‰เบ™ virtual, เบšเปเปˆเบงเปˆเบฒเบˆเบฐเบขเบนเปˆเปƒเบ™ HP เบซเบผเบท Dell. เบขเปˆเบฒเบ‡โ€‹เบซเบ™เป‰เบญเบโ€‹เบกเบฑเบ™โ€‹เป€เบ„เบตเบโ€‹เป€เบ›เบฑเบ™โ€‹เปเบ™เบงโ€‹เปƒเบ” (เปเบฅเบฐโ€‹เบฅเบฐโ€‹เบšเบปเบšโ€‹เปเบกเปˆเบ™โ€‹เป€เบเบปเปˆเบฒโ€‹เบซเบผเบฒเบโ€‹)โ€‹. เปเบ•เปˆ Firefox เปเบฅเบฐ Chrome เบขเบธเบ”เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบธเบ™ applets เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เป€เบ›เบฑเบ™เป€เบงเบฅเบฒเบ”เบปเบ™เบ™เบฒเบ™เบเปˆเบญเบ™เบซเบ™เป‰เบฒเบ™เบตเป‰, เปเบฅเบฐ IcedTea เปƒเบซเบกเปˆเบšเปเปˆเป„เบ”เป‰เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบฅเบฐเบšเบปเบšเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบซเบผเบฒเบเบขเปˆเบฒเบ‡เป„เบ”เป‰เบ›เบฐเบเบปเบ”เบ‚เบถเป‰เบ™:

1. เป€เบฅเบตเปˆเบกเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบชเบงเบ™เบชเบฑเบ”เบˆเบฒเบเบ•เบปเบงเบ—เปˆเบญเบ‡เป€เบงเบฑเบšเปเบฅเบฐเบชเบฐเบšเบฑเบš Java เปƒเบ™เป€เบ„เบทเปˆเบญเบ‡เบ‚เบญเบ‡เบ—เปˆเบฒเบ™, เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ™เบตเป‰เบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™. เบšเปเปˆเบกเบตเบ„เบงเบฒเบกเบ›เบฒเบ–เบฐเบซเบ™เบฒเบ—เบตเปˆเบˆเบฐเป€เบเบฒเบฐเป€เบเบตเป‰เบเบฅเบฐเบšเบปเบšเบชเปเบฒเบฅเบฑเบš sake เบ‚เบญเบ‡เบชเบญเบ‡เบชเบฒเบกเบ„เปเบฒเบชเบฑเปˆเบ‡.
2. เป€เบ›เบตเบ”เบ•เบปเบงเบชเบดเปˆเบ‡เบ—เบตเปˆเป€เบเบปเปˆเบฒเปเบเปˆเบขเบนเปˆเปƒเบ™เป€เบ„เบทเปˆเบญเบ‡ virtual (เบกเบฑเบ™เป„เบ”เป‰เบซเบฑเบ™เบญเบญเบเป€เบ›เบฑเบ™เบเบฒเบ™เบ—เบปเบ”เบฅเบญเบ‡เบ—เบตเปˆเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™ Java 6) เปเบฅเบฐเบเปเบฒเบซเบ™เบปเบ”เบ„เปˆเบฒเบ—เบธเบเบขเปˆเบฒเบ‡เบ—เบตเปˆเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบœเปˆเบฒเบ™เบกเบฑเบ™.
3. เบ„เบทเบเบฑเบ™เบเบฑเบšเบˆเบธเบ” 2, เบžเบฝเบ‡เปเบ•เปˆเบขเบนเปˆเปƒเบ™เบ•เบนเป‰เบ„เบญเบ™เป€เบ—เบ™เป€เบ™เบต, เบเป‰เบญเบ™เบงเปˆเบฒเป€เบžเบทเปˆเบญเบ™เบฎเปˆเบงเบกเบ‡เบฒเบ™เบซเบผเบฒเบเบ„เบปเบ™เบžเบปเบšเบšเบฑเบ™เบซเบฒเบ”เบฝเบงเบเบฑเบ™เปเบฅเบฐเบกเบฑเบ™เบ‡เปˆเบฒเบเบซเบผเบฒเบเบ—เบตเปˆเบˆเบฐเป‚เบญเบ™เปƒเบซเป‰เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบเบฑเบš container เปƒเบ™ Dockerhub เบเปˆเบงเบฒเบฎเบนเบšเบžเบฒเบšเป€เบ„เบทเปˆเบญเบ‡ virtual, เบกเบตเบฅเบฐเบซเบฑเบ”เบœเปˆเบฒเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”, เปเบฅเบฐเบญเบทเปˆเบ™เป†.
(เปƒเบ™โ€‹เบ„เบงเบฒเบกโ€‹เป€เบ›เบฑเบ™โ€‹เบˆเบดเบ‡, เบ‚เป‰เบฒโ€‹เบžเบฐโ€‹เป€เบˆเบปเป‰เบฒโ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบžเบฝเบ‡โ€‹เปเบ•เปˆโ€‹เบˆเบธเบ” 3 เบซเบผเบฑเบ‡โ€‹เบˆเบฒเบโ€‹เบ—เบตเปˆโ€‹เบ‚เป‰เบฒโ€‹เบžเบฐโ€‹เป€เบˆเบปเป‰เบฒโ€‹เป„เบ”เป‰โ€‹เบˆเบธเบ” 2โ€‹)
เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบฎเบฑเบ”เบˆเบธเบ” 3 เปƒเบ™เบกเบทเป‰เบ™เบตเป‰.

เบ‚เป‰เบฒโ€‹เบžเบฐโ€‹เป€เบˆเบปเป‰เบฒโ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบเบฒเบ™โ€‹เบ”เบปเบ™โ€‹เปƒเบˆโ€‹เบชเปˆเบงเบ™โ€‹เปƒเบซเบเปˆโ€‹เปเบกเปˆเบ™โ€‹เป‚เบ”เบโ€‹เบชเบญเบ‡โ€‹เป‚เบ„เบ‡โ€‹เบเบฒเบ™โ€‹:
1. docker-baseimage-gui
2. 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 เปƒเบ™ autostart:

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:
เบกเบฒเบ„เบดเบ”เป„เบฅเปˆ session_key เบœเปˆเบฒเบ™ curl เบ–เป‰เบฒเบ•เบปเบงเปเบ›เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบก HILO_USER เปเบฅเบฐ HILO_PASS เบ–เบทเบเบเบณเบ™เบปเบ”:

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

เป€เบกเบทเปˆเบญเบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบšเบฑเบ™เบ—เบถเบ session_key เปƒเบ™ docker, เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™ VNC:

exec x11vnc -forever -create

เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบžเบงเบเป€เบฎเบปเบฒเบžเบฝเบ‡เปเบ•เปˆเป€เบŠเบทเปˆเบญเบกเบ•เปเปˆเบœเปˆเบฒเบ™ VNC เบเบฑเบšเบžเบญเบ” 5900 (เบซเบผเบทเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบญเบทเปˆเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™) เปƒเบ™ localhost เปเบฅเบฐเป„เบ›เบ—เบตเปˆ console virtual.
เบฅเบฐเบซเบฑเบ”เบ—เบฑเบ‡เบซเบกเบปเบ”เปเบกเปˆเบ™เบขเบนเปˆเปƒเบ™ repository docker-ilo-เบฅเบนเบเบ„เป‰เบฒ.
เบ„เปเบฒโ€‹เบชเบฑเปˆเบ‡โ€‹เป€เบ•เบฑเบกโ€‹เบ—เบตเปˆโ€‹เป€เบžเบทเปˆเบญโ€‹เป€เบŠเบทเปˆเบญเบกโ€‹เบ•เปเปˆโ€‹เบเบฑเบš 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
เบเบฒเบ™เบฎเป‰เบญเบ‡เบ‚เปเบเบฒเบ™เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเปเบฅเบฐเบเบฒเบ™เบ”เบถเบ‡เปเบกเปˆเบ™, เปเบ™เปˆเบ™เบญเบ™, เบเบดเบ™เบ”เบตเบ•เป‰เบญเบ™เบฎเบฑเบš.

เป‚เบ„เบ‡โ€‹เบเบฒเบ™โ€‹เบ—เบตเปˆโ€‹เบ„เป‰เบฒเบโ€‹เบ„เบทโ€‹เบเบฑเบ™โ€‹เบกเบตโ€‹เบขเบนเปˆโ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบเบฒเบ™โ€‹เป€เบŠเบทเปˆเบญเบกโ€‹เบ•เปเปˆโ€‹เบเบฑเบšโ€‹เบเบฒเบ™โ€‹เป‚เบ•เป‰โ€‹เบ•เบญเบš IDRAC เบ‚เบญเบ‡โ€‹เป€เบ„เบทเปˆเบญเบ‡ DELLโ€‹: docker-idrac6.

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™