Docker

Материал из Etersoft wiki
Перейти к: навигация, поиск

Docker — программное обеспечение для автоматизации развёртывания и управления приложениями в среде виртуализации на уровне операционной системы.

Офисный докер

Доступен так:

ssh guest@docker

Быстрый старт

  • Поиск контейнера:
docker search cs16
NAME                        DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
jarlefosen/cs16             Start your own CS 1.6 server in a matter o...   1                    
  • Загрузка:
docker pull fotengauer/altlinux-sisyphus
docker pull jarlefosen/cs16
  • Запуск (можно запускать не загружая):
docker run -ti fotengauer/altlinux-sisyphus # Простой
docker run --restart=always --name=cs16 -dit -p 26900:26900/udp -p 27020:27020/udp -p 27015:27015/udp -p 27015:27015 efnez/cs16
# C автоперезапуском, заданием имени, запуском в фоне -d и пробросом портов
  • Отсоединение от контенйнера (если запущено с -t -i):
exit
Ctrl+p + Ctrl+q
  • Посмотреть запущенные контейнеры и их <id>
docker ps
  • Сохранение изменений:
docker commit <id> efnez/cs16
docker commit -m "Added json gem" -a "Kate Smith" <id> ouruser/sinatra:v2
  • Подсоединение к запущенному контейнеру
docker attach <id>
docker exec -i -t <id> bash
docker exec -it --user root <id> bash #с правами рута

Полное погружение

В докере два основных понятия - контейнер и снимок (image). Снимок это то что хранится в репозитории и не изменяется, контейнер это рабочая машина сделанная на основе снимка

Узнать историю изменений

Поможет понять как изготавливался снимок и что с ним можно еще сделать.

docker history <id>
https://imagelayers.io/?images=jarlefosen%2Fcs16:latest

Внести свои изменения

Пример контейнера:

  1. создающегося из снимка scratch
  2. качающего что-то
  3. меняющего воркдир
  4. открывающего локальные порты контейнера
  5. копирующего файлы из вне в контейнер
  6. задающего переменную, можно переопределить заданные ранее в унаследованных снимках
  7. запускающего основную нагрузку
FROM scratch
RUN wget http://media.steampowered.com/installer/steamcmd_linux.tar.gz -O- | tar xz
WORKDIR /steam/
EXPOSE 26900/udp:{} 27015/udp:{} 27015 27020/udp:{}
COPY /tmp/server.cfg in cstrike/server.cfg
ENV SERVER_NAME="Counter Strike 1.6 Server"
ENTRYPOINT &{"/bin/sh" "-c" "./hlds_run -game cstrike +sv_lan 0 +hostname \\\"$SERVER_NAME\\\"}

Сохраним эти строки в файл с названием Dockerfile.

Сборка снимка из Dockerfile

Перейдём в папку с докерфайлом и

docker build -t my_nick/my_avesome_image ./

Теперь у нас есть новый снимок.

Запуск контейнера из снимка

docker run -it my_nick/my_avesome_image

Планы интеграции в epm

epms - docker search (распознавать php/php)
epmi - docker pull  

Ссылки по теме