天天看點

docker建構python鏡像_docker python 鏡像制作

容器使用沙箱機制,互相隔離,優勢在于讓各個部署在容器的裡的應用互不影響,獨立運作,提供更高的安全性。

編寫Dockerfile檔案

FROM python:3.6.8

RUN mkdir /code \

&&apt-get update \

COPY app /code

COPY requirements.txt /code

RUN pip install -r /code/requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

WORKDIR /code

CMD [“/bin/bash”,“run.sh”]

FROM:作用是指定一個基礎鏡像來進行建構流程。比如上面指定了python3.6.8作為基礎鏡像,後續的一切操作都會以這個鏡像作為基礎來進行定制,如果不存在,會從官網下載下傳。FROM必須是Dockerfile首個指令。

RUN :Dockerfile執行指令最核心的部分,在建構鏡像的過程中執行參數。

COPY:複制檔案。COPY

WORKDIR:工作目錄,若不存在,會自動幫你建立。

CMD:容器啟動指令,Docker 不是虛拟機,容器就是程序。既然是程序,那麼在啟動容器的時候,需要指定所運作的程式及參數。 CMD 指令就是用于指定預設的容器主程序的啟動指令。如果docker run指定了指令參數,這裡的cmd将不會起作用。例如docker run -it -name redis docker.io/redis /bin/bash,啟動容器不會執行dockerfile中的cmd,因為docker run已經指定了指令參數/bin/bash。

建構鏡像

docker bulid -t  pythonweb .

指令建構一個名字為 pythonweb 的鏡像,建構完成後傳回一個鏡像id xxx 。

-t:用來指定image的名字

.:工作目錄,若不存在,小圓點 “.” 代表目前目錄

運作容器

docker run -it -p 5000:5000 -v /opt/code/pythonweb:/code –name pyweb  –privileged=true pythonweb

-p:把容器的5000端口映射到主控端6500

-v:主機的目錄/opt/code/pythonweb映射到容器的目錄/code

–name:給容器起個名字pyweb,pythonweb是剛剛建構的鏡像

–privileged=true:執行容器内檔案需要的權限