想使用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 安全性設定