在docker容器中,安裝jupyter於ubuntu:14.04,由mac連線到running jupyter

想使用ubuntu:14.04基礎容器來做python程式prototype的工具,一方面,一些要使用的生資軟體只能在ubuntu環境下使用,另一方面,ubuntu:14.04算是很輕的小容器,希望讓最後的鏡像小一點。

這邊製作的容器主要是要使用bioawk和netMHC程式,所以dockerfile中會有安裝他的相關訊息。

這邊有幾個重點:

1. 安裝完所有jupyter需要的python library和ubuntu相關library
2. 在virtual environment中安裝jupyter
3. docker網路設置(port forwarding)
4. jupyter notebook網路設定(讓localhost以外的ip登入)

首先奉上dockerfile,裡面有所需的library

################################################################
# Dockerfile
# Version:          1
# Software:         BioAwk/Jupyter
# Software Version: 201703
# Description:      Basic image for Bioawk/Jupyter/Python3/plotly/numpy
# Provides:         autotools-dev|automake|cmake|curl|fuse|git|wget|zip|build-essential|pkg-config|python2.7|python-dev|python-pip|zlib1g-dev
#################################################################
# Source Image
FROM ubuntu:14.04

################## BEGIN INSTALLATION ######################

# apt update and install global requirements
RUN apt-get update     && \
    apt-get install -y software-properties-common && \
    apt-get install -y    \
        autotools-dev     \
        automake          \
        cmake             \
        curl              \
        fuse              \
        git               \
        wget              \
        zip               \
        build-essential   \
        gcc               \
        pkg-config        \
        csh               \
        tcsh              \
        byacc             \
        flex              \
        liblzma-dev       \
        lib1g-dev         \
        libblas-dev       \
        liblapack-dev     \
        gfortran          \
        libfreetype6-dev  \
        libpng-dev        \
        libjpeg8-dev
RUN apt-get install -y  python3\
                        python3-pip
                        python3-dev\
                        python3.4-venv
Copy /bioapps /bioapps
WORKDIR /bioapps/
ENV PATH /bioapps/netMHC-4.0:$PATH

WORKDIR /bioapps/bioawk-master
RUN make
ENV PATH /bioapps/bioawk-master:$PATH

CMD ["/bin/bash"]

# change workdir
WORKDIR /var/data
RUN chmod 777 /var/data
RUN python3 -m venv test
RUN . test/bin/activate && pip3 install --upgrade pip && pip3 install -vU setuptools && pip3 install jupyter
RUN . test/bin/activate && pip3 install numpy && pip3 install plotly
##################### INSTALLATION END #####################

# File Author / Maintainer
MAINTAINER weitinglin <weitinglin66@gmail.com>

裡面安裝的東西主要由python pip3相關的依賴、bioawk在make時的依賴。過程會創建一個
虛擬環境test,並且在裡面安裝jupyter,和會使用到的package。

接下來,在運行這個容器的時候,要把port口掛在出來。

docker run -p 8888:8888 -it netmhc:latest

接者,在執行jupyter的時候,要用下面的指定

jupyter notebook --allow-root --no-browser --ip="*"

進入安裝有jupyter的python virtual environment
source test/bin/activate

執行jupyter,因為在docker container中,會是root模式,所以使用allow-root,另外,因為不需要直接跳開視窗,所以使用no-browser,最後,一個關鍵動作 –ip="*",讓所有外來ip都可以進入。過程中,有一些小技巧,比如pip3設定出現問題了,該怎麼刪掉再重新裝一次,可以使用apt-get purget python3-pip,然後再重新安裝一次。然後,會需要瞭解一下docker port forwarding的原理。

參考文章:
How to install pip with Python 3?
make bioawk錯誤,需安裝的檔案
安裝jupyter在ubuntu上面
ValueError “Expected version spec” when installing local wheel via pip
How to install pyzmq for iPython Notebook in a Python 3 virtual environment?
Networking features in Docker for Mac
From inside of a Docker container, how do I connect to the localhost of the machine?
Using localhost for to access running container
Jupyer notebook 安全性設定

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s