云計(jì)算核心技術(shù)Docker教程: 構(gòu)建web應(yīng)用程序
接下來我們將在docker容器中運(yùn)行一個(gè) Python Flask 應(yīng)用來運(yùn)行一個(gè)web應(yīng)用。
使用如下命令載入鏡像:
# docker pull training/webapp # 載入鏡像
# docker run -d -P training/webapp python app.py
參數(shù)說明:
-d:讓容器在后臺(tái)運(yùn)行。
-P:將容器內(nèi)部使用的網(wǎng)絡(luò)端口隨機(jī)映射到我們使用的主機(jī)上。
使用 docker ps 來查看我們正在運(yùn)行的容器:
命令如下:
# docker ps
顯示的端口映射信息:
PORTS
0.0.0.0:32769->5000/tcp
Docker 開放了 5000 端口(默認(rèn) Python Flask 端口)映射到主機(jī)端口 32769 上。
這時(shí)我們可以通過瀏覽器IP:32769訪問WEB應(yīng)用
我們也可以通過 -p 參數(shù)來設(shè)置不一樣的端口:
docker run -d -p 5000:5000 training/webapp python app.py
修改為容器內(nèi)部的 5000 端口映射到我們本地主機(jī)的 5000 端口上。
通過 docker ps 命令可以查看到容器的端口映射,docker 還提供了另一個(gè)快捷方式 docker port,使用 docker port 可以查看指定 (ID 或者名字)容器的某個(gè)確定端口映射到宿主機(jī)的端口號(hào)。
上面我們創(chuàng)建的 web 應(yīng)用容器 ID 為 bf08b7f2cd89 名字為 wizardly_chandrasekhar。
我可以使用 docker port bf08b7f2cd89 或 docker port wizardly_chandrasekhar 來查看容器端口的映射情況。
命令如下:
# docker port bf08b7f2cd89
# docker port wizardly_chandrasekhar
docker logs [ID或者名字] 可以查看容器內(nèi)部的標(biāo)準(zhǔn)輸出。
命令如下:
# docker logs -f bf08b7f2cd89
參數(shù)說明:
-f: 讓 docker logs 像使用 tail -f 一樣來輸出容器內(nèi)部的標(biāo)準(zhǔn)輸出。
我們還可以使用 docker top 來查看容器內(nèi)部運(yùn)行的進(jìn)程
命令如下:
# docker top [ID或者名字]
使用 docker inspect 來查看 Docker 的底層信息。它會(huì)返回一個(gè) JSON 文件記錄著 Docker 容器的配置和狀態(tài)信息。
命令如下:
# docker inspect [ID或者名字]
停止 WEB 應(yīng)用容器
# docker stop [ID或者名字]
重啟WEB應(yīng)用容器
# docker start [ID或者名字]
可以使用docker ps -l 查詢最后一次創(chuàng)建的容器
移除WEB應(yīng)用容器
使用 docker rm 命令來刪除不需要的容器
刪除容器時(shí),容器必須是停止?fàn)顟B(tài),否則會(huì)報(bào)錯(cuò)。
可能會(huì)出現(xiàn)的問題:
創(chuàng)建容器的時(shí)候報(bào)錯(cuò)WARNING: IPv4 forwarding is disabled. Networking will not work.
解決方法:
# vim /usr/lib/sysctl.d/00-system.conf
添加如下代碼:net.ipv4.ip_forward=1
重啟network服務(wù)
# systemctl restart network
完成以后,刪除錯(cuò)誤的容器,再次創(chuàng)建新容器,就不再報(bào)錯(cuò)了。
相關(guān)閱讀:
云計(jì)算核心技術(shù)Docker教程:在Centos中安裝Docker
云計(jì)算的主流容器平臺(tái)Docker架構(gòu)分析
云計(jì)算核心技術(shù)Docker教程:Docker容器使用