docker

docker linux host IP хоста (Основной операционной системы), как обращаться к службам "снаружи"

Используем сеть по умолчанию (минимализм)

Cпециальное внутреннее доменное имя host.docker.internal что обращаться к основной системе (хосту) из контейра (гостевой системы) не работает в Linux (как минимум в docker 19)

Явное указание IP

Более сложный способ: можно сконфигурировать подсеть для контейнеров приложения, явно указав диапазон адресов подсети, сделать это можно так:

docker Запросы выполняются медленнее чем без докера

Проблема

После переезда в докер запросы стали выполняться очень долго (минимум по 3 секунды лишних на каждый вопрос). При этом докер запускался в ubuntu linux, где накладные расходны на сам докер должны быть минимальными.

Что оказалось

Оказалось, что проблема была в том, что в сборке использовалась конфигурация xdebug (в конфиге ниже это файл config/php/xdebug.ini) в которой было включен автозапуск (xdebug.remote_autostart=1), чтобы исправить ситуацию переключили на 0:

docker-compose По-русски. Основные команды, пример

Стандартная документация по командам терминала:

В той же папке, где лежит файл манифеста docker-compose.yml:

docker Узнать имя и/или ID контейнера (+ docker-compose)

Есть разные способы

docker Имена и id контейнеров

Используя основную команду докера можно глянуть запущенные процессы:

docker ps 

Или все когда-либо запускавшиеся:

docker ps -a

docker-compose Имена контейнеров

Перейдите в папку с манифестом docker-compose.yml и выполните команду:

docker-compose ps

docker Как подключиться к терминалу контейнера

Через bash

Для подключения к контейнеру в терминале:

docker exec -it имяИлиIdконтейнера bash

Чтобы узнать имя контейнера или id используйте команду докера или докер-композа для имени.

Через shell

Если bash не установлен, то пробуем shell:

docker exec -it имяИлиIdконтейнера sh

debconf: delaying package configuration, since apt-utils is not installed ubunutu 18

debconf: delaying package configuration, since apt-utils is not installed ubunutu 18

и ошибка

debconf: unable to initialize frontend: Dialog

Была попытка решить установкой этих пакетов в начале:

ARG NOCACHE=0
RUN apt-get update
ARG NOCACHE=1

RUN apt-get install -y --no-install-recommends  apt-utils dialog
RUN apt-get install -y software-properties-common

ERROR: Couldn't connect to Docker daemon at http+docker://localhost - is it running? Ошибка

ERROR: Couldn't connect to Docker daemon at http+docker://localhost - is it running?

Решение: если нет прав на запуск контейнера

Скорее всего у вас нет прав на запуск контейнера, в этой ситуации можно или использовать sudo? или добавить текущего пользователя в группу docker:

sudo usermod -aG docker имявашегопользователя

Чтобы не вводить имя в линус можно использовать переменную среды окружения:

ERROR: Version in "./docker-compose.yml" is unsupported Ошибка

docker-compose up
ERROR: Version in "./docker-compose.yml" is unsupported. You might be seeing this error because you're using the wrong Compose file version. Either specify a version of "2" (or "2.0") and place your service definitions under the `services` key, or omit the `version` key and place your service definitions at the root of the file to use version 1.
For more on the Compose file format versions, see https://docs.docker.com/compose/compose-...

docker: Error response from daemon: pull access denied for При запуске контейнера

Решение

Используйте

docker ps -a

чтобы узнать id нужных контейнеров

И затем их можно запустить с указанием этих id через пробел, например:

docker start 17d9a55640d9 c541a3454764 d2667c9fbd75

(в моем случае ошибка была вызвана тем, что вместо docker run была использована команда docker start)

docker Got permission denied while trying to connect to the Docker daemon socket at .....permission denied Ошибка (root)

В ответ на команду получаем ошибку:

docker info
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock:...connect: permission denied

Решение

По умолчанию docker работает под суперпользователем, надо либо создавать спец. группу либо использовать sudo перед командой, работающей с докером.

Pages

Subscribe to RSS - docker