Docker Hub镜像加速器

  1. 安装docker: curl -sSL http://acs-public-mirror.oss-cn-hangzhou.aliyuncs.com/docker-engine/internet | sh -
  2. 参考这篇注册阿里开发者,拿到专属加速器地址,类似于:https://xxxx.mirror.aliyuncs.com
  3. 参考Docker加速器下面的说明配置并重启docker,我是ubuntu 16.04,如下:
sudo mkdir -p /etc/systemd/system/docker.service.d
sudo tee /etc/systemd/system/docker.service.d/mirror.conf <<-'EOF'
[Service]
ExecStart=/usr/bin/docker daemon -H fd:// --registry-mirror=https://xxxx.mirror.aliyuncs.com
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

写Dockerfile

# image for portfolio
FROM ubuntu:16.04
MAINTAINER wwy version: 0.1 ENV LD_LIBRARY_PATH=/usr/local/lib COPY ./sources.list /etc/apt/
RUN depends='make r-base r-base-dev' &&\
apt-get update &&\
apt-get install -y $depends #anaconda
COPY ./Anaconda2-4.2.0-Linux-x86_64.sh /tmp/
RUN bash /tmp/Anaconda2-4.2.0-Linux-x86_64.sh -b
ENV PATH /root/anaconda2/bin:$PATH #ta-lib
COPY ./ta-lib-0.4.0-src.tar.gz /tmp/
RUN cd /tmp &&\
tar -xzf ta-lib-0.4.0-src.tar.gz &&\
cd /tmp/ta-lib &&\
./configure &&\
make &&\
make install #pip
COPY ./pip.conf /root/.config/pip/
COPY ./SuiteSparse-4.5.3.tar.gz /tmp/
ENV CVXOPT_SUITESPARSE_SRC_DIR=/tmp/SuiteSparse
RUN cd /tmp &&\
tar xzf SuiteSparse-4.5.3.tar.gz &&\
pip install celery flasgger flask rpy2 arch pymongo grpc protobuf cvxopt ta-lib grpcio seaborn #Qi4Trade
COPY Qi4Trade /tmp/Qi4Trade
RUN cd /tmp/Qi4Trade/trunk &&\
python setup.py install #SITxuk
COPY SITxuk /tmp/SITxuk
RUN cd /tmp &&\
R CMD build SITxuk &&\
R CMD INSTALL SITxuk_0.1.0.tar.gz #ndparser
COPY ndparser.so /root/anaconda2/lib/python2.7/site-packages/
COPY ndparser-1.0-py2.7.egg-info /root/anaconda2/lib/python2.7/site-packages/ #clear
RUN apt-get purge -y --auto-remove make &&\
apt-get clean &&\
rm -rf /tmp/* &&\
rm -rf /var/lib/apt/lists/* #porfolio-web
COPY portfolio-web /root/portfolio-web
COPY libgomp.so.1.0.0 /root/anaconda2/lib/
ENV FLASK_SETTINGS=/root/portfolio-web/trunk/api/dev
ENV PYTHONPATH=/root/portfolio-web/trunk
WORKDIR /root/portfolio-web/trunk
EXPOSE 8686
CMD ["python","api/server.py"] # Add Tini. Tini operates as a process subreaper for jupyter. This prevents kernel crashes.
ENV TINI_VERSION v0.6.0
ADD https://github.com/krallin/tini/releases/download/${TINI_VERSION}/tini /usr/bin/tini
RUN chmod +x /usr/bin/tini
ENTRYPOINT ["/usr/bin/tini", "--"]
EXPOSE 8888
CMD ["jupyter","notebook","--port=8888","--no-browser","--ip=0.0.0.0"]

Dockerfile要注意的点

  1. 用&&\把所有命令串起来在一个Run里执行,避免产生太多层
  2. 可以把/etc/apt/sources.list拷过去,加速apt-get install; 把pip.conf拷到/root/.config/pip/pip.conf,指向douban的源,加速pip install
  3. 所有安装都是silent mode, 包括: apt-get -y、anaconda -b等
  4. 报pip not found: anaconda不会自动把bin加入PATH,需要手工加:ENV PATH /root/anaconda2/bin:$PATH
  5. 每个阶段的命令写在一起,从COPY+ENV+RUN,这样万一下面的COPY改了,还能重用以前的cache
  6. COPY要这么写:COPY ta-lib /tmp/ta-lib,如果只是COPY ta-lib /tmp/只会把ta-lib里面的内容拷过去
  7. 国内的镜像源有时apt-get install的时候会报"Hash Sum mismatch"的错误,不覆盖/etc/apt/sources.list,用官方的就好
  8. 很多server比如nginx、jupyter都默认监听localhost,要改成0.0.0.0,才能在容器外访问

build + export image

docker build -t test:v0.1 .
docker run -i -p 8686:8686 test:v0.1
docker save test:v0.1 | gzip > portfolio.tar.zip
//复制到其他机器上,导入
docker load -i portfolio.tar.zip

最新文章

  1. swift调用oc语言文件,第三方库文件或者自己创建的oc文件——简书作者
  2. JQuery 技巧积累与总结
  3. Python基础:模块
  4. HTML5实现屏幕手势解锁(转载)
  5. Silverlight button 图片切换样式
  6. 周赛-The Number Off of FFF 分类: 比赛 2015-08-02 09:27 3人阅读 评论(0) 收藏
  7. ESXi cron jobs
  8. mysql导出查询结果到csv方法
  9. Struts+Spring+Hibernate进阶开端(一)
  10. linux之iptable案例
  11. 201521123079《java程序设计》第6周学习总结
  12. Ubuntu TensorFlow 源码 Android Demo的编译运行
  13. Android读取网络图片到本地的简约的实现
  14. linux下如何查看某软件是否已安装
  15. diff 命令用法--如何打补丁【原创--学习笔记】
  16. 你不知道的JavasScript上篇&#183;第四章&#183;混合对象&#183;类
  17. 【BZOJ 3036】 3036: 绿豆蛙的归宿 (概率DP)
  18. 基于R实现k-means法与k-medoids法
  19. java网络编程三次握手四次挥手
  20. Django基本目录详解

热门文章

  1. webmagic爬虫抓取工作室成员博客
  2. line-height的高度机理
  3. HDU 4348 To the moon(主席树 区间更新)题解
  4. IntelliJ IDEA 和 Pycharm 破解
  5. 在action中进行文件下载,下载时运行不报错,可是也不下载
  6. tensorboard
  7. 给web请求加遮罩动画
  8. Ubuntu - apt -commands
  9. 另类AOP设计
  10. java,sort的数组降序