Docker

Материал из Mageia Russian Community Wiki
Перейти к: навигация, поиск

Предварительный Dockerfile На его основе будет собран образ для использования в продакшене.

 # Mageia Build server docker images
 #
 # VERSION               0.0.1
 
 FROM mageia:4
 MAINTAINER Valentin Saikov <saikov.vb@gmail.com>
 
 RUN urpmi --auto openssh-server
 
 RUN mkdir /var/run/sshd
 
 #RUN echo 'root:screencast' | chpasswd
 
 RUN sed -i 's/PermitRootLogin no/PermitRootLogin yes/' /etc/ssh/sshd_config
 
 # SSH login fix. Otherwise user is kicked off after login
 #RUN sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd
 
 ENV NOTVISIBLE "in users profile"
 RUN echo "export VISIBLE=now" >> /etc/profile
 
 # Configuring timezone
 RUN cp /usr/share/zoneinfo/Europe/Moscow /etc/localtime
 
 # Sharing sshd port to host
 EXPOSE 22
 CMD ["/usr/sbin/sshd", "-D"]

Собираем образ.

 docker build -t mageia.pbs .

Стартуем

 docker run -i -t -P --name="pbs" --hostname="pbs" mageia.pbs /bin/bash

Просматриваем образы

 #docker images
 REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
 mageia.pbs          latest              dd2e89994803        26 minutes ago      237.4 MB

ПРОБЛЕМЫ:

  • Не стартует SSHD во время запуска контейнера
  • Проблема с паролем для root. Коннект по ssh не возможен, если только вручную не указать пароль рута.

Предварительная структура каталогов и файлов /home/user - папку пользователя (Должна создаваться после регистрации на веб морде) Dockerfile - личный файл для сборки образа контейнера. В нем и будет собираться пакет. .ssh_key - ключ для входа по ssh в контейнер (тоже подгружается в личном кабинете пользователя)


 FROM mageia:4
 MAINTAINER Valentin Saikov <saikov.vb@gmail.com>
 CMD [ "bash" ]
 
 RUN urpmi --auto openssh-server
 
 # Preconfigure for sshd
 RUN mkdir /var/run/sshd
 RUN chown root.root /var/run/sshd
 RUN chmod 755 /var/run/sshd
 RUN mkdir /root/.ssh/
 
 # Adding public key
 #ADD docker.pub /root/.ssh/authorized_keys
 #RUN chown -R root.root /root/.ssh/
 #RUN chmod 700 /root/.ssh/
 
 # Add public SSH keys
 ADD docker.pub /tmp/my_rsa_public_key
 RUN chown -R root.root /root/.ssh/
 RUN chmod 700 /root/.ssh/
 RUN cat /tmp/my_rsa_public_key >> /root/.ssh/authorized_keys && rm -f /tmp/my_rsa_public_key
 
 RUN sed -i 's/PermitRootLogin no/PermitRootLogin yes/' /etc/ssh/sshd_config
 
 ENV NOTVISIBLE "in users profile"
 RUN echo "export VISIBLE=now" >> /etc/profile
 
 # Configuring timezone
 RUN cp /usr/share/zoneinfo/Europe/Moscow /etc/localtime
 
 # Sharing sshd port to host
 EXPOSE 22
 CMD [ "/usr/sbin/sshd", "-D" ]


Интерактивно подключиться к контейнеру

 docker run --rm -it -p 32787:22 mageia.pbs bash -l
 docker run --rm -it -p 123:22 mageia.pbs /root/mageia-chroot.tarball -- bash -l

 FROM mageia:4
 MAINTAINER Valentin Saikov <saikov.vb@gmail.com>
 
 # Configuring timezone
 RUN cp /usr/share/zoneinfo/Europe/Moscow /etc/localtime
 
 # rpmbuild scripts
 ADD  mageia-chroot.rpmbuild /root/mageia-chroot.rpmbuild
 ADD  mageia-chroot.tarball /root/mageia-chroot.tarball
  
 # Sharing sshd port to host
 EXPOSE 22
 CMD ["/usr/sbin/sshd", "-D"]

mkdir /root/docker -- файлы для сборки контейнера mkdir /root/build -- файла с тарболами (будут использоваться всеми) и скриптами сборки.


 docker build -t mageia.pbs .
 docker run --rm -it -p 123:22 mageia.pbs /root/mageia-chroot.tarball -- bash -l
 docker run --rm -it -v /root/build:/share:ro -p 123:22 mageia.pbs  bash -l -- общая папка с хоста
 ./mageia-chroot.tarball -r 4 -a i586 -p /root/build/chroot -m /root/build/.rpmmacros -o /root/build

RPMMACROS

 %packager mrc
 %distribution Mageia
 %distro_section mrc

Собрать пакет в Docker для i586

 docker run --rm -it -v /root/build:/share:rw -p 31522:22 mageia.pbs /root/mageia-chroot.rpmbuild -t /share/Mageia4_i586[31.05.2015].tar.gz -o /share/RPM /share/RPM/SRPMS/webcore-fonts-3.0-1.mga5.mrc.src.rpm

mariadb

 MariaDB [mageia]> Select jobs.*, tsrc.* from jobs, tsrc where jobs.id = tsrc.id and jobs.status = 1;
 +----+---------+-------------+--------+----+---------+------------------+-----------------------------------------------------+
 | id | file_id | platform_id | status | id | user_id | filename         | description                                         |
 +----+---------+-------------+--------+----+---------+------------------+-----------------------------------------------------+
 | 80 |      80 |           1 |      1 | 80 |       1 | foo.src.mga5.rpm | Тестовый пакет для проверки                         |
 | 81 |      81 |           1 |      1 | 81 |       1 | foo.src.mga5.rpm | Тестовый пакет для проверки                         |
 | 82 |      82 |           1 |      1 | 82 |       1 | foo.src.mga5.rpm | Тестовый пакет для проверки                         |
 | 83 |      83 |           1 |      1 | 83 |       1 | foo.src.mga5.rpm | Тестовый пакет для проверки                         |
 | 84 |      84 |           1 |      1 | 84 |       1 | foo.src.mga5.rpm | Тестовый пакет для проверки                         |
 +----+---------+-------------+--------+----+---------+------------------+-----------------------------------------------------+