構建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
- 先製作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
- 查看製作的python鏡像
- 運行鏡像容器
docker run -it ff1360e242a2 /bin/bash
構建flask環境鏡像
- 寫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"] ##設置容器啓動時就啓動服務
- 製作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
- 刪除鏡像,先刪除容器再刪除鏡像
先執行第八步
docker images
docker rmi 鏡像id
刪除前需要保證容器是停止的 stop
需要注意刪除鏡像和容器的命令不一樣。 docker rmi ID ,其中 容器(rm) 和 鏡像(rmi)
順序需要先刪除容器
- 停止和重啓容器
docker stop 容器id
docker restart 容器id
- 使用鏡像啓動容器 docker run -it 鏡像名或id /bin/bash
- 通過容器id進入容器 docker exec -it 容器id /bin/bash
- 上傳文件到docker容器中
先將本地文件rz
到相關服務器上, 如果rz 後的文件被刪除,可以試試rz -be
,
docker cp 本地文件路徑 ID全稱:容器路徑
docker cp vnfm 99fc067dffa2:/home/vnfm/
- 如果語言環境變量出現問題
執行:
localedef -c -f UTF-8 -i zh_CN zh_CN.utf8
- 刪除狀態終止的容器
docker ps -a|grep Exited|grep hours|awk '{print $1} //列出id
docker rm $(docker ps -a|grep Exited|grep hour|awk '{print $1}')
- 給鏡像打標籤
docker tag 舊容器名:版本號 新容器名:版本號
docker tag base_nfvo:v2.2 base-nfvo:v1.0