簡體   English   中英

在 docker 上運行 conda 的 jupyter

[英]running conda's jupyter on docker

我正在使用 docker image continuumio/anaconda3 並想通過瀏覽器使用 conda 啟動 jupyter notebook 服務器......

docker run -i -t -p 8888:8888 continuumio/anaconda3 /bin/bash -c "/opt/conda/bin/conda install jupyter -y --quiet && mkdir /opt/notebooks && /opt/conda/bin/jupyter notebook --notebook-dir=/opt/notebooks --ip='*' --port=8888 --no-browser"

這導致...

Package plan for installation in environment /opt/conda:

The following packages will be UPDATED:

    anaconda: 5.0.1-py36hd30a520_1  --> custom-py36hbbc8b67_0
    conda:    4.3.30-py36h5d9f9f4_0 --> 4.4.10-py36_0        
    jupyter:  1.0.0-py36h9896ce5_0  --> 1.0.0-py36_4         
    pycosat:  0.6.2-py36h1a0ea17_1  --> 0.6.3-py36h0a5515d_0 

[I 14:59:00.461 NotebookApp] Writing notebook server cookie secret to /root/.local/share/jupyter/runtime/notebook_cookie_secret
[W 14:59:00.475 NotebookApp] WARNING: The notebook server is listening on all IP addresses and not using encryption. This is not recommended.
[I 14:59:00.498 NotebookApp] JupyterLab alpha preview extension loaded from /opt/conda/lib/python3.6/site-packages/jupyterlab
JupyterLab v0.27.0
Known labextensions:
[I 14:59:00.499 NotebookApp] Running the core application with no additional extensions or settings
[C 14:59:00.502 NotebookApp] Running as root is not recommended. Use --allow-root to bypass.

如果我使用

$ docker run -p 8888:8888 -i -t continuumio/anaconda3 /bin/bash
root@083f8fbb5d3b:/# jupyter notebook

它給...

[I 15:00:52.496 NotebookApp] Writing notebook server cookie secret to /root/.local/share/jupyter/runtime/notebook_cookie_secret
Traceback (most recent call last):
  File "/opt/conda/bin/jupyter-notebook", line 11, in <module>
    sys.exit(main())
  File "/opt/conda/lib/python3.6/site-packages/jupyter_core/application.py", line 267, in launch_instance
    return super(JupyterApp, cls).launch_instance(argv=argv, **kwargs)
  File "/opt/conda/lib/python3.6/site-packages/traitlets/config/application.py", line 657, in launch_instance
    app.initialize(argv)
  File "<decorator-gen-7>", line 2, in initialize
  File "/opt/conda/lib/python3.6/site-packages/traitlets/config/application.py", line 87, in catch_config_error
    return method(app, *args, **kwargs)
  File "/opt/conda/lib/python3.6/site-packages/notebook/notebookapp.py", line 1296, in initialize
    self.init_webapp()
  File "/opt/conda/lib/python3.6/site-packages/notebook/notebookapp.py", line 1120, in init_webapp
    self.http_server.listen(port, self.ip)
  File "/opt/conda/lib/python3.6/site-packages/tornado/tcpserver.py", line 142, in listen
    sockets = bind_sockets(port, address=address)
  File "/opt/conda/lib/python3.6/site-packages/tornado/netutil.py", line 197, in bind_sockets
    sock.bind(sockaddr)
OSError: [Errno 99] Cannot assign requested address

我應該如何運行 Jupyter 筆記本?

謝謝達斯伯恩先生,

$ docker run -p 8888:8888 -i -t continuumio/anaconda3 /bin/bash

jupyter notebook --ip=0.0.0.0 --port=8888 --allow-root

並且您已經啟動並運行了 Jupyter 筆記本。

按 ctrl 並單擊終端上的“使用令牌登錄”鏈接,如下所示,

http://0.0.0.0:8888/?token= ...

http://127.0.0.1:8888/?token= ...

使用此線程中的答案,我想出了一個單行代碼,用於運行帶有最新 Anaconda docker 映像 (4.0) 的 Jupyter 筆記本,它將與容器共享您的當前目錄,從而將筆記本保存在您的主機上。

docker run -t --rm -p 8888:8888 -v $(PWD):/opt/notebooks continuumio/anaconda /bin/bash -c "/opt/conda/bin/jupyter notebook --ip=0.0.0.0 --port=8888 --notebook-dir=/opt/notebooks --allow-root --no-browser"

請注意,通過將當前工作目錄映射為容器中的卷( -v $(PWD):/opt/notebooks ),然后將其指定為 Jupyter 的筆記本目錄( --notebook-dir=/opt/notebooks ),您不需要制作目錄。 Docker 會自動為您執行此操作並與您的主機共享。 另請注意,通過將--rm添加到調用中,一旦您關閉 Jupyter 服務器,docker 將刪除容器,以便您以后不必清理它們。

您還可以將其用作.bash_profile的別名,如下所示:

alias jupyter='docker run -t --rm -p 8888:8888 -v $(PWD):/opt/notebooks continuumio/anaconda /bin/bash -c "/opt/conda/bin/jupyter notebook --ip=0.0.0.0 --port=8888 --notebook-dir=/opt/notebooks --allow-root --no-browser"'

然后你可以使用:

$ jupyter

任何時候你想使用jupyter notebook使用當前目錄作為你的 notebook 文件夾。 (希望這對某人有幫助)

要在不進入 Docker 容器的情況下運行 Jupyter Notebook,請執行以下操作:

  1. 獲取 docker 鏡像

    docker pull continuumio/anaconda3

  2. 安裝並啟動 Jupyter Notebook

    docker run -i -t -p 8888:8888 continuumio/anaconda3 /bin/bash -c "/opt/conda/bin/conda install jupyter -y --quiet && mkdir /opt/notebooks && /opt/conda/bin/jupyter notebook --notebook-dir=/opt/notebooks --ip='*' --port=8888 --no-browser --allow-root"

    請注意,我們正在傳遞--allow-root標志。

  3. 安裝后,筆記本服務器應該顯示一個帶有令牌的鏈接:

在 Docker 中運行的 Jupyter Notebook

  1. 在您的瀏覽器上訪問提供的 URL 之一或使用localhost

http://localhost:8888/?token=YOUR_TOKEN

我參加聚會可能有點晚了,但是經過幾天的反復試驗,我已經將我正在使用的dockerdocker-compose文件放在一起。 我正在發布我的docker-composedockerenvironment.yaml文件。 希望前段時間能幫到像我這樣的可憐人:

docker文件:

FROM continuumio/miniconda3

# Update conda.
RUN conda update -n base -c defaults conda

# Create the environment:
COPY environment.yml .
RUN conda env create -f environment.yml

WORKDIR /home

ENTRYPOINT ["conda", "run", "-n", "myenv", "jupyter", "notebook", "--ip=0.0.0.0", "--port=8080", "--allow-root", "--NotebookApp.token=''", "--NotebookApp.password=''"]

docker-compose文件:

version: '3'

services:
  miniconda:
    container_name: 'jupyter_docker'
    build: '.'
    ports:
      - 8080:8080
    volumes:
      - $PWD/files:/home

environment.yaml文件:

name: myenv
channels:
  - conda-forge
  - defaults
dependencies:
  - jupyter
  - python=3.8.2=hcf32534_0
  - pip:
    - datetime

使用 docker-compose 運行非常簡單,單個命令docker-compose up會創建鏡像(如果鏡像尚不存在)並設置一個容器。 從那里,只需轉到您的瀏覽器localhost:8080 完成后運行docker-compose down --rmi all --remove-orphans以刪除容器和圖像。

我在運行這個的 docker 上使用 anaconda

docker run -it --rm --name ds -p 8888:8888 jupyter/datascience-notebook

使用它並告訴我

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM