Ошибки 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
Похожая ошибка
docker: Error response from daemon: driver failed programming external connectivity on endpoint quirky_khayyam (ee99ee75b322c083c0f2e34395785fa23d2217a7f21fb62c6acf9d6f10ffd68b): Error starting userland proxy: listen tcp4 0.0.0.0:5000: bind: address already in use.
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
Если и это не помогло выполните
sudo chmod 666 /var/run/docker.sock
На всякий случай перелогиньтесь.
Подробнее про администрирование пользователей и групп в 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:
После ввода зависает
docker.io : Depends: containerd
При попытке установить Docker в Ubuntu
sudo apt install docker.io
Возникает ошибка
Reading package lists... Done Building dependency tree Reading state information... Done Some packages could not be installed. This may mean that you have requested an impossible situation or if you are using the unstable distribution that some required packages have not yet been created or been moved out of Incoming. The following information may help to resolve the situation: The following packages have unmet dependencies: docker.io : Depends: containerd (>= 1.2.6-0ubuntu1~) E: Unable to correct problems, you have held broken packages.
Нужно обновить apt и установить containerd
sudo apt -y update
sudo apt -y upgrade
sudo apt -y install containerd
Reading package lists... Done Building dependency tree Reading state information... Done The following additional packages will be installed: runc The following packages will be REMOVED: containerd.io docker-ce The following NEW packages will be installed: containerd runc 0 upgraded, 2 newly installed, 2 to remove and 0 not upgraded. Need to get 36.9 MB of archives. After this operation, 45.6 MB disk space will be freed. Get:1 http://fi.archive.ubuntu.com/ubuntu focal-updates/main amd64 runc amd64 1.1.0-0ubuntu1~20.04.1 [3,892 kB] Get:2 http://fi.archive.ubuntu.com/ubuntu focal-updates/main amd64 containerd amd64 1.5.9-0ubuntu1~20.04.4 [33.0 MB] Fetched 36.9 MB in 5s (7,316 kB/s) (Reading database ... 254483 files and directories currently installed.) Removing docker-ce (5:20.10.18~3-0~ubuntu-focal) ... Warning: Stopping docker.service, but it can still be activated by: docker.socket Removing containerd.io (1.6.8-1) ... Selecting previously unselected package runc. (Reading database ... 254461 files and directories currently installed.) Preparing to unpack .../runc_1.1.0-0ubuntu1~20.04.1_amd64.deb ... Unpacking runc (1.1.0-0ubuntu1~20.04.1) ... Selecting previously unselected package containerd. Preparing to unpack .../containerd_1.5.9-0ubuntu1~20.04.4_amd64.deb ... Unpacking containerd (1.5.9-0ubuntu1~20.04.4) ... Setting up runc (1.1.0-0ubuntu1~20.04.1) ... Setting up containerd (1.5.9-0ubuntu1~20.04.4) ... Processing triggers for man-db (2.9.1-1) ...
docker run -d -p 5000:5000 productservice
docker: Error response from daemon: unable to find user andrei: no matching entries in passwd file.
При попытке установить Docker в Ubuntu
docker: Error response from daemon: unable to find user andrei: no matching entries in passwd file.
The current user is not in the 'docker-users' group
Если после установки Docker в Windows вы получаете ошибку
The current user is not in the 'docker-users' group. Add yourself to the 'docker-users' group and then log out and back in to Windows.
Исправить ситуацию можно добавив пользователя в группу docker-users из командной строки в режиме администратора
net localgroup docker-users "your-user-id" /ADD
Например:
net localgroup docker-users "AzureAD\Andrei" /ADD
Docker Desktop requires a newer WSL kernel version
Если после установки Docker в Windows вы получаете ошибку
Значит нужно обновить ядро WSL по этой инструкции.
exec /entrypoint.sh: exec format error
Error response from daemon: conflict: unable to delete 0ce0bf612c50 (must be forced) - image is referenced in multiple repositories
Если при попытке удалить образ вы получаете
Error response from daemon: conflict: unable to delete 0ce0bf612c50 (must be forced) - image is referenced in multiple repositories
Значит этот образ используется в нескольких местах.
Выполните
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE jenkins_nginx_mkdocs-mkdocs 1.0 0ce0bf612c50 10 minutes ago 181MB jenkins_nginx_mkdocs-mkdocs latest 0ce0bf612c50 10 minutes ago 181MB
Видно что IMAGE ID используется два раза:
jenkins_nginx_mkdocs-mkdocs:1.0
и
jenkins_nginx_mkdocs-mkdocs:latest
нужно удалять их по отдельности
docker rmi jenkins_nginx_mkdocs-mkdocs:latest
Untagged: jenkins_nginx_mkdocs-mkdocs:latest
Первое удаление отвязывает latest. Второе отвяжет 1.0 и удалит образ.
PS C:\Development\jenkins_nginx_mkdocs> docker rmi jenkins_nginx_mkdocs-mkdocs:1.0
Untagged: jenkins_nginx_mkdocs-mkdocs:1.0 Deleted: sha256:0ce0bf612c5034f803cfe42d7ac0688af9b880148a935ca6995265d0346821a0
Альтернативный способ force delete
docker rmi --force 0ce0bf612c50
РЕКЛАМА от Яндекса. Может быть недоступна в вашем регионе
Конец рекламы. Если там пусто считайте это рекламой моей телеги