docker使用筆記

項目部署時用到了docker,如下分享了我在實踐中使用的指令,和對docker一些我的的理解(※和字體加劇部分)
本文選擇使用網易的鏡像源: https://c.163.com/hub#/m/home/
服務器環境nginx+uwsgi+django+celery+supervisor
 
1,經常使用指令:
  -拉取鏡像到本地庫:docker pull hub.c.163.com/public/centos:6.7-tools 
  -新建Dockerfile文件(內容見2)
  -依據Dockerfile去創建定製的鏡像:docker build -t myproject/ubuntu:16.04 . (Dockerfile所在路徑)
  -鏡像操做方法:
  1,查看全部鏡像:docker images 
  2,查找鏡像:docker search image_name
  3,刪除鏡像:docker rmi image_name
  -容器的操做方法:
  1,新建一個容器:docker run -d -it -p 80:80 -v /host_path:/container_path wlxy_quant_p/ubuntu:16.04(-p -v 可指定多個)
    ※雖然容器有持久化(中止後數據不丟失),可是建議容器中所用數據不要保存在容器中,將全部data和配置目錄都要外掛到宿主機上
  2,查看全部容器:docker ps -a (不加參數就是查看正在運行的容器)
  3,刪除全部容器:docker rm `docker ps -a -q`  (刪除單個容器:docker rm Name/ID )
  4,中止、啓動、殺死一個容器 :docker stop/start/kill Name/ID 
  5,容器中取日誌:docker logs Name/ID  
  6,列出容器裏面被改變的文件或者目錄,list列表會顯示出三種事件,A 增長的,D 刪除的,C 被改變的:docker diff Name/ID  
  7,顯示一個運行的容器裏面的進程信息 :docker top Name/ID  
  8,從容器裏面拷貝文件/目錄到本地一個路徑 :docker cp Name/ID:/container_path to_path  
  9,進入正在運行的容器:docker exec -it ID /bin/bash 
  10,將容器導出爲鏡像:docker commit ID image_name
  11,將鏡像導出爲文件 :sudo docker save -o paasbase.tar dockerhub.m.com/paasbase:v1.0
  12,將文件導入爲鏡像 :docker load -i paasbase.tar
      13,  刪除全部鏡像:docker rmi $(docker images -q)
 
  
2,Dockerfile內容
※其實鏡像至關於類,而容器至關於對象,對象能夠變動和添加本身的屬性等
※因此我的認爲鏡像主要作一些通用內容安裝和配置,好比python服務器鏡像都須要安裝web框架等其餘通用的庫,不用像下面這樣把全部配置所有作到鏡像裏
※如下部分指令是能夠在容器運行後再進入容器執行
FROM  hub.c.163.com/public/ubuntu:16.04-tools #源鏡像
MAINTAINER adam.ding , dxf813@126.com

COPY requirements.txt /tmp/ #拷貝python須要安裝文件
RUN apt-get update && apt-get -y install python3-pip libmysqlclient-dev python3-dev  #python3-pip網易源沒有
RUN echo "deb http://mirrors.163.com/ubuntu/ precise main restricted universe multiverse" > /etc/apt/sources.list
RUN apt-get update  && apt-get install -y nginx redis-server git #下載一些基礎服務
RUN mkdir /root/.pip #home目錄
COPY pip.conf /root/.pip #拷貝更改的源配置文件
RUN pip3 install --upgrade pip
RUN pip3 install matplotlib #此處不能放入requirement 必須分別安裝
RUN pip3 install numpy
COPY nginx-start.conf /etc/supervisor/conf.d #拷貝nginx配置文件
RUN pip3 install pandas==0.17.1 
RUN pip3 install zipline==1.0.2
COPY uwsgi.ini /usr/local/etc/#拷貝uwsgi配置文件
RUN pip3 install uwsgi
COPY vue-dist /usr/local/src/dzh/#將打包好的vue項目文件夾拷貝到指定目錄
RUN pip3 install --requirement /tmp/requirements.txt
RUN mkdir /usr/local/src/dzh
WORKDIR /usr/local/src/dzh #切換到目錄
RUN git clone https://username:pad@xx.com/xx.git
WORKDIR /usr/local/src/dzh/squant_tools
RUN python3 setup.py build_ext --inplace#安裝系統
WORKDIR /etc/nginx/sites-enabled/
RUN mv default default.bb #將默認讀取配置文件更名
COPY nginx.conf .
WORKDIR /usr/local/src/dzh/simple_login
RUN python3 setup.py install
COPY squant_tools.conf /etc/supervisor/conf.d
CMD supervisord  /etc/supervisor/supervisord.conf
  ENV FC_SERVER server.xx.com.cn #配置環境變量 

 

3,部分其餘文件的配置vue

uwsgi.ini內容:
[uwsgi]
http-socket    = :8000
plugin    = python3
wsgi-file = /usr/local/src/dzh/squant_tools/quant/wsgi.py
chdir= /usr/local/src/dzh/squant_tools
module   = quant.wsgi
processes = 4
master=True
vacuum=True

使用supervisor啓動如下進程
squant_tools.conf內容:
[program:squant_tools]
command = uwsgi /usr/local/etc/uwsgi.ini
stopsignal=KILL
autostart=true
autorestart=true
stdout_logfile=/usr/local/etc/supervisor_stdout.log
stderr_logfile=/usr/local/etc/supervisor_stderr.log
redirect_stderr=true


nginx-start.conf內容:
[program:nginx]
command = service nginx start
process_name=%(program_name)s
numprocs=4                    ; 啓動幾個進程
autostart=true                ; 隨着supervisord的啓動而啓動
autorestart=true              ; 自動重啓。。固然要選上了
startretries=10               ; 啓動失敗時的最多重試次數
stopsignal=KILL               ; 用來殺死進程的信號
stopwaitsecs=10               ; 發送SIGKILL前的等待時間
redirect_stderr=true          ; 重定向stderr到stdout


requirements.txt內容:
django
mysqlclient
psycopg2
cython
pymssql
celery
django-cors-headers
click
cn-stock-holidays
redis
zipline_cn_databundle
相關文章
相關標籤/搜索