Docker容器部署Web應用
1.Docker是什麼?
docker是一個開源的應用容器引擎,基於go語言並遵循apache2.0協議開源
2.Docker可以做什麼?
Docker可以讓開發者打包他們的應用以及依賴包到一個輕量級,可移植的容器中,然後釋出到任務流行linux機器;容器是完全使用沙箱機制,相互間不會有任何介面,且容器效能開銷低。Docker容器實際上是docker映象的執行例項
3.Docker安裝
3.1安裝軟體包(為方便新增軟體源,支援devicemapper型別儲存)
yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
3.2更換阿里雲映象(https://www.ngui.cc/51cto/show-530173.html)
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
3.3新增 yum 軟體源,新增 Docker 穩定版本的 yum 軟體源
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
4.docker
- 安裝docker-ce:yum install docker-ce
- 設定開機啟動docker:systemctl enable docker
- 啟動docker:systemctl start docker
- 更新docker:yum update docker-ce
- 檢視docker資訊:docker info
- 解除安裝docker:yum remove docker-ce
- 刪除docker本地檔案(映象,容器,儲存卷等 目錄/var/lib/docker):rm -rf /var/lib/docker
- 檢查docker是否可以正常執行(執行hello-world映象):docker run hello-world
- 下載.netcore5映象:docker pull mcr.microsoft.com/dotnet/core/aspnet:5
- 檢視本地映象:docker images
- 檢視所有容器:docker ps -a
5.Docker中部署web應用
5.1.vs建立.net core webmvc或者api專案[Order.API]並修改dockerfile檔案內容如下
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1
MAINTAINER PDF
LABEL description="orderservice webapi"
LABEL version="1.0"
WORKDIR /app
COPY . .
EXPOSE 5000
ENV ASPNETCORE_ENVIRONMENT Production
ENTRYPOINT ["dotnet", "Order.API.dll"]
5.2.釋出web應用上傳至linux伺服器,並開啟5000埠,預設5000埠,可以在appsetting中修改,注意:埠執行開啟命令後需重啟防火牆後生效
5.3.構建映象
進入專案目錄執行(注意後面有空格和.):docker build -t orderapp .
5.4.建立並執行容器
docker run --name orderapp -d -p 5000:5000 orderapp
5.5.訪問
6.Docker視覺化-Portainer:
隨著映象的增加,依靠輸入命令方式運維無疑加大了工作量和複雜性,可以安裝Portainer來進行介面視覺化操作容器和映象,安裝步驟如下
# 拉取映象
docker pull portainer/portainer-ce
# 執行映象
docker run -d -it --name portainer -p 8000:8000 -p 9000:9000 -v -v /var/run/docker.sock:/var/run/docker.sock --restart=always portainer/portainer-ce
# 瀏覽器輸入主機加埠9000即可進入,然後設定密碼,選擇本地模式。可以進行映象、容器、登入等管理
7.拓展:防火牆相關命令
- 安裝:yum install firewalld
- 啟動:systemctl start firewalld
- 關閉:systemctl stop firewalld
- 檢視狀態:systemctl status firewalld
- 開機禁用:systemctl disable firewalld
- 開機啟動:systemctl enable firewalld
- 開放埠:firewall-cmd --add-port=5000/tcp --zone=public --permanent
- 重啟防火牆:firewall-cmd --reload
- 檢視已開放埠:firewall-cmd --list-all
- 停止容器:docker kill 容器id或者name
- 刪除容器:docker rm 容器id或者name