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