Docker
Содержание
Лабораторные работы по Docker
Создание простого контейнера
fixme
Создание контейнера для разработки приложения на Lazarus
Откройте терминал хостовой машины и создайте рабочий каталог
mkdir docker
Перейдите в рабочий каталог
cd docker
Создание файлов
В рабочем каталоге создайте файл
Dockerfile_dev
по следующему шаблону (в файле нужно изменить имя и емэйл разработчика на собственное):
FROM ubuntu:16.04
MAINTAINER Vasya I Pupkin <vasya@pupkin.com>
ENV DEBIAN_FRONTEND noninteractive
ENV USER ubuntu
ENV HOME /home/$USER
# Create new user for vnc login.
RUN adduser $USER --disabled-password
# Install MATE and dependency component.
RUN apt-get update \
&& apt-get install -y \
tightvncserver \
mate-core mate-desktop-environment mate-notification-daemon \
supervisor \
net-tools \
curl \
git \
pwgen \
lazarus \
&& apt-get autoclean \
&& apt-get autoremove \
&& rm -rf /var/lib/apt/lists/*
# Clone noVNC.
RUN git clone https://github.com/novnc/noVNC.git $HOME/noVNC
# Clone websockify for noVNC
Run git clone https://github.com/kanaka/websockify $HOME/noVNC/utils/websockify
# Download ngrok.
ADD https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-amd64.zip $HOME/ngrok/ngrok.zip
RUN unzip -o $HOME/ngrok/ngrok.zip -d $HOME/ngrok && rm $HOME/ngrok/ngrok.zip
# Copy supervisor config.
COPY supervisor.conf /etc/supervisor/conf.d/
# Copy startup script.
COPY startup.sh $HOME
EXPOSE 6080 5901 4040
В рабочем каталоге создайте файл
supervisor.conf
со следующим содержимым:
[program:vncserver] command=vncserver -geometry 1600x900 :1 user=ubuntu [program:noVNC] command=/home/ubuntu/noVNC/utils/launch.sh --vnc localhost:5901 user=ubuntu stdout_logfile=/var/log/novnc.log redirect_stderr=true
В рабочем каталоге создайте файл
startup.sh
со следующим содержимым:
#!/bin/bash
if [ ! -f $HOME/.vnc/passwd ] ; then
if [ -z "$PASSWORD" ] ; then
PASSWORD=`pwgen -c -n -1 12`
echo -e "PASSWORD = $PASSWORD" > $HOME/password.txt
fi
echo "$USER:$PASSWORD" | chpasswd
# Set up vncserver
su $USER -c "mkdir $HOME/.vnc && echo '$PASSWORD' | vncpasswd -f > $HOME/.vnc/passwd && chmod 600 $HOME/.vnc/passwd && touch $HOME/.Xresources"
chown -R $USER:$USER $HOME
if [ ! -z "$SUDO" ]; then
case "$SUDO" in
[yY]|[yY][eE][sS])
adduser $USER sudo
esac
fi
else
VNC_PID=`find $HOME/.vnc -name '*.pid'`
if [ ! -z "$VNC_PID" ] ; then
vncserver -kill :1
rm -rf /tmp/.X1*
fi
fi
if [ ! -z "$NGROK" ] ; then
case "$NGROK" in
[yY]|[yY][eE][sS])
su ubuntu -c "$HOME/ngrok/ngrok http 6080 --log $HOME/ngrok/ngrok.log --log-format json" &
sleep 5
NGROK_URL=`curl -s http://127.0.0.1:4040/status | grep -P "http://.*?ngrok.io" -oh`
su ubuntu -c "echo -e 'Ngrok URL = $NGROK_URL/vnc.html' > $HOME/ngrok/Ngrok_URL.txt"
esac
fi
/usr/bin/supervisord -n
В конце этого этапа в рабочем каталоге должно быть три файла:
Dockerfile_dev supervisor.conf startup.sh
Создание каталогов
В рабочем каталоге создайте каталог
lazarus
командой
mkdir lazarus
В конце этого этапа в рабочем каталоге должно быть три файла:
Dockerfile_dev supervisor.conf startup.sh
и один каталог:
lazarus
Создание образа контейнера
Далее в этом разделе будем исходить из условия, что ваш логин на https://hub.docker.com/ будет
vpupkin
а пароль
ну, вы сами знаете...
! Также стоит помнить, что в эмуляторе терминала находиться нужно в рабочем каталоге !
Для создания Docker-образа (image) выполните команду: