docker 运行容器_Docker之运行 Django 容器
首先此篇筆記默認(rèn)你已經(jīng)安裝好了 Docker,并了解 Docker 的基礎(chǔ)概念,諸如鏡像、容器、以及他們之間的關(guān)系等。
如果不太了解,等我回頭了解清楚以后,可以再寫一篇文章闡述一下。(狗頭
當(dāng)然,對于這篇文章,你就算不是很了解相關(guān)概念也沒關(guān)系,照著我的步驟先敲一遍代碼,然后慢慢理解也可以。
本文的內(nèi)容大致如下幾步:
1、鏡像準(zhǔn)備
這里用的是 Python 3.6 版本的鏡像,通過如下命令下載:
docker pull python:3.6信息顯示完成以后,通過如下命令確認(rèn)已經(jīng)下載的所有鏡像:
docker image ls大致如下圖所示:
至此,我們的鏡像就準(zhǔn)備完了。
2、Django 文件準(zhǔn)備
我的測試文件目錄在 /home/hunter/docker/ 目錄下。
在該目錄下開啟一個新的 Django 項目:
編輯settings.py文件,將ALLOWDD_HOSTS設(shè)置為允許所有 ip 訪問。
ALLOWED_HOSTS = ['*']在/home/hunter/docker/Web/目錄下創(chuàng)建一個requirements.txt文件,寫入如下內(nèi)容:
#requirements.txt Django==3.0.3至此, Django 相關(guān)文件創(chuàng)建完畢。
3、Dockerfile 文件準(zhǔn)備
Dockerfile 的文件內(nèi)容如下:
FROM python:3.6 RUN mkdir /usr/src/myapp -p COPY . /usr/src/myapp WORKDIR /usr/src/myapp RUN pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/ WORKDIR /usr/src/myapp/Web CMD python manage.py runserver 0:7979FROM python:3.6: 這條命令表明是使用 python:3.6 這個版本的 Python 鏡像,其實所謂的 Python 鏡像,其實也就是一個只裝了 Python 3.6 版本的 Linux 操作系統(tǒng),這個后面我們可以進(jìn)入系統(tǒng)看一下。
RUN mkdir /usr/src/myapp -p :這條命令表示的是在該鏡像里遞歸地創(chuàng)建這樣一個文件夾, RUN 表示執(zhí)行什么命令,后面的 mkdir 等命令和 Linux 操作系統(tǒng)都是一致的。
COPY . /usr/src/myapp: COPY 是復(fù)制命令, . 表示你所在的操作系統(tǒng)(非鏡像操作系統(tǒng))當(dāng)前目錄,這條語句的意思是把當(dāng)前文件夾的所有內(nèi)容都拷貝到鏡像系統(tǒng)的 /usr/src/myapp 目錄下。
WORKDIR /usr/src/myapp: WORKDIR 后面加上鏡像操作系統(tǒng)的文件夾,表明工作的文件夾是鏡像系統(tǒng)的 /usr/src/myapp 文件夾。
RUN pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/: 上面一條語句切換到了鏡像系統(tǒng)的工作文件夾,這條語句則是為上面干凈的鏡像系統(tǒng)安裝相關(guān)依賴,這里只用到了 Django 這一個第三方庫,所以在 requirements.txt 里面寫入即可,-i 是指定下載源,這些都和 Linux 上的命令是一致的。
WORKDIR /usr/src/myapp/Web: 這是把工作目錄切換到 我們的 Django 系統(tǒng)的根目錄下。
CMD python manage.py runserver 0:7979: CMD 表示的是在鏡像系統(tǒng)內(nèi)執(zhí)行什么命令,這個是 Django 項目的啟動命令。
4、build 構(gòu)建一個容器
前面我們的所有準(zhǔn)備工作都已經(jīng)做完了,然后使用 build 來把我們構(gòu)建的系統(tǒng)變成一個可以運(yùn)行的容器(container)。
在 Dockerfile 所在的文件夾,在我這里是 /home/hunter/docker/ ,執(zhí)行如下命令:
docker build . -t python:3.6然后就可以看到Dockerfile一行一行執(zhí)行命令的信息輸出,類似下圖:
當(dāng)上述指令執(zhí)行完畢,輸出類似于如下信息,則表示容器創(chuàng)建成功:
復(fù)制一下倒數(shù)第二行 built 后面的一串代碼,這個后面構(gòu)建容器,也就是 container 的時候要用到。
5、run 運(yùn)行容器
接下來我們運(yùn)行創(chuàng)建一個容器,使用如下命令:
docker run -p 7979:7979 6811c43789de6811c43789de這一串代碼,就是上一步復(fù)制下來的 id,這一行命令的意思是運(yùn)行這個容器,并將容器的 7979 端口映射到你本身操作系統(tǒng)的 7979 端口。
為什么要映射端口呢?
因為每一個容器都類似于一個小黑盒,與外界是不連通的,要訪問里面的信息,必須將其映射出來。
我看過很多教程教程,他們在執(zhí)行這一步之后,會輸出Django系統(tǒng)初始化的一些信息,但我這里,沒有顯示。
6、 測試與查看
我們在瀏覽器訪問一下,服務(wù)器的 ip+port,在我這里是http://192.168.31.222:7979/ ,就可以看到我們搭建的系統(tǒng)已經(jīng)運(yùn)行起來了,如下如所示:
在我們執(zhí)行 run 命令的地方也可以看到 請求的輸出信息:
然后,我們可以進(jìn)入一下我們構(gòu)建的這個 container 看一下。
首先,docker container ls 查看所有正在運(yùn)行的 container,可以看到類似如下信息:
有我們剛剛運(yùn)行的 container 信息,包括 container id, port 映射信息,name 等字段。
我們可以通過 container id 或者 name 這個字段進(jìn)入我們剛剛創(chuàng)建的 container,我用 container id 進(jìn)入容器:
docker container exec -it 524d98f18334 bash然后就進(jìn)入了我們創(chuàng)建的 container 系統(tǒng),查看一下 container 里面運(yùn)行的 Python 進(jìn)程:
ps -ef | grep python可以看到有 端口為 7979 的 Django 系統(tǒng)在運(yùn)行:
然后可以 使用 exit 退出該容器。
以上,就是使用 Docker 來運(yùn)行一個 Django 容器的全過程。
總結(jié)
以上是生活随笔為你收集整理的docker 运行容器_Docker之运行 Django 容器的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 高龄申请海外计算机科学博士,【原创】牛津
- 下一篇: java 系统类型_Java获取操作系统