CentOS7 下docker 部署 Asp.Net Core

1.安装Docker

PS:先打开网络
yum [Errno 256] No more mirrors to try 解决方法

输入下面的命令即可解决问题:

yum clean all

yum makecache

1)安装docker

 sudo yum install docker

PS:

遇报错 Another app is currentlty holding the yum lock ,waiting for it to exit..

     解决方法: rm  –r  /var/run/yum.pid 这个命令 解锁即可

2)启动docker

systemctl  start docker.service

3)配置开机启动

systemctl enable docker.service

4)查看docker版本信息

docker version

 

 

2.Asp.Net core项目建 Dockerfile 并发布

 

 

 

注意: Dockerfile 文件配置如下,并需要在发布的时候手动copy过去

Dockerfile文件内容:

#基于 `microsoft/aspnetcore:2.0` 来构建我们的镜像

FROM microsoft/aspnetcore:2.0

#拷贝项目publish文件夹中的所有文件到 docker容器中的publish文件夹中 

COPY . /publish

#设置工作目录为 `/publish` 文件夹,即容器启动默认的文件夹

WORKDIR /publish

#设置Docker容器对外暴露80端口

EXPOSE 80

#使用`dotnet NetCoreDockerDemo.dll`来运行应用程序

ENTRYPOINT ["dotnet", "NetCoreDockerDemo.dll"]

(1)     生成镜像

cd 到linux 部署的一个core文件夹下

sudo docker build -t demo-netcore  .       (注意:最后空格后面有一个.)。

 

 

(2)     查看生成的镜像

sudo docker images

 

 

(3)     镜像备份

命令: docker save -o ~/xxxxxxxx.tar name(镜像名称)

新建一个dockerimages 文件夹来存放 待备份的 文件

[root@localhost Desktop]# docker save -o docker-domocore-bk.tar  demo-netcore

(4)     把镜像文件导出到本地

用 FZ 文件连接 :sftp://192.168.174.129   root/jxl333

Root 根目录下就有 刚才备份的 docker-domocore-bk.tar 文件,下载到本机即可

3.docker镜像Copy另一台机器并加载

(1)     把镜像文件copy 到另外一台 linux 机器上,测试镜像可用性

备注:新的这台服务器上也要先安装docker

(1)安装docker

 sudo yum install docker

(2)启动docker

systemctl  start docker.service

(3)配置开机启动

systemctl enable docker.service

(4)查看docker版本信息

docker version

(2)     FZ docker-domocore_bk.tar 上传到另外一台 linux 服务器上的 core 文件夹下并加载

Linux 命令 cd  /home/jxl/core/

命令加载: docker load –i  docker-domocore-bk.tar

 

 

(3)     查看load docker images

 

 

4.docker镜像文件使用方法

(1)     为了安装.NET,需要注册微软签名密钥和添加微软相关的支持

这个操作每台机器只能做一次。

打开命令行,输出以下命令,注册Microsoft需要的依赖环境;:

sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc

 

sudo sh -c 'echo -e "[packages-microsoft-com-prod]\nname=packages-microsoft-com-prod \nbaseurl=https://packages.microsoft.com/yumrepos/microsoft-rhel7.3-prod\nenabled=1\ngpgcheck=1\ngpgkey=https://packages.microsoft.com/keys/microsoft.asc">/etc/yum.repos.d/dotnetdev.repo'

 

安装.NET SDK

②   更新可用的安装包:sudo yum update

②安装.NET需要的组件,libunwind和libicu库:sudo yum install libicu

sudo yum install libunwind

③   安装.NET SDK

sudo yun install dotnet-sdk-2.2

④   安装完成之后,检测是否安装成功

dotnet –version

(2)     依据镜像images 生成容器containers 并且设置外网端口映射

根据镜像images 生成容器containers 命令 和

把Asp.Net Core项目端口54907与 Docker容器对外暴露80端口做映射(-p 宿主端口:容器端口)

docker run -p 54907:80 demo-netcore

 

 

(3)     外网访问结果

 

 

(4)     

如果设置为 docker run –p 80:80 netcoredockerdemo (外网访问的是80端口)

 

 

  根据镜像启动一个container

docker run -p 54907:80 demo-netcore

 

 

没有的话:

cd /etc/sysconfig/network-scripts/ 进入到网卡目录

编辑ifcfg-eno16777736文件:把这一项改为YES(ONBOOT=yes),

 

Systemctl stop NetworkManager

 

 Systemctl restart network 或者重启机器

 

 

 

(5)     容器生成后开启/停止/重启等操作

重要:

Run 只需要一次 从镜像生成容器

Start 可以多次,启动容器

 

下面是容器的操作

Docker实际上把所有东西都放到/var/lib/docker路径下了。

1.cd docker

Containers 目录是存放容器的(container)

image

2.docker start 容器ID

docker start/stop/restart <container> :开启/停止/重启container
docker start [container_id] :再次运行某个container (包括历史container)
docker attach [container_id] :连接一个正在运行的container实例(即实例必须为start状态,可以多个窗口同时attach 一个container实例)
docker start -i <container> :启动一个container并进入交互模式(相当于先start,在attach)
docker run -i -t <image> /bin/bash :使用image创建container并进入交互模式, login shell是/bin/bash
docker run -i -t -p <host_port:contain_port> :映射 HOST 端口到容器,方便外部访问容器内服务,host_port 可以省略,省略表示把 container_port 映射到一个动态端口。
注:使用start是启动已经创建过得container,使用run则通过image开启一个新的container。

 

 

(6)     本机测试Demo网址

  1. Linux+Nginx+Asp.Net Core

http://192.168.174.128/api/values/

  1. linux+docker +Asp.Net Core (sudo docker build -t demo-netcore  .   制作镜像docker-domocore-bk.tar)

http://192.168.174.129:54907/api/values/

  1. linux+docker(使用2中生成的镜像docker load –i  docker-domocore-bk.tar)

http://192.168.174.130:54907/api/values/

 

posted @ 2019-01-22 15:26  山峰旺旺  阅读(493)  评论(0编辑  收藏  举报