Ошибки Docker
Введение
В этой статье вы можете найти ошибки с которыми я встретился при работе с
Docker
Инструкции по работе с Docker можете прочитать
здесь
и
здесь
Bind for 0.0.0.0:80 failed: port is already allocated.
docker: Error response from daemon: driver failed programming external connectivity on endpoint web (8b4ccb280aa958668c714013462f1a84334118d41bbd5505e7bfdc23331c2ce5): Bind for 0.0.0.0:80 failed: port is already allocated.
Скорее всего у Вас уже запущен контейнер который слушает порт 80
Выполните
docker ps -a
Посмотрите какой контейнер из тех что Up использует порт 80 - это видно в столбце PORTS
Остановите его командой
docker stop имя_контейнера
Обратите внимание на то, что имя контейнера может не совпадать с именем образа. Вам нужен столбец NAMES
the input device is not a TTY
the input device is not a TTY. If you are using mintty, try prefixing the command with 'winpty'
Скорее всего вы пытаетесь запустить, например, ubuntu в docker под Windows . Например
docker exec -it myubuntu bash
Попробуйте последовать совету и выполнить
winpty docker exec -it myubuntu bash
ls: cannot access
ls: cannot access 'C:/Program Files/Git/': No such file or directory
Скорее всего у вас запущен, например, ubuntu в docker под Windows и вы пытаетесь выполнить какую-то команду внутри контейнера используя /
docker exec myubuntu ls /
или
docker exec myubuntu cat /data.txt
Попробуйте выполнить без /
docker exec myubuntu ls
или
docker exec myubuntu cat data.txt
Got permission denied
docker: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.40/containers/create: dial unix /var/run/docker.sock: connect: permission denied. See 'docker run --help'.
Возможно, пользователь который запускает docker run не состоит в группе docker.
Проверить есть ли группа docker можно командой
groups
andrei adm cdrom sudo dip plugdev lpadmin lxd sambashare docker
Если группа docker уже есть - переходите к следующему шагу. Если её нет - создайте командой
sudo groupadd docker
Нужно добавить пользователя в группу docker командой
sudo usermod -aG docker username
Осталось только перелогиниться и всё должно заработать
Если не помогло - выполните дополнительно
newgrp docker
Подробнее про администрирование пользователей и групп в Linux читайте в статье «Пользователи Linux»
unable to prepare context: context must be a directory
unable to prepare context: context must be a directory: /home/andrei/docker/Dockerfile
Обычно эта ошибка возникает при неудачной попытке явно указать какой
Dockerfile
нужно использовать для
сборки
контейнера.
Пример правильного указания докерфайла с помощью опции -f
docker build -t andrei-debian:1.0 -f Dockerfile-debian .
Подробности о сборке контейнеров читайте в статье docker build
debconf: unable to initialize frontend: Dialog debconf: (TERM is not set, so the dialog frontend is not usable.) debconf: falling back to frontend: Readline debconf: unable to initialize frontend: Readline debconf: (Can't locate Term/ReadLine.pm in @INC (you may need to install the Term::ReadLine module) (@INC contains: /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.30.0 /usr/local/share/perl/5.30.0 /usr/lib/x86_64-linux-gnu/perl5/5.30 /usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl/5.30 /usr/share/perl/5.30 /usr/local/lib/site_perl /usr/lib/x86_64-linux-gnu/perl-base) at /usr/share/perl5/Debconf/FrontEnd/Readline.pm line 7, <> line 18.) debconf: falling back to frontend: Teletype dpkg-preconfigure: unable to re-open stdin:
Configuring tzdata ------------------ Please select the geographic area in which you live. Subsequent configuration questions will narrow this down by presenting a list of cities, representing the time zones in which they are located. 1. Africa 6. Asia 11. System V timezones 2. America 7. Atlantic Ocean 12. US 3. Antarctica 8. Europe 13. None of the above 4. Australia 9. Indian Ocean 5. Arctic Ocean 10. Pacific Ocean Geographic area:
После ввода зависает