在visual studio 中進行web項目發布,並上傳文件到服務器
創建Dockerfile文件內容如下:
FROM mcr.microsoft.com/dotnet/aspnet:5.0-buster-slim WORKDIR /app EXPOSE 80 EXPOSE 443 WORKDIR /app COPY . /app ENTRYPOINT ["dotnet", "web.dll"]
如果缺少gdilibplus使用下面的,添加了RUN
#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging. FROM mcr.microsoft.com/dotnet/aspnet:5.0-buster-slim AS base WORKDIR /app RUN apt-get update && \ apt-get install -y libgdiplus && \ cd /usr/lib && \ ln -s libgdiplus.so gdiplus.dll EXPOSE 80 EXPOSE 443 WORKDIR /app COPY . /app ENTRYPOINT ["dotnet", "TFCMS.dll"]
dockerfile注解
把此文件跟放到發布目錄,然后執行:
docker build -t tfcms .
注意:上面的命令,在鏡像名后還有一個空格加點的,這個不能少" ."
然后把鏡像掛載到docker中 如:
docker run --name tfcms -d -p 5001:80 -p 5002:443
-
-d ,表示在后台以守護態(daemonized)形式運行容器
-
-p 外部端口與內部容器端口映射。
-
--name 指定容器的名稱。當然可以不指定,默認會為我們創建
-
最后一個參數 tfcms 就是我們剛創建的鏡像名稱
或者 docker run -d -p 5001:80 -p 5002:443 -v /root/tfcms:/app --workdir /app mcr.microsoft.com/dotnet/aspnet dotnet /app/LinuxDockerNginx.dll
-p:指定物理主機5001端口映射到docker容器80端口
-v:復制物理主機中的文件到docker容器中的指定目錄
--workdir:指定后續指令目錄
mcr.microsoft.com/dotnet/aspnet:指定對應的基礎鏡像 使用dotnet命令運行項目dll
如此即可發布完成。
運行項目
運行項目 docker run -itd -p 5000:80 dockerpublish -itd:交互式后台啟動
-p:指定物理主機5001端口映射到docker容器80端口
dockerpublish:鏡像名稱
二、源碼鏡像制作
2.1將源碼拷貝到Centos指定目錄下,並在源碼總文件夾的同級目錄下,復制Dockerfile文件
2.2 進入到Dockerfile同級目錄,進行鏡像構建
使用docker構建命令進行構建:docker build -t dockerpublish -f Dockerfile .
-t :鏡像名稱(必須小寫) -f :Dockerfile文件 最后圓點指定dockfile文件
三、將Docker 鏡像推送到阿里雲鏡像倉儲
在阿里雲創建自己的容器倉庫 https://cr.console.aliyun.com/cn-hangzhou/instances/repositories
按照阿里雲的提示進行鏡像推送。
先登錄,密碼為阿里雲的賬號密碼
推送鏡像,注意鏡像ID 和版本
這時候可以在阿里雲的鏡像版本看到自己的版本信息
這里推送到阿里雲的鏡像完成
在linux上獲取阿里雲自己的Docker鏡像
這時候的本地鏡像倉庫就存在阿里雲的版本的鏡像
在linux運行項目,多版本回滾
執行 命令
docker run --name test -d -p 8003:8003 registry.cn-hangzhou.aliyuncs.com/lijiqing/test:1.0.2
版本的回滾指的是,當發布新的鏡像之后 如果出現bug或者其他問題,可以將當前容器關閉,運行之前舊的鏡像
四、docker 常見命令
docker run:docker run相當於執行了兩步操作:將鏡像放入容器中(docker create),然后將容器啟動,使之變成運行時容器(docker start)
docker start :啟動已存在的鏡像
docker stop:停止鏡像
docker stop $(docker ps -q):停止所有鏡像
docker images:docker中的所有鏡像
docker ps -a :顯示容器列表 -a 顯示所有容器(默認顯示正在運行)
docker pull:拉取鏡像 name:tag 指定版本,默認latest
docker search:搜索的范圍是官方鏡像和所有個人公共鏡像
docker rm :刪除容器
docker rmi:刪除鏡像
docker rm $(docker ps -aq):刪除所有停止的容器
docker exec -it 容器ID /bin/bash :進入指定id的容器