---
# System prepended metadata

title: .Net Core部署到Linux的Docker上
tags: [Docker]

---

# .Net Core部署到Linux的Docker上
在Visual Studio 方案總管的專案按右鍵加入->Docker支援
![](https://exfast.me/wp-content/uploads/2018/09/pasted-9.png =500x)

用Git Bash 連到Linux開發機
```
ssh [帳號]@[IP位置] -p [Port號]
```
若沒有安裝過 .Net Core 先依[Linux版本](https://docs.microsoft.com/zh-tw/dotnet/core/install/linux)安裝 .Net Core SDK
我們開發機Linux版本為CentOs 7 指令如下
```
sudo yum install dotnet-sdk-3.1
```
Git clone下來專案
```
git -c http.sslVerify=false clone -b [分支名稱] https://[git路徑].git
```
接下來cd到DockerFile所在位置下指令建置容器映像
```
docker build -t [自訂小寫image名稱]:[tag名] .
```
查看Docker映像清單即會看到剛剛建的image
```
docker images 或 docker image ls
```

由於我們的方案中有兩個專案所以我們在方案檔的位置下兩次指令去分別指定專案下的Dockerfile
```
docker build -f [PROJECT_DIRECTORY]/Dockerfile -t [image名稱] .
```
查看容器正在執行的容器清單(process status)
```
docker ps
```
現在較新的寫法為
```
docker container ls
```
若要查看所有(all)包含沒有在執行的則加上 -a
```
docker ps -a
```
若覺得可讀性差也可加上 --format 指定格式
```
docker ps --format="ID\t{{.ID}}\nNAME\t{{.Names}}\nImage\t{{.Image}}\nPORTS\t{{.Ports}}\nCOMMAND\t{{.Command}}\nCREATED\t{{.CreatedAt}}\nSTATUS\t{{.Status}}\n"
```
若要儲存到變數可用 export 之後就可以直接存取
```
export FORMAT="指令"
docker ps --format=$FORMAT
```
跑完之後再下指令執行容器，
-d為detached mode，容器會在背景執行
--name 可自行定義容器的名稱
-rm 為離開後會remove 移除容器
-p 是用來指定host上的8080 map到容器上的80port
```
docker run -d --name=[容器名稱] --rm -p 8000:80 [Image名稱]
```
若重複加入-p可指定多個port
```
docker run -d -p 8000:80 -p 3000:80 [Image名稱]
```
若要執行image則指定要執行的映像檔
```
docker run [image名]:[tag名]
```
之後在瀏覽器連到[IP位置:8000]就可以看到專案執行的結果了

更多說明可參考保哥的這篇[文章](https://blog.miniasp.com/post/2018/08/25/How-to-deploy-ASPNET-Core-to-Docker-Container)
相關文章: [Docker學習筆記](https://hackmd.io/5wsMWUZCQFCMK9IQAnFKYA)
###### tags: `Docker`