Docker: различия между версиями
Материал из Etersoft wiki
Перейти к навигацииПерейти к поиску
(не показано 10 промежуточных версий этого же участника) | |||
Строка 1: | Строка 1: | ||
Docker — программное обеспечение для автоматизации развёртывания и управления приложениями в среде виртуализации на уровне операционной системы. | Docker — программное обеспечение для автоматизации развёртывания и управления приложениями в среде виртуализации на уровне операционной системы. | ||
== Офисный докер == | |||
Доступен так: | |||
ssh guest@docker | |||
== Быстрый старт == | == Быстрый старт == | ||
Строка 8: | Строка 12: | ||
* Загрузка: | * Загрузка: | ||
docker pull fotengauer/altlinux-sisyphus | |||
docker pull jarlefosen/cs16 | docker pull jarlefosen/cs16 | ||
* Запуск: | * Запуск (можно запускать не загружая): | ||
docker run - | 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 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 attach <id> | docker attach <id> | ||
docker exec -i -t <id> bash | docker exec -i -t <id> bash | ||
Строка 30: | Строка 38: | ||
== Полное погружение == | == Полное погружение == | ||
В докере два основных понятия - контейнер и снимок (image). | В докере два основных понятия - контейнер и снимок (image). | ||
Снимок это то что хранится в репозитории и не изменяется, контейнер это | Снимок это то что хранится в репозитории и не изменяется, контейнер это рабочая машина сделанная на основе снимка | ||
=== Узнать историю изменений === | === Узнать историю изменений === | ||
Поможет понять как изготавливался снимок и что с ним можно еще сделать. | Поможет понять как изготавливался снимок и что с ним можно еще сделать. | ||
Строка 59: | Строка 67: | ||
=== Сборка снимка из Dockerfile === | === Сборка снимка из Dockerfile === | ||
Перейдём в папку с докерфайлом и | Перейдём в папку с докерфайлом и | ||
docker build - | docker build -t my_nick/my_avesome_image ./ | ||
Теперь у нас есть новый снимок. | Теперь у нас есть новый снимок. | ||
Строка 70: | Строка 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/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
Внести свои изменения
Пример контейнера:
- создающегося из снимка 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)