# Контейнеры

**Основные команды**

<div id="bkmrk-%D0%9A%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D0%B0-%D0%94%D0%BE%D0%BF.-%D0%BF%D0%B0%D1%80.-%D0%9E%D0%BF"><table border="1" style="border-collapse: collapse; width: 100%;"><thead><tr><td class="align-center" style="width: 24.9106%;">Команда</td><td class="align-center" style="width: 16.5717%;">Доп. пар.</td><td class="align-center" style="width: 58.5177%;">Описание</td></tr></thead><tbody><tr><td style="width: 24.9106%;">**docker ps**</td><td style="width: 16.5717%;">  
</td><td style="width: 58.5177%;">список работающих контейнеров</td></tr><tr><td style="width: 24.9106%;">  
</td><td style="width: 16.5717%;">-a</td><td style="width: 58.5177%;">список остановленных но еще существующих контейнеров</td></tr><tr><td style="width: 24.9106%;">**docker logs &lt;name&gt;**</td><td style="width: 16.5717%;">  
</td><td style="width: 58.5177%;">список событий внутри контейнера name</td></tr><tr><td style="width: 24.9106%;">**docker start &lt;name&gt;**</td><td style="width: 16.5717%;">  
</td><td style="width: 58.5177%;">запуск остановленного контейнера</td></tr><tr><td style="width: 24.9106%;">**docker restart &lt;name&gt;**</td><td style="width: 16.5717%;">  
</td><td style="width: 58.5177%;">Перезапускает один или несколько контейнеров. Можно считать приблизительным аналогом выполнения для заданных контейнеров команды docker stop, за которой сразу следует команда docker start.</td></tr><tr><td style="width: 24.9106%;">  
</td><td style="width: 16.5717%;">-t</td><td style="width: 58.5177%;">определяет интервал времени ожидания, необходимого для завершения работы контейнера, перед его остановом по сигналу SIGTERM.</td></tr><tr><td style="width: 24.9106%;">**docker stop &lt;name&gt;**</td><td style="width: 16.5717%;">  
</td><td style="width: 58.5177%;">Останавливает (но не удаляет) один или несколько контейнеров. После выполнения этой команды заданный контейнер переходит в состояние «остановлен».</td></tr><tr><td style="width: 24.9106%;">  
</td><td style="width: 16.5717%;">-t</td><td style="width: 58.5177%;">Аналогично restart</td></tr><tr><td style="width: 24.9106%;">**docker kill &lt;name&gt;**</td><td style="width: 16.5717%;">  
</td><td style="width: 58.5177%;">Сигнал основному процессу (PID=1) в контейнере. По умолчанию SIGKILL (немедленное завершение работы). Возвращает идентификатор контейнера.</td></tr><tr><td style="width: 24.9106%;">  
</td><td style="width: 16.5717%;">-s</td><td style="width: 58.5177%;">другой сигнал</td></tr><tr><td style="width: 24.9106%;">**docker rm &lt;name или id&gt;**</td><td style="width: 16.5717%;">  
</td><td style="width: 58.5177%;">удаление остановленного контейнера</td></tr><tr><td style="width: 24.9106%;">  
</td><td style="width: 16.5717%;">-f</td><td style="width: 58.5177%;">позволяет удалять работающие контейнеры.</td></tr><tr><td style="width: 24.9106%;">  
</td><td style="width: 16.5717%;">-v</td><td style="width: 58.5177%;">удалить тома, созданные удаляемым контейнером (если эти тома не смонтированы на каталоги и не используются другими контейнерами)

```bash
docker rm -v $(docker ps -aq -f status=exited)
```

удаляет все остановленные контейнеры

</td></tr><tr><td style="width: 24.9106%;">**docker top &lt;name или id&gt;**</td><td style="width: 16.5717%;">  
</td><td style="width: 58.5177%;">информация о процессах внутри контейнера</td></tr><tr><td style="width: 24.9106%;">**docker port &lt;name или id&gt;**</td><td style="width: 16.5717%;">  
</td><td style="width: 58.5177%;">номера портов, назначенные механизмом Docker</td></tr><tr><td style="width: 24.9106%;">**docker create &lt;name или id&gt;**</td><td style="width: 16.5717%;">  
</td><td style="width: 58.5177%;">Создает контейнер из образа, но не запускает его. Аргументы как у docker run.</td></tr><tr><td style="width: 24.9106%;">**docker run**</td><td style="width: 16.5717%;">  
</td><td style="width: 58.5177%;">создание и запуск контейнера из образа</td></tr><tr><td style="width: 24.9106%;">  
</td><td style="width: 16.5717%;">-it или -d</td><td style="width: 58.5177%;">сеанс интерактивной работы или запуск в фоновом режиме</td></tr><tr><td style="width: 24.9106%;">  
</td><td style="width: 16.5717%;">--link &lt;namecur:nameinnew&gt;</td><td style="width: 58.5177%;">соединение между новым контейнером и существующим контейнером myredis, в новом контейнере ссылка на существующий обозначена именем redis

```bash
--link myredis:redis 
```

</td></tr><tr><td style="width: 24.9106%;">  
</td><td style="width: 16.5717%;">--name</td><td style="width: 58.5177%;">имя для дальнейшего взаимодействия</td></tr><tr><td style="width: 24.9106%;">  
</td><td style="width: 16.5717%;">--hostname</td><td style="width: 58.5177%;">имя для обращения</td></tr><tr><td style="width: 24.9106%;">  
</td><td style="width: 16.5717%;">--mount</td><td style="width: 58.5177%;">монтирование</td></tr><tr><td style="width: 24.9106%;">  
</td><td style="width: 16.5717%;">--volumes-from CONTAINER</td><td style="width: 58.5177%;">использование томов контейнера</td></tr><tr><td style="width: 24.9106%;">  
</td><td style="width: 16.5717%;">-p HostPort:ContPort</td><td style="width: 58.5177%;">перенаправление с портов хоста на порт контейнера</td></tr><tr><td style="width: 24.9106%;">  
</td><td style="width: 16.5717%;">--rm</td><td style="width: 58.5177%;">удаление остановленного контейнера и файловой системы после запуска и выполнения команды. Несовместим с ключом -d.</td></tr><tr><td style="width: 24.9106%;">  
</td><td style="width: 16.5717%;">--restart</td><td style="width: 58.5177%;"><div>Позволяет настроить образ действий при попытке Docker перезапустить остановленный контейнер. </div><div>- no запрещает любые попытки перезапуска контейнера.
- unless-stopped Будет перезагружаться до остановки. После перезагрузки демона Docker контейнер останется выключенным.
- always попытки перезапуска выполняются в любом случае вне зависимости от состояния контейнера после выхода. После перезагрузки демона Docker контейнер опять запустится.
- on-failure: перезапуск выполняются для контейнера, завершившего работу с ненулевым статусом. После перезагрузки демона Docker контейнер опять запустится. Может быть задан аргумент, определяющий максимальное количество попыток перезапуска (иначе попытки будут выполняться бесконечно).

</div>```bash
docker run --restart on-failure:10 postgres
```

</td></tr><tr><td style="width: 24.9106%;">  
</td><td style="width: 16.5717%;">-t, --tty</td><td style="width: 58.5177%;">Создает псевдоустройство TTY (терминал). Как правило, используется вместе с ключом -i для запуска контейнера в интерактивном режиме.</td></tr><tr><td style="width: 24.9106%;">  
</td><td style="width: 16.5717%;">-e, --env</td><td style="width: 58.5177%;">Определяет переменные среды внутри контейнера. </td></tr><tr><td style="width: 24.9106%;">  
</td><td style="width: 16.5717%;">--entrypoint</td><td style="width: 58.5177%;">Определяет точку входа для запускаемого контейнера в соответствии с заданным аргументом, заменяя содержимое любой инструкции ENTRYPOINT из Dockerfile.</td></tr><tr><td style="width: 24.9106%;">  
</td><td style="width: 16.5717%;">-u, --user</td><td style="width: 58.5177%;">Определяет пользователя, от имени которого выполняются команды. Может быть задано как символьное имя пользователя или как числовой идентификатор UID. Заменяет содержимое инструкции USER из Dockerfile.</td></tr><tr><td style="width: 24.9106%;">  
</td><td style="width: 16.5717%;">-w, --workdir</td><td style="width: 58.5177%;">Устанавливает рабочий каталог в контейнере в соответствии с заданным путевым именем. Заменяет любые значения, определенные в файле Dockerfile.</td></tr><tr><td style="width: 24.9106%;">  
</td><td style="width: 16.5717%;">--add-host=docker:10.180.0.1</td><td style="width: 58.5177%;">ХЗ, узнать</td></tr><tr><td style="width: 24.9106%;">**docker pause/unpause**</td><td style="width: 16.5717%;">  
</td><td style="width: 58.5177%;">Временно приостанавливает/запускает все процессы внутри контейнера. Процессы не получают никаких сигналов приостановки(не могут быть остановлены и завершены или удалены).</td></tr><tr><td style="width: 24.9106%;">**docker commit &lt;container name&gt; &lt;repo name&gt;**</td><td style="width: 16.5717%;">  
</td><td style="width: 58.5177%;"> образ контейнера. По умолчанию приостанавливаются, без приостановки --pause=false. </td></tr><tr><td style="width: 24.9106%;">**docker network ls**</td><td style="width: 16.5717%;">  
</td><td style="width: 58.5177%;">список сетей</td></tr></tbody></table>

</div>**Взаимодействие реального времени**

Ctrl-PQ (или Ctrl+P, Ctrl+Q) отключение от контейнера без остановки

<table border="1" id="bkmrk-%D0%9A%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D0%B0-%D0%94%D0%BE%D0%BF.-%D0%BF%D0%B0%D1%80.-%D0%9E%D0%BF-1" style="border-collapse: collapse; width: 100%;"><colgroup><col style="width: 25.7449%;"></col><col style="width: 15.9833%;"></col><col style="width: 58.2718%;"></col></colgroup><thead><tr><td class="align-center">Команда</td><td class="align-center">Доп. пар.</td><td class="align-center">Описание</td></tr></thead><tbody><tr><td>**docker attach &lt;name или id&gt;**</td><td>  
</td><td>наблюдать или взаимодействовать с основным процессом внутри контейнера.</td></tr><tr><td>**docker cp**</td><td>  
</td><td>Позволяет копировать файлы между файловыми системами контейнера и хоста.

```bash
docker cp /tmp/config.ini grafana:/usr/share/grafana/conf/
```

</td></tr><tr><td>**docker exec**</td><td>  
</td><td>Запускает заданную команду внутри контейнера (может быть работающий сейчас). Может использоваться для выполнения задач сопровождения или в качестве замены ssh при входе (регистрации) в контейнер. ```
docker exec -it ubuntu:latest bash
```

</td></tr><tr><td>**docker events**</td><td>  
</td><td>Выводит в реальном времени события от демона демону. Выхода Ctrl-C. </td></tr></tbody></table>

<div class="align-center" id="bkmrk-%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B">**Примеры**</div>- Запуск контейнера образа ubuntu:latest в интерактивном режиме с bash ```bash
    docker run -it ubuntu:latest /bin/bash 
    ```
- Подключение к работающему контейнеру и запуск в нем bash ```bash
    docker exec -it e37f24dc7e0a bash
    ```

<div id="bkmrk-%C2%A0-1"> </div><div id="bkmrk-">  
</div><div id="bkmrk-%C2%A0-2"></div>