Инструменты пользователя

Инструменты сайта


howto:docker

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
howto:docker [2017/12/04 17:01]
Алексей Кожевников
— (текущий)
Строка 1: Строка 1:
-====== docker ====== 
- 
-===== Пример php приложения ===== 
- 
-Dockerfile 
-<​code>​ 
-FROM centos:7 
- 
-ENV ORACLE_HOME=/​usr/​lib/​oracle/​12.1/​client64 
-ENV LD_LIBRARY_PATH=/​usr/​lib/​oracle/​12.1/​client64/​lib 
-ENV LD_LIBRARY_PATH64=/​usr/​lib/​oracle/​12.1/​client64/​lib 
-ENV NSS_SDB_USE_CACHE=yes 
- 
-COPY oracle-instantclient12.1-basic-12.1.0.2.0-1.x86_64.rpm /tmp/ 
-RUN yum install -y /​tmp/​oracle-instantclient12.1-basic-12.1.0.2.0-1.x86_64.rpm \ 
-    && rm -f /tmp/*.rpm 
- 
-RUN yum clean all \ 
-    && yum install -y https://​dl.fedoraproject.org/​pub/​epel/​epel-release-latest-7.noarch.rpm \  
-    && yum install -y http://​rpms.famillecollet.com/​enterprise/​remi-release-7.rpm \  
-    && yum-config-manager --enable remi-php56 \  
-    && yum install -y php-cli php-fpm php-gd php-mbstring php-mysqlnd php-oci8 php-pecl-memcache php-soap \ 
-    && yum install -y curl net-tools tcpdump telnet \ 
-    && yum clean all 
- 
-COPY etc/php.ini etc/​php-fpm.conf /etc/ 
-COPY etc/​php-fpm.d/​www.conf /​etc/​php-fpm.d/​ 
- 
-CMD ["/​usr/​sbin/​php-fpm",​ "​--nodaemonize"​] 
-</​code>​ 
- 
-Создание образа 
-<​code>​ 
-docker build --no-cache -t php56 . 
-</​code>​ 
- 
-Добавление образа в репозиторий 
-<​code>​ 
-docker tag php56 ak831/php56 
-docker push ak831/php56 
-</​code>​ 
- 
-Загрузка образа 
-<​code>​ 
-docker pull ak831/​php56:​latest 
-</​code>​ 
- 
-Создание томов 
-<​code>​ 
-docker volume create pe-data 
-docker volume create pe-logs 
-</​code>​ 
- 
-Запуск контейнера 
-<​code>​ 
-docker run --name pe -d \ 
---network="​host"​ \ 
---mount source=pe-data,​target=/​usr/​local/​pe \ 
---mount source=pe-logs,​target=/​var/​log/​php-fpm \ 
---restart unless-stopped \ 
-ak831/​php56:​latest 
-</​code>​ 
-или 
-<​code>​ 
-docker run --name pe -d \ 
--p 127.0.0.1:​9009:​9009 \ 
---mount source=pe-data,​target=/​usr/​local/​pe \ 
---mount source=pe-logs,​target=/​var/​log/​php-fpm \ 
---restart unless-stopped \ 
-ak831/​php56:​latest 
-</​code>​ 
- 
-Подключение к контейнеру 
-<​code>​ 
-docker exec -i -t pe2 bash 
-</​code>​ 
- 
-===== Реестры и репозитории Docker ===== 
- 
-==== Вход в реестр ==== 
- 
-<​code>​ 
-docker login 
- 
-docker login localhost:​8080 
-</​code>​ 
- 
-==== Выход из реестра ==== 
- 
-<​code>​ 
-docker logout 
- 
-docker logout localhost:​8080 
-</​code>​ 
- 
-==== Поиск образа ==== 
- 
-<​code>​ 
-docker search nginx 
- 
-docker search nginx --filter stars=3 --no-trunc busybox 
-</​code>​ 
- 
-==== Pull (выгрузка из реестра) образа ==== 
- 
-<​code>​ 
-docker pull nginx 
- 
-docker pull eon01/nginx localhost:​5000/​myadmin/​nginx 
-</​code>​ 
- 
-==== Push (загрузка в реестр) образа ==== 
- 
-<​code>​ 
-docker push eon01/nginx 
- 
-docker push eon01/nginx localhost:​5000/​myadmin/​nginx 
-</​code>​ 
- 
-===== Первые действия с контейнерами ===== 
- 
-==== Создание контейнера ==== 
- 
-<​code>​ 
-docker create -t -i eon01/​infinite --name infinite 
-</​code>​ 
- 
-==== Первый запуск контейнера ==== 
- 
-<​code>​ 
-docker run -it --name infinite -d eon01/​infinite 
-</​code>​ 
- 
-==== Переименование контейнера ==== 
- 
-<​code>​ 
-docker rename infinite infinity 
-</​code>​ 
- 
-==== Удаление контейнера ==== 
- 
-<​code>​ 
-docker rm infinite 
-</​code>​ 
- 
-==== Обновление контейнера ==== 
- 
-<​code>​ 
-docker update --cpu-shares 512 -m 300M infinite 
-</​code>​ 
- 
-===== Запуск и остановка контейнеров ===== 
- 
-==== Запуск остановленного контейнера ==== 
- 
-<​code>​ 
-docker start nginx 
-</​code>​ 
- 
-==== Остановка ==== 
- 
-<​code>​ 
-docker stop nginx 
-</​code>​ 
- 
-==== Перезагрузка ==== 
- 
-<​code>​ 
-docker restart nginx 
-</​code>​ 
- 
-==== Пауза (приостановка всех процессов контейнера) ==== 
- 
-<​code>​ 
-docker pause nginx 
-</​code>​ 
- 
-==== Снятие паузы ==== 
- 
-<​code>​ 
-docker unpause nginx 
-</​code>​ 
- 
-==== Блокировка (до остановки контейнера) ==== 
- 
-<​code>​ 
-docker wait nginx 
-</​code>​ 
- 
-==== Отправка SIGKILL (завершающего сигнала) ==== 
- 
-<​code>​ 
-docker kill nginx 
-</​code>​ 
- 
-==== Отправка другого сигнала ==== 
- 
-<​code>​ 
-docker kill -s HUP nginx 
-</​code>​ 
- 
-==== Подключение к существующему контейнеру ==== 
- 
-<​code>​ 
-docker attach nginx 
-</​code>​ 
- 
-===== Получение информации о контейнерах ===== 
- 
-==== Работающие контейнеры ==== 
- 
-<​code>​ 
-docker ps 
- 
-docker ps -a 
-</​code>​ 
- 
-==== Логи контейнера ==== 
- 
-<​code>​ 
-docker logs infinite 
-</​code>​ 
- 
-==== Информация о контейнере ==== 
- 
-<​code>​ 
-docker inspect infinite 
- 
-docker inspect --format '{{ .NetworkSettings.IPAddress }}' $(docker ps -q) 
-</​code>​ 
- 
-==== События контейнера ==== 
- 
-<​code>​ 
-docker events infinite 
-</​code>​ 
- 
-==== Публичные порты ==== 
- 
-<​code>​ 
-docker port infinite 
-</​code>​ 
- 
-==== Выполняющиеся процессы ==== 
- 
-<​code>​ 
-docker top infinite 
-</​code>​ 
- 
-==== Использование ресурсов ==== 
- 
-<​code>​ 
-docker stats infinite 
-</​code>​ 
- 
-==== Изменения в файлах или директориях файловой системы контейнера ==== 
- 
-<​code>​ 
-docker diff infinite 
-</​code>​ 
- 
-===== Управление образами ===== 
- 
-==== Список образов ==== 
- 
-<​code>​ 
-docker images 
-</​code>​ 
- 
-==== Создание образов ==== 
- 
-<​code>​ 
-docker build . 
- 
-docker build github.com/​creack/​docker-firefox 
- 
-docker build - < Dockerfile 
- 
-docker build - < context.tar.gz 
- 
-docker build -t eon/​infinite . 
- 
-docker build -f myOtherDockerfile . 
- 
-curl example.com/​remote/​Dockerfile | docker build -f - . 
-</​code>​ 
- 
-==== Удаление образа ==== 
- 
-<​code>​ 
-docker rmi nginx 
-</​code>​ 
- 
-==== Загрузка репозитория в tar (из файла или стандартного ввода) ==== 
- 
-<​code>​ 
-docker load <​ubuntu.tar.gz 
- 
-docker load --input ubuntu.tar 
-</​code>​ 
- 
-==== Сохранение образа в tar-архив ==== 
- 
-<​code>​ 
-docker save busybox> ubuntu.tar 
-</​code>​ 
- 
-==== Просмотр истории образа ==== 
- 
-<​code>​ 
-docker history 
-</​code>​ 
- 
-==== Создание образа из контейнера ==== 
- 
-<​code>​ 
-docker commit nginx 
-</​code>​ 
- 
-==== Тегирование образа ==== 
- 
-<​code>​ 
-docker tag nginx eon01/nginx 
-</​code>​ 
- 
-==== Push (загрузка в реестр) образа ==== 
- 
-<​code>​ 
-docker push eon01/nginx 
-</​code>​ 
- 
-===== Сеть ===== 
- 
-==== Создание сети ==== 
- 
-<​code>​ 
-docker network create -d overlay MyOverlayNetwork 
-</​code>​ 
- 
-<​code>​ 
-docker network create -d bridge MyBridgeNetwork 
-</​code>​ 
- 
-<​code>​ 
-docker network create -d overlay 
-  --subnet=192.168.0.0/​16 
-  --subnet=192.170.0.0/​16 
-  --gateway=192.168.0.100 
-  --gateway=192.170.0.100 
-  --ip-range=192.168.1.0/​24 
-  --aux-address="​my-router=192.168.1.5"​ --aux-address="​my-switch=192.168.1.6"​ 
-  --aux-address="​my-printer=192.170.1.5"​ --aux-address="​my-nas=192.170.1.6"​ 
-  MyOverlayNetwork 
-</​code>​ 
- 
-==== Удаление сети ==== 
- 
-<​code>​ 
-docker network rm MyOverlayNetwork 
-</​code>​ 
- 
-==== Список сетей ==== 
- 
-<​code>​ 
-docker network ls 
-</​code>​ 
- 
-==== Получение информации о сети ==== 
- 
-<​code>​ 
-docker network inspect MyOverlayNetwork 
-</​code>​ 
- 
-==== Подключение работающего контейнера к сети ==== 
- 
-<​code>​ 
-docker network connect MyOverlayNetwork nginx 
-</​code>​ 
- 
-==== Подключение контейнера к сети при его запуске ==== 
- 
-<​code>​ 
-docker run -it -d --network=MyOverlayNetwork nginx 
-</​code>​ 
- 
-==== Отключение контейнера от сети ==== 
- 
-<​code>​ 
-docker network disconnect MyOverlayNetwork nginx 
-</​code>​ 
- 
-===== Очистка Docker ===== 
- 
-==== Удаление работающего контейнера ==== 
- 
-<​code>​ 
-docker rm nginx 
-</​code>​ 
- 
-==== Удаление контейнера и его тома (volume) ==== 
- 
-<​code>​ 
-docker rm -v nginx 
-</​code>​ 
- 
-==== Удаление всех контейнеров со статусом exited ==== 
- 
-<​code>​ 
-docker rm $(docker ps -a -f status=exited -q) 
-</​code>​ 
- 
-==== Удаление всех остановленных контейнеров ==== 
- 
-<​code>​ 
-docker container prune 
-</​code>​ 
- 
-<​code>​ 
-docker rm `docker ps -a -q` 
-</​code>​ 
- 
-==== Удаление контейнеров,​ остановленных более суток назад ==== 
- 
-<​code>​ 
-docker container prune --filter "​until=24h"​ 
-</​code>​ 
- 
-==== Удаление образа ==== 
- 
-<​code>​ 
-docker rmi nginx 
-</​code>​ 
- 
-==== Удаление неиспользуемых (dangling) образов ==== 
- 
-<​code>​ 
-docker image prune 
-</​code>​ 
- 
-<​code>​ 
-docker rmi $(docker images -f dangling=true -q) 
-</​code>​ 
- 
-==== Удаление неиспользуемых (dangling) образов даже с тегами ==== 
- 
-<​code>​ 
-docker image prune -a 
-</​code>​ 
- 
-==== Удаление всех образов ==== 
- 
-<​code>​ 
-docker rmi $(docker images -a -q) 
-</​code>​ 
- 
-==== Удаление всех образов без тегов ==== 
- 
-<​code>​ 
-docker rmi -f $(docker images | grep "​^<​none>"​ | awk "​{print $3}") 
-</​code>​ 
- 
-==== Остановка и удаление всех контейнеров ==== 
- 
-<​code>​ 
-docker stop $(docker ps -a -q) && docker rm $(docker ps -a -q) 
-</​code>​ 
- 
-==== Удаление неиспользуемых (dangling) томов ==== 
- 
-<​code>​ 
-docker volume prune 
-</​code>​ 
- 
-<​code>​ 
-docker volume rm $(docker volume ls -f dangling=true -q) 
-</​code>​ 
- 
-==== Удаление неиспользуемых (dangling) томов по фильтру ==== 
- 
-<​code>​ 
-docker volume prune --filter "​label!=keep"​ 
-</​code>​ 
- 
-==== Удаление неиспользуемых сетей ==== 
- 
-<​code>​ 
-docker network prune 
-</​code>​ 
- 
-==== Удаление всех неиспользуемых объектов ==== 
- 
-<​code>​ 
-docker system prune 
-</​code>​ 
- 
-По умолчанию для Docker 17.06.1+ тома не удаляются. Чтобы удалились и они тоже: 
- 
-<​code>​ 
-docker system prune --volumes 
-</​code>​ 
- 
-===== Docker Swarm ===== 
- 
-==== Инициализация Swarm ==== 
- 
-<​code>​ 
-docker swarm init --advertise-addr 192.168.10.1 
-</​code>​ 
- 
-==== Подключение рабочего узла (worker) к Swarm ==== 
- 
-<​code>​ 
-docker swarm join-token worker 
-</​code>​ 
- 
-==== Подключение управляющего узла (manager) к Swarm ==== 
- 
-<​code>​ 
-docker swarm join-token manager 
-</​code>​ 
- 
-==== Список сервисов ==== 
- 
-<​code>​ 
-docker service ls 
-</​code>​ 
- 
-==== Список узлов ==== 
- 
-<​code>​ 
-docker node ls 
-</​code>​ 
- 
-==== Создание сервиса ==== 
- 
-<​code>​ 
-docker service create --name vote -p 8080:80 instavote/​vote 
-</​code>​ 
- 
-==== Список заданий Swarm ==== 
- 
-<​code>​ 
-docker service ps 
-</​code>​ 
- 
-==== Масштабирование сервиса ==== 
- 
-<​code>​ 
-docker service scale vote=3 
-</​code>​ 
- 
-==== Обновление сервиса ==== 
- 
-<​code>​ 
-docker service update --image instavote/​vote:​movies vote 
-</​code>​ 
- 
-<​code>​ 
-docker service update --force --update-parallelism 1 --update-delay 30s nginx 
-</​code>​ 
- 
-<​code>​ 
-docker service update --update-parallelism 5--update-delay 2s --image instavote/​vote:​indent vote 
-</​code>​ 
- 
-<​code>​ 
-docker service update --limit-cpu 2 nginx 
-</​code>​ 
- 
-<​code>​ 
-docker service update --replicas=5 nginx 
-</​code>​ 
- 
-{{tag> docker }} 
  
howto/docker.1512396065.txt.gz · Последние изменения: 2017/12/04 17:01 — Алексей Кожевников