大概快有一年的時間沒有碰過docker了,理由很簡單,基本上都是在IIS上部署,看到不少大佬都開始Devops持續化集成了,還有就是用Linux守護進程很噁心,哈哈,但相對來講成本會更高,但對於大型團隊來講仍是不錯的,這不?不想被大夥甩下,哈哈,趕忙撈回來點丟下的知識,這篇文章就算是對我本身的筆記吧...Docker 中 有EE 和 CE 兩個版本,其中EE是開源的,CE是閉源的。html
首先咱們須要檢查Linux內核是否大於3.1.0,經過該命令查看。linux
[root@iZenarrdqnvpc4Z ~]# uname -r 3.10.0-1062.1.2.el7.x86_64
隨後咱們安裝docker必要的一些必要的工具,能夠提早安裝。git
yum install -y yum-utils device-mapper-persistent-data lvm2
如今能夠直接裝Docker了,使用命令以下github
sudo wget -qO- https://get.docker.com | sh
隨後檢查docker版本,看看是否安裝成功?web
[root@iZenarrdqnvpc4Z ~]# docker version Client: Docker Engine - Community Version: 19.03.5 API version: 1.40 Go version: go1.12.12 Git commit: 633a0ea Built: Wed Nov 13 07:25:41 2019 OS/Arch: linux/amd64 Experimental: false Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
如今想要使用docker image 以及 docker ps 等命令還不能夠,由於你尚未start docker 服務。使用這倆命令來開啓與關閉docker服務。docker
start docker.service //開啓
stop docker.service //關閉
因爲我是用的阿里服務器,它給我提供了鏡像加速器,這主要是爲了提升拉取docker hub的速度,能夠在https://cr.console.aliyun.com/cn-huhehaote/instances/mirrors 中看見,個人內容以下,完事以後就能夠享受加速了。json
sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://baqadmms.mirror.aliyuncs.com"] } EOF sudo systemctl daemon-reload sudo systemctl restart docker
在.NET Core工程中編寫Dockerfile文件。服務器
#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/core/aspnet:3.0-buster-slim AS base #工做目錄 WORKDIR /app #將整個publish文件 放到該文件下生產 COPY . /app #指定對外端口 EXPOSE 5003 #啓動命令 ENTRYPOINT ["dotnet", "Jwt_Policy_Demo.dll"]
由於個人應用程序是單一部署,因此不存在動態端口 因此我這邊直接useUrls了。app
public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); webBuilder.UseUrls("http://*:5003"); });
如今經過dotnet命令發佈項目,必定記得把Dockerfile文件屬性改成輸出到輸出目錄哦~,隨後你能夠如今Windows中進行測試了,例如dotnet xxx.dll命令。tcp
隨後經過FileZilla上傳到Linux目錄中Publish文件夾中,固然這也是我本身的愛好,由於它的命名很符合如今的場景。
就這樣咱們去構建build,經過linux命令cd到發佈文件夾中,而後經過build命令構建鏡像,咱們發現剛剛的DockerFile的命令,一步一步都執行成功了。
[root@iZenarrdqnvpc4Z JwtWeb]# docker build -t jwtdemo . Sending build context to Docker daemon 22.9MB Step 1/5 : FROM mcr.microsoft.com/dotnet/core/aspnet:3.0-buster-slim AS base 3.0-buster-slim: Pulling from dotnet/core/aspnet 8ec398bc0356: Pull complete 9584d2ef7ebe: Pull complete 62b61706cd9b: Pull complete 676f1d13ec65: Pull complete 35ddfe9ef309: Pull complete Digest: sha256:de2b03f916d1f3a72d342825c3ec4414d0190862b20d2af295320334f17a1480 Status: Downloaded newer image for mcr.microsoft.com/dotnet/core/aspnet:3.0-buster-slim ---> c7e868fda63d Step 2/5 : WORKDIR /app ---> Running in 385a30e2b223 Removing intermediate container 385a30e2b223 ---> b95c2a722df5 Step 3/5 : COPY . /app ---> 48edf64106cd Step 4/5 : EXPOSE 5003 ---> Running in d4bf7b3b7122 Removing intermediate container d4bf7b3b7122 ---> 752724a940e8 Step 5/5 : ENTRYPOINT ["dotnet", "Jwt_Policy_Demo.dll"] ---> Running in 9c0c2c190da3 Removing intermediate container 9c0c2c190da3 ---> 4045861329a7 Successfully built 4045861329a7 Successfully tagged jwtdemo:latest
隨後經過docker images 查看生成鏡像是否成功,ok沒問題,如今就能夠run了...
[root@iZenarrdqnvpc4Z JwtWeb]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE jwtdemo latest 4045861329a7 2 minutes ago 230MB mcr.microsoft.com/dotnet/core/aspnet 3.0-buster-slim c7e868fda63d 7 days ago 207MB
在docker run 中指定外部和docker內部中的映射規則 --name 是容器的名稱,而最後面的是使用的所使用的鏡像。
[root@iZenarrdqnvpc4Z JwtWeb]# docker run --name jwtweb -d -p 8000:5003 jwtdemo 36c4d4f8218adeeafa737f51f0975dfe8d6aa6d17435cefc355749a59c6298a2 [root@iZenarrdqnvpc4Z JwtWeb]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 36c4d4f8218a jwtdemo "dotnet Jwt_Policy_D…" 7 seconds ago Up 6 seconds 0.0.0.0:8000->5003/tcp jwtweb
很是簡單,我剛剛發佈的網站地址以下:傳送門 ..
超超超超超級簡單的dockerfile github地址在:傳送門 ..
若是不經過UseUrls來進行啓動的話,那麼能夠該下dockerfile的ENTRYPOINT 以下
ENTRYPOINT ["dotnet", "Jwt_Policy_Demo.dll","urls=http://*:5003"]