docker部署Asp.net core应用的完整步骤(3)

使用命令docker run -d -p 8080:80dockerdemo:v1.0启动容器,-d 表示后台运行,-p 8080:80表示服务器的8080端口映射到容器的80端口,我们也可以使用服务器的其他端口,容器的端口为Dockerfile中Expose的端口。执行docker container ls查看容器,这里我们的容器已经启动了,如下:

docker部署Asp.net core应用的完整步骤

打开浏览器,输入【服务器IP:服务器端口】接口访问容器,如下:

docker部署Asp.net core应用的完整步骤

到这一步,本地创建镜像和运行容器成功了。

5 使用docker hub存储和分发镜像

docker提供了远程仓库用于存储和分发镜像,其作用类似于github,区别在于github托管代码,而docker hub托管镜像。我们创建好了镜像可以推送(push)到远程仓库,然后在其他设备上拉取(pull)镜像,有了docker hub我们可以更方便的管理和分发镜像。docker hub的使用非常简单,只记住三个命令就可以了

#标记镜像,就是设置远程镜像名和标记 docker tag localname:localtag dockeruser/repname:reptag #推送镜像文件到docker hub docker push username/repname:reptag #拉取远程镜像 docker pull repname:reptag #注:localname是本地镜像名 localtag是本地镜像tag # repname远程仓库的镜像名 reptag是远程仓库的tag # username是我们的dockerhub用户名

这里将上边创建的本地镜像推动到docker hub。使用命令docker tag dockerdemo:v1.0 wyyxxx/resdockerdemo:v1.0标记,使用命令docker push wyyxxx/resdockerdemo:v1.0推动镜像到远程仓库,打开镜像仓库,登陆后就可以看到我们自定义的镜像了,如下所示。

docker部署Asp.net core应用的完整步骤

然后使用另一台安装了docker的服务器,执行命令docker run -p 8080:80 wyyxxx/resdockerdemo:v1.0拉取远程镜像并启动,打开浏览器输入地址,如下:

docker部署Asp.net core应用的完整步骤

我们在通过拉取远程镜像并运行容器时,不需要事先部署环境(如安装runtime)等,因为镜像中已经设置了需要的所有环境和依赖资源,只需要使用docker run命令运行即可。这也是使用容器交付的方便之处。

4 使用Docker的一点建议

① “3C原则”一个容器只运行一个应用

② 使用镜像交付应用程序,而不是直接部署

如果要在centos上部署一个aspnet core应用程序。错误的做法是:在docker中先安装一个centos系统,在centos系统中部署环境,然后部署我们的netcore应用程序,,最后把部署的应用程序生成镜像。正确的做法是通过Dockerfile定义我们需要的环境和依赖项,然后生成镜像,通过镜像去分发和执行。

③ 分层构建镜像

还是上边centos部署netcore应用的栗子,如果从零定制镜像时,我们应该把centos作为一层镜像,环境runtime作为一层镜像,最后我们的应用做为一层镜像,使用Dockerfile的FROM 指令拉取父镜像。这样做的好处是节省空间和复用镜像。如上边我们使用了2.2版本的runtime镜像,当我们创建了另一个web应用再来定制镜像时,这两个应用程序镜像可以 共用同一个runtime镜像。

④ 不要把数据存储在容器中

容器是随时可能销毁的,销毁后容器内部的数据就不存在了,所以最好不要在容器中存储需要持久化的数据。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wdsgwg.html