docker製作flask 鏡像

構建python鏡像環境

1.寫好Dockerfile文件,如下:


FROM centos  #需要依賴的基礎鏡像

ENV LANG en_US.UTF-8  #設置環境變量
#設置時區,容器啓動的默認時間與北京時間不一致,需要進行設置
RUN ln -s -f /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
#更新索引
RUN yum update -y && yum install telnet -y   ##update必須這樣升級,yum update過程中需要確認
RUN yum install -y python
RUN yum install -y python-pip

  1. 先製作python鏡像
docker build -t python2.7:v1.0  -f /root/makeImage/python2.7  .

在這裏插入圖片描述
解決 No package python-pip available問題
因爲沒有此rpm包,此包包含在epel源裏面
輸入

rpm -ivh http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm

之後再安裝pip,

yum install python-pip -y

如果在鏡像中沒有安裝pip,或者因爲pip安裝超時問題。可以在容器裏進行安裝
使用pip安裝腳本

 curl "https://bootstrap.pypa.io/get-pip.py" -o "get-pip.py"
 python get-pip.py
 pip -V   /  pip3 -V        # For specific python version
  1. 查看製作的python鏡像
    在這裏插入圖片描述
  2. 運行鏡像容器
docker run -it ff1360e242a2 /bin/bash

構建flask環境鏡像

  1. 寫flask的Dockerfile文件
#基礎鏡像使用剛剛構建的python鏡像
FROM python2.7:v1.1
#設置環境變量,因爲flask運行要export LC_ALL=C.UTF-8和
##export LANG=C.UTF-8,這裏我們設置到環境變量中
ENV LC_ALL=zh_CN.UTF-8
ENV LANG=zh_CN.UTF-8
#設置運行的app及運行環境
ENV FLASK_APP=app
ENV FLASK_ENV=development
RUN curl "https://bootstrap.pypa.io/get-pip.py" -o "get-pip.py"  //安裝pip
RUN python get-pip.py
RUN pip install flask   #安裝flask包
RUN mkdir /home/vnfm     #創建一個目錄用於存放項目
WORKDIR /home            ##設置容器的工作目錄
VOLUME /home/vnfm       ##設置綁定的目錄
EXPOSE 80          ##暴露80端口
ENTRYPOINT ["flask", "run", "-h", "0.0.0.0", "-p", "80"]    ##設置容器啓動時就啓動服務

  1. 製作flask鏡像
 docker build -t flask:v1.1 -f /root/makeImage/flask  .

7.製作完成後測試

docker run -it -v /root/docker/flask:/home/vnfm -p 8080:80 flask:v1.1
或者
docker run --name nfvo -d 4cb8110f4da3
# 在默認情況下,Docker會自動生成一個隨機的名稱。如果想指定一個名稱,那麼在啓動容器時,
#通過參數--name就可以實現, -d 後可以是鏡像id或者 鏡像名稱
docker ps -a   //查看容器id
docker exec -it 99fc067dffa2 /bin/bash   // 進入容器內部

8.刪除容器

docker ps -a
docker rm 容器id 
  1. 刪除鏡像,先刪除容器再刪除鏡像
    先執行第八步
docker images
docker rmi 鏡像id
  1. 刪除前需要保證容器是停止的 stop

  2. 需要注意刪除鏡像和容器的命令不一樣。 docker rmi ID ,其中 容器(rm) 和 鏡像(rmi)

  3. 順序需要先刪除容器

  1. 停止和重啓容器
docker  stop 容器id
docker  restart 容器id
  1. 使用鏡像啓動容器 docker run -it 鏡像名或id /bin/bash
  2. 通過容器id進入容器 docker exec -it 容器id /bin/bash
  1. 上傳文件到docker容器中
    先將本地文件 rz 到相關服務器上, 如果rz 後的文件被刪除,可以試試 rz -be,
docker cp 本地文件路徑 ID全稱:容器路徑

docker cp vnfm 99fc067dffa2:/home/vnfm/
  1. 如果語言環境變量出現問題
    在這裏插入圖片描述
    執行:
localedef -c -f UTF-8 -i zh_CN zh_CN.utf8
  1. 刪除狀態終止的容器
docker ps -a|grep Exited|grep hours|awk '{print $1}    //列出id
docker rm $(docker ps -a|grep Exited|grep hour|awk '{print $1}')
  1. 給鏡像打標籤
docker tag  舊容器名:版本號   新容器名:版本號
docker tag base_nfvo:v2.2 base-nfvo:v1.0

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章