Docker не может переадресовать порт в контейнер, возвращает ошибку сокета 99

#python-2.7 #docker #sockets #containers #port

#python-2.7 #docker #сокеты #контейнеры #порт

Вопрос:

Я пытаюсь запустить контейнер из образа dockerfile для проекта, над которым я работаю. Я могу создать образ из файла dockerfile, но каждый раз, когда я пытаюсь создать контейнеры, он сталкивается с постоянной проблемой сокета.

Информация о системе

ОС: Windows 10 Home Edition, версия 2004, сборка 19041

Docker: 2.4.0.0

Python: 2.7

Docker Toolbox: 19.0.3.1

Git: 2.28.0

VirtualBox: 6.0.24

Что я ожидаю, произойдет

Контейнер, который будет создан и запущен после ввода команд.

Что происходит вместо

Контейнер создан, но не может быть запущен и возвращает ошибку сокета.

Что я делаю

После перехода к каталогу я выполняю следующее. Powershell запускается в режиме администратора. После попытки сделать то же самое для Docker я столкнулся с проблемами, из-за которых он может запускаться, только если я разрешу ему запускаться при входе в систему. Я не уверен, смогу ли я запустить его как администратор.

docker build . -t image_name

После подтверждения того, что образ создан, я пытаюсь

docker run --publish 8000:8888 --detach --name container_name image_name

На этом этапе контейнер собран, но не может быть запущен, и возвращает следующие журналы.

 Missing privilege separation directory: /var/run/sshd

[I 14:53:32.778 NotebookApp] Writing notebook server cookie secret to /root/.local/share/jupyter/runtime/notebook_cookie_secret

Traceback (most recent call last):

File "/usr/local/bin/jupyter-notebook", line 8, in <module>

sys.exit(main())

File "/usr/local/lib/python2.7/dist-packages/jupyter_core/application.py", line 270, in launch_instance

return super(JupyterApp, cls).launch_instance(argv=argv, **kwargs)

File "/usr/local/lib/python2.7/dist-packages/traitlets/config/application.py", line 663, in launch_instance

app.initialize(argv)

File "<decorator-gen-7>", line 2, in initialize

File "/usr/local/lib/python2.7/dist-packages/traitlets/config/application.py", line 87, in catch_config_error

return method(app, *args, **kwargs)

File "/usr/local/lib/python2.7/dist-packages/notebook/notebookapp.py", line 1630, in initialize

self.init_webapp()

File "/usr/local/lib/python2.7/dist-packages/notebook/notebookapp.py", line 1407, in init_webapp

self.http_server.listen(port, self.ip)

File "/usr/local/lib/python2.7/dist-packages/tornado/tcpserver.py", line 143, in listen

sockets = bind_sockets(port, address=address)

File "/usr/local/lib/python2.7/dist-packages/tornado/netutil.py", line 168, in bind_sockets

sock.bind(sockaddr)

File "/usr/lib/python2.7/socket.py", line 228, in meth

return getattr(self._sock,name)(*args)

socket.error: [Errno 99] Cannot assign requested address

Missing privilege separation directory: /var/run/sshd

Traceback (most recent call last):

File "/usr/local/bin/jupyter-notebook", line 8, in <module>

sys.exit(main())

File "/usr/local/lib/python2.7/dist-packages/jupyter_core/application.py", line 270, in launch_instance

return super(JupyterApp, cls).launch_instance(argv=argv, **kwargs)

File "/usr/local/lib/python2.7/dist-packages/traitlets/config/application.py", line 663, in launch_instance

app.initialize(argv)

File "<decorator-gen-7>", line 2, in initialize

File "/usr/local/lib/python2.7/dist-packages/traitlets/config/application.py", line 87, in catch_config_error

return method(app, *args, **kwargs)

File "/usr/local/lib/python2.7/dist-packages/notebook/notebookapp.py", line 1630, in initialize

self.init_webapp()

File "/usr/local/lib/python2.7/dist-packages/notebook/notebookapp.py", line 1407, in init_webapp

self.http_server.listen(port, self.ip)

File "/usr/local/lib/python2.7/dist-packages/tornado/tcpserver.py", line 143, in listen

sockets = bind_sockets(port, address=address)

File "/usr/local/lib/python2.7/dist-packages/tornado/netutil.py", line 168, in bind_sockets

sock.bind(sockaddr)

File "/usr/lib/python2.7/socket.py", line 228, in meth

return getattr(self._sock,name)(*args)

socket.error: [Errno 99] Cannot assign requested address

Missing privilege separation directory: /var/run/sshd

Traceback (most recent call last):

File "/usr/local/bin/jupyter-notebook", line 8, in <module>

sys.exit(main())

File "/usr/local/lib/python2.7/dist-packages/jupyter_core/application.py", line 270, in launch_instance

return super(JupyterApp, cls).launch_instance(argv=argv, **kwargs)

File "/usr/local/lib/python2.7/dist-packages/traitlets/config/application.py", line 663, in launch_instance

app.initialize(argv)

File "<decorator-gen-7>", line 2, in initialize

File "/usr/local/lib/python2.7/dist-packages/traitlets/config/application.py", line 87, in catch_config_error

return method(app, *args, **kwargs)

File "/usr/local/lib/python2.7/dist-packages/notebook/notebookapp.py", line 1630, in initialize

self.init_webapp()

File "/usr/local/lib/python2.7/dist-packages/notebook/notebookapp.py", line 1407, in init_webapp

self.http_server.listen(port, self.ip)

File "/usr/local/lib/python2.7/dist-packages/tornado/tcpserver.py", line 143, in listen

sockets = bind_sockets(port, address=address)

File "/usr/local/lib/python2.7/dist-packages/tornado/netutil.py", line 168, in bind_sockets

sock.bind(sockaddr)

File "/usr/lib/python2.7/socket.py", line 228, in meth

return getattr(self._sock,name)(*args)

socket.error: [Errno 99] Cannot assign requested address
  

Я подтвердил, что порт 8888 отображается в dockerfile, и попытался сопоставить его с 8080 с теми же результатами. Я подтвердил, что порты 8000, 8888 и 8080 открыты на моем компьютере, а также попытался сопоставить их с IP-адресом, который я обнаружил связанным с docker (127.0.0.1). Я также пытался использовать команды create and run в Docker, но они тоже не работают.

Вот ссылка на файл dockerfile.Я не редактировал его, кроме как пробовать разные порты.

Извините за стену текста!

Комментарии:

1. Попробуйте запустить docker от имени администратора, а также терминал, на котором вы выполняете эти команды

2. Я знаю, что запускаю powershell от имени администратора, я тоже попробую Docker. Я обновлю вопрос в зависимости от того, как он идет.

3. Поэтому Docker не будет запускаться, если я не запустил его при входе в систему. Как только я получил эту работу, я все еще сталкиваюсь с теми же проблемами. Я проверил, могу ли я запустить любой другой контейнер, и я смог запустить начальный контейнер, который предоставляет docker. Я попробовал несколько других портов, а также убедился, что jupyter notebook находится на порту 8888. На данный момент я чувствую, что что-то в dockerfile мешает мне добиться успеха.

4. Можете ли вы добавить свой dockerfile…. убедитесь, что в нем есть строка с RUN mkdir /var/run/sshd

5. Я прикрепил ссылку на файл dockerfile на Github. Я проверил дважды и не вижу команду, которую вы указали. Если это так, где я должен ее ввести?