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
Внести свои изменения
Пример контейнера:
- создающегося из снимка scratch
- качающего что-то
- меняющего воркдир
- открывающего локальные порты контейнера
- копирующего файлы из вне в контейнер
- задающего переменную, можно переопределить заданные ранее в унаследованных снимках
- запускающего основную нагрузку
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
Ссылки по теме
- Бага docker в vbox - работающий вариант
- Наша бага про развёртвание в openvz
- Понимая докер: образ, контейнер (статья на хабре, с неё стоит начать)
- Шутливый диалог про докер на хабре "Это будущее"
- Изменение контейнеров (мануал)
- Docker в продакшене — чему мы научились, запустив более 300 миллионов контейнеров
- Создание контейнера (мануал)
- Выход из контейнера (stackoverflow)