#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. Я проверил дважды и не вижу команду, которую вы указали. Если это так, где я должен ее ввести?