docker run
--cpu-shares=
--memory=
docker run -it ubuntu:14.04 /bin/bash
-i - interective
-t - подключить tty
ubuntu - repository name
14.04 - image name
/bin/bash - команда которую выполнить при старте контейнера PID1 (родитель всех процессов - в Linux это init)
docker run -d ubuntu:14.04 /bin/nginx start
-d detache запустить в фоне
docker ps - текущие работающие контейнеры
docker ps -a - все контейнеры, которые запущены сейчас и были запущенны за время работы демона docker, но в данный момент остановлены.
docker ps -l
-l - last. увидеть последний запущенный контейнер
docker top
docker inspect
docker attach HASH_OR_NAME
docker images
docker stop - отправляет SIGTERM работающему процессу внутри контейнера
docker kill - отправляет SIGKILL работающему процессу внутри контейнера
docker kill -s <SIGNAL> - но килом можно отправить и другие сигналы в процес.
docker info - увидеть сколько контейнеров готово к запуску(запущены или можно запустить), сколько всего имеджей(больше чем контейнеров, потому что некоторые прилетели слоями для контейнеров).
docker history HASH_OR_NAME
docker logs HASH_OR_NAME
docker logs -f HASH_OR_NAME - follow как в tail
Ctrl + P + Q отключиться от контейнера, но оставить его работать в фоне
В контейнерах лучше всего выполнять не больше одного процесса, но иногда нужно больше.
phusion - команда которая кастомизирует имиджи Ubuntu под необходимые задачи. Вроде как их контейнерам можно доверять.
Поэтому чаще всего docker attach не имеет смысла, потому что в контейнере будет запущено под pid1 какая-нибудь апликация, например nginx. Поэтому мы может подключиться к системным Nanmespace, для этого нужно узнать под каким pid в ОС запущен контейнер и это не тот идентификатор, по котором мы его определяем на docker платформе. Для этого:
-u uts(Unix Time-Sharing - multiprogramming&multitasking) namespace
-n network namespace -p process namespace
-i ipc(Inter-Process Communication) namespace
-t target with
/bin/bash запустить внутри шелл
Но наиболее рекомендованный способ, потому что не всегда линукс будет иметь установленный nsenter:
docker exec -it containerName_or_Hash /bin/bash
Но даже если не установлен nsenter(или в текущем репозиторие дистрибудтива он устаревший), мы может по-быстрому его запустить с помощью docker имиджа:
скомпилированные бинарники окажутся в директории /usr/local/bin :)
В проэктике jpetazzo/nsenter есть также скрипт который содержит длинный вызов nsenter с ключами, он тоже устанавливается в с nsenter из этого докер имиджа:)
docker-enter containerName_or_Hash
docker build -t <image-tag> .
docker tag 1b14ob coreer/myfirstbuild
docker push coreer/myfirstbuild
docker rmi <HASH_OR_NAME1> < HASH_OR_NAME2> -- remove images
docker start -ai <HASH_OR_NAME1> -- запустить созданный контейнер перезапустить отработавший свой процесс PID1 контейнер, при этом мы подсоединяем текущий шелл к вводу/выводу контейнера, через которые мы можем наблюдать вывод и посылать ввод, пока процесс контейнера не закончит работу. Это подходит для каких-нибудь апликаций у которых задача: "сделать и остановится".
--cpu-shares=
--memory=
docker run -it ubuntu:14.04 /bin/bash
-i - interective
-t - подключить tty
ubuntu - repository name
14.04 - image name
/bin/bash - команда которую выполнить при старте контейнера PID1 (родитель всех процессов - в Linux это init)
docker run -d ubuntu:14.04 /bin/nginx start
-d detache запустить в фоне
docker ps - текущие работающие контейнеры
docker ps -a - все контейнеры, которые запущены сейчас и были запущенны за время работы демона docker, но в данный момент остановлены.
docker ps -l
-l - last. увидеть последний запущенный контейнер
docker top
docker inspect
docker attach HASH_OR_NAME
docker images
docker stop - отправляет SIGTERM работающему процессу внутри контейнера
docker kill - отправляет SIGKILL работающему процессу внутри контейнера
docker kill -s <SIGNAL> - но килом можно отправить и другие сигналы в процес.
docker info - увидеть сколько контейнеров готово к запуску(запущены или можно запустить), сколько всего имеджей(больше чем контейнеров, потому что некоторые прилетели слоями для контейнеров).
docker history
docker logs HASH_OR_NAME
docker logs -f HASH_OR_NAME - follow как в tail
Ctrl + P + Q отключиться от контейнера, но оставить его работать в фоне
В контейнерах лучше всего выполнять не больше одного процесса, но иногда нужно больше.
phusion - команда которая кастомизирует имиджи Ubuntu под необходимые задачи. Вроде как их контейнерам можно доверять.
Поэтому чаще всего docker attach не имеет смысла, потому что в контейнере будет запущено под pid1 какая-нибудь апликация, например nginx. Поэтому мы может подключиться к системным Nanmespace, для этого нужно узнать под каким pid в ОС запущен контейнер и это не тот идентификатор, по котором мы его определяем на docker платформе. Для этого:
root@some:~# docker inspect 8b2dakj | grep Pid
"Pid": 1923,
root@some:~#
root@some:~#
root@some:~#
root@some:~# nsenter -m -u -n -p -i -t 1923 /bin/bash
-m mount namespace-u uts(Unix Time-Sharing - multiprogramming&multitasking) namespace
-n network namespace -p process namespace
-i ipc(Inter-Process Communication) namespace
-t target with
docker exec -it containerName_or_Hash /bin/bash
root@hostos:~# docker run -v /usr/local/bin:/target jpetazzo/nsenter Installing nsenter to /target Installing docker-enter to /target
скомпилированные бинарники окажутся в директории /usr/local/bin :)
docker-enter containerName_or_Hash
docker build -t <image-tag> .
docker tag 1b14ob coreer/myfirstbuild
docker push coreer/myfirstbuild
docker rmi <HASH_OR_NAME1> < HASH_OR_NAME2> -- remove images
docker start -ai <HASH_OR_NAME1> -- запустить созданный контейнер перезапустить отработавший свой процесс PID1 контейнер, при этом мы подсоединяем текущий шелл к вводу/выводу контейнера, через которые мы можем наблюдать вывод и посылать ввод, пока процесс контейнера не закончит работу. Это подходит для каких-нибудь апликаций у которых задача: "сделать и остановится".
-a, --attach Attach STDOUT/STDERR and forward signals
-i, --interactive Attach container's STDIN
docker create - создает из образа контейнер, который можно запускать.
docker run = docker create + docker start. Когда в работающем контейнере происходят изменения файловой системы то, считается что в этот момент появляются Thin R/W layer, контейнера, из из него можно создать образ. Так мы Thin R/W layer как бы фиксируем - и не боимся, что потеряем необходимые нам изменения в контейнере.
docker export - Export a container’s filesystem as a tar archive
docker run = docker create + docker start. Когда в работающем контейнере происходят изменения файловой системы то, считается что в этот момент появляются Thin R/W layer, контейнера, из из него можно создать образ. Так мы Thin R/W layer как бы фиксируем - и не боимся, что потеряем необходимые нам изменения в контейнере.
docker export - Export a container’s filesystem as a tar archive
Комментариев нет:
Отправить комментарий