CentOS7下Docker與.net Core 2.2
一、使用 yum 安裝(CentOS 7下)
Docker 要求 CentOS 系統的內核版本高於 3.10 ,查看本頁面的前提條件來驗證你的CentOS 版本是否支持 Docker 。
通過 uname -r 命令查看你當前的內核版本
二、安裝 Docker
從 2017 年 3 月開始 docker 在原來的基礎上分為兩個分支版本: Docker CE 和 Docker EE。
Docker CE 即社區免費版,Docker EE 即企業版,強調安全,但需付費使用。
1、移除舊的版本
$ sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-selinux docker-engine-selinux docker-engine
2、安裝一些必要的系統工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
3、添加軟件源信息
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
4、更新 yum 緩存
sudo yum makecache fast
5、安裝 Docker-ce
sudo yum -y install docker-ce
6、啟動 Docker 後臺服務
sudo systemctl start docker
7、測試運行 hello-world
[[email protected] /]# docker run hello-world
二、Asp.Net Core2.2 web程序
dockerfile是你的應用部署到docker上所必須的配置信息,只是個不帶擴展名的純文本文件而已
設置Makefile屬性【始終復制】
Dockerfile內容為
1 FROM microsoft/dotnet:2.2-aspnetcore-runtime #基礎鏡像為dotnetcore
2 MAINTAINER demo #作者
3
4 LABEL description="this is a test website" #描述
5 LABEL version="1.0" #描述
6
7 WORKDIR /app #工作目錄
8 COPY . . #將當前目錄下的文件,復制到WORKDIR目錄
9 EXPOSE 8888 #容器暴漏8888端口,與上一步設置的端口一致
10 ENTRYPOINT ["dotnet","demo.dll"] #運行容器的命令
修改Program.cs文件
1 namespace demo
2 {
3 public class Program
4 {
5 public static void Main(string[] args)
6 {
7 CreateWebHostBuilder(args).Build().Run();
8 }
9
10 public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
11 WebHost.CreateDefaultBuilder(args)
12 .UseUrls("http://*:8888")
13 .UseStartup<Startup>();
14 }
15 }
發布,文件系統
默認位置
demo\bin\Release\netcoreapp2.2\publish
三、構建鏡像
1、切換到發布目錄
[[email protected] publish]
2、修改Makefile文件
指定容器對外暴露端口80。註意,COPY .後面有空格,表示是當前位置,意思是從當前位置復制文件到/publish目錄下
3、根據當前目錄下dockerfile配置文件,進行打包
[[email protected] publish]# docker build -t demo .
4、查看我們打包好的鏡像。
[[email protected] publish]# docker images
四、運行docker容器
[[email protected] publish]# docker run -d -p 8888:8888 demo
-p是進行宿主和容器之間端口的映射,(-p 宿主端口:容器端口)
-d命令,容器就會一直運行,即使關掉終端窗口
檢驗docker容器是否運行成功
五、測試
本機要輸Centos的IP
Centos內訪問localhost就可以了
說明
1、配置docker開機啟動
systemctl enable docker
2、確認容器有在運行
[[email protected] /]# docker ps
CONTAINER ID:容器ID
NAMES:自動分配的容器名稱
在容器內使用docker logs命令,查看容器內的標準輸出
3、開始/停止容器
[[email protected] /]# docker start/stop 容器id或者容器名
4、重啟docker服務,遇到此類錯誤
原因是docker服務掛掉了
systemctl restart docker
CentOS7下Docker與.net Core 2.2