Docker: различия между версиями

Материал из Etersoft wiki
Перейти к навигацииПерейти к поиску
 
(не показано 13 промежуточных версий этого же участника)
Строка 1: Строка 1:
Docker — программное обеспечение для автоматизации развёртывания и управления приложениями в среде виртуализации на уровне операционной системы.
Docker — программное обеспечение для автоматизации развёртывания и управления приложениями в среде виртуализации на уровне операционной системы.


=== Быстрый старт ===
== Офисный докер ==
Доступен так:
ssh guest@docker
 
== Быстрый старт ==
* Поиск контейнера:
* Поиск контейнера:
  docker search cs16
  docker search cs16
Строка 8: Строка 12:


* Загрузка:
* Загрузка:
docker pull fotengauer/altlinux-sisyphus
  docker pull jarlefosen/cs16
  docker pull jarlefosen/cs16
docker pull fotengauer/altlinux-sisyphus


* Запуск:
* Запуск (можно запускать не загружая):
  docker run -t -i -p 26900:26900/udp -p 27020:27020/udp -p 27015:27015/udp -p 27015:27015 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):
* Отсоединение от контенйнера (если запущено с -t -i):
exit
  Ctrl+p + Ctrl+q
  Ctrl+p + Ctrl+q
* Посмотреть запущенные контейнеры и их <id>
docker ps


* Сохранение изменений:
* Сохранение изменений:
docker ps
  docker commit <id> efnez/cs16
  docker commit <id> efnez/cs16
  docker commit -m "Added json gem" -a "Kate Smith" <id> ouruser/sinatra:v2
  docker commit -m "Added json gem" -a "Kate Smith" <id> ouruser/sinatra:v2


* Подсоединение
* Подсоединение к запущенному контейнеру
docker ps
  docker attach <id>
  docker attach <id>
  docker exec -i -t <id> bash
  docker exec -i -t <id> bash
  docker exec -it --user root <id> bash #с правами рута
  docker exec -it --user root <id> bash #с правами рута


==== Узнать историю изменений ====
== Полное погружение ==
В докере два основных понятия - контейнер и снимок (image).
Снимок это то что хранится в репозитории и не изменяется, контейнер это рабочая машина сделанная на основе снимка
=== Узнать историю изменений ===
Поможет понять как изготавливался снимок и что с ним можно еще сделать.
  docker history <id>
  docker history <id>
  https://imagelayers.io/?images=jarlefosen%2Fcs16:latest
  https://imagelayers.io/?images=jarlefosen%2Fcs16:latest
=== Внести свои изменения ===
Пример контейнера:
# создающегося из снимка scratch
# качающего что-то
# меняющего воркдир
# открывающего локальные порты контейнера
# копирующего файлы из вне в контейнер
# задающего переменную, можно переопределить заданные ранее в унаследованных снимках
# запускающего основную нагрузку
<pre>
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\\\"}
</pre>
Сохраним эти строки в файл с названием Dockerfile.
=== Сборка снимка из Dockerfile ===
Перейдём в папку с докерфайлом и
docker build -t my_nick/my_avesome_image ./
Теперь у нас есть новый снимок.
=== Запуск контейнера из снимка ===
docker run -it my_nick/my_avesome_image


== Планы интеграции в epm ==
== Планы интеграции в epm ==
Строка 37: Строка 78:


== Ссылки по теме ==
== Ссылки по теме ==
* [https://docs.docker.com/engine/userguide/containers/dockerimages/ Изменение контейнеров]
* [https://bugs.etersoft.ru/show_bug.cgi?id=11173 Бага docker в vbox - работающий вариант]
* [http://stackoverflow.com/questions/19688314/how-do-you-attach-and-detach-from-dockers-process Выход из контейнера]
* [http://bugs.etersoft.ru/show_bug.cgi?id=10955 Наша бага про развёртвание в openvz]
* [https://habrahabr.ru/post/253877/ Понятия докера: образ, контейнер]
* [https://habrahabr.ru/post/253877/ Понимая докер: образ, контейнер (статья на хабре, с неё стоит начать)]
* [https://habrahabr.ru/post/276539/ Шутливый диалог про докер на хабре "Это будущее"]
* [https://docs.docker.com/engine/userguide/containers/dockerimages/ Изменение контейнеров (мануал)]
* [https://habrahabr.ru/post/247969/ Docker в продакшене — чему мы научились, запустив более 300 миллионов контейнеров]
* [https://docs.docker.com/engine/reference/builder/ Создание контейнера (мануал)]
* [http://stackoverflow.com/questions/19688314/how-do-you-attach-and-detach-from-dockers-process Выход из контейнера (stackoverflow)]

Текущая версия на 17:49, 8 декабря 2016

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  

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