云計算核心技術(shù)Docker教程: 構(gòu)建web應(yīng)用程序
接下來我們將在docker容器中運行一個 Python Flask 應(yīng)用來運行一個web應(yīng)用。
使用如下命令載入鏡像:
# docker pull training/webapp # 載入鏡像
# docker run -d -P training/webapp python app.py
參數(shù)說明:
-d:讓容器在后臺運行。
-P:將容器內(nèi)部使用的網(wǎng)絡(luò)端口隨機映射到我們使用的主機上。
使用 docker ps 來查看我們正在運行的容器:
命令如下:
# docker ps
顯示的端口映射信息:
PORTS
0.0.0.0:32769->5000/tcp
Docker 開放了 5000 端口(默認 Python Flask 端口)映射到主機端口 32769 上。
這時我們可以通過瀏覽器IP:32769訪問WEB應(yīng)用
我們也可以通過 -p 參數(shù)來設(shè)置不一樣的端口:
docker run -d -p 5000:5000 training/webapp python app.py
修改為容器內(nèi)部的 5000 端口映射到我們本地主機的 5000 端口上。
通過 docker ps 命令可以查看到容器的端口映射,docker 還提供了另一個快捷方式 docker port,使用 docker port 可以查看指定 (ID 或者名字)容器的某個確定端口映射到宿主機的端口號。
上面我們創(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)部運行的進程
命令如下:
# docker top [ID或者名字]
使用 docker inspect 來查看 Docker 的底層信息。它會返回一個 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 命令來刪除不需要的容器
刪除容器時,容器必須是停止?fàn)顟B(tài),否則會報錯。
可能會出現(xiàn)的問題:
創(chuàng)建容器的時候報錯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
完成以后,刪除錯誤的容器,再次創(chuàng)建新容器,就不再報錯了。
相關(guān)閱讀:
云計算核心技術(shù)Docker教程:在Centos中安裝Docker
云計算的主流容器平臺Docker架構(gòu)分析
云計算核心技術(shù)Docker教程:Docker容器使用