Asp.NetCore轻松学-使用Docker进行容器化托管 (2)

Asp.NetCore轻松学-使用Docker进行容器化托管

3.3 运行镜像

现在,可以输入命令运行我们刚刚创建的 demo 镜像了

sudo docker run -d -p 80:80 -e --name demo demo:latest . -v /data/logs/demo:/data/logs/demo

Asp.NetCore轻松学-使用Docker进行容器化托管

Asp.NetCore轻松学-使用Docker进行容器化托管

现在大家打开我 Azure 云主机的地址访问:(学习机器,可能会过期) ,目前运行的程序正是基于 dokcer 容器的实例

非常开心,使用 docker 进行容器化部署成功!!!

4. 扩展的 docker 学习

当我们成功部署第一个 docker 应用后,后续的问题也随之而来了,比如更新,这个是无法回避的问题,从部署完成的那一刻开始就如影随形,所以,学习其它的 docker 命令是非常有必要的

4.1 更新程序

容器化部署的每一次更新都伴随着下面的步骤,长此以往,生生不息

*步骤说明
1、编译
2、打包
3、发布
4、运行

我们可以把这些步骤都整合成一份脚本文件,每次都去执行该脚本即可,方便又安全,当后续引入 Jenkins 进行自动化构建之后,我们直接把该脚本迁移到 Jenkins 中即可,还是以当前的实例 Deploy.Linux 为例子,编写 demo.sh 脚本文件如下:

sudo docker build -t demo . #开始执行Dockerfile进行构建 sudo docker images -a #列出现有仓库的镜像列表 sudo docker ps -a | grep "Exited" | awk '{print $1 }'|xargs docker stop #查找并停止镜像 sudo docker ps -a | grep "Exited" | awk '{print $1 }'|xargs docker rm #移除已停止的镜像 sudo docker images -q -a | xargs docker inspect --format='{{.Id}}{{range $rt := .RepoTags}} {{$rt}} {{end}}'|grep -v ':' #移除悬空镜像,没起作用,求指导 sudo docker ps -a #列出所有实例 sudo docker stop demo #停止demo实例 sudo docker rm demo #移除demo实例 sudo docker run -d -p 80:80 --name demo demo:latest . -v /data/logs/demo:/data/logs/demoo docker run -d -p 80:80 -e --names demo demo:latest . -v /data/logs/demo:/data/logs/demo #指定demo镜像,运行demo实例

为了使用脚本,我们必须为 docker 用户赋予 root 用户组权限,否则 docker 无权执行停止实例等操作,执行下面的命令

sudo groupadd docker sudo gpasswd -a ${USER} docker sudo service docker restart newgrp - docker

好了,现在可以愉快的执行脚本了,使用下面的命令执行一键构建镜像

sudo sh demo.sh

Asp.NetCore轻松学-使用Docker进行容器化托管

4.2 进入镜像

进入运行中的容器的方法有多种,掌握一种足够,在控制台输入命令

sudo docker exec -it demo /bin/bash

Asp.NetCore轻松学-使用Docker进行容器化托管

在容器内部使用命令和在 Centos 系统中一样,可以看到我们 demo 程序的执行目录 /app

结束语

通过本文,我们学习了以下内容

1、在 Centos 中安装 docker
2、编写 Dockerfile 文件
3、在容器中构建 .NET Core 程序
4、编写自动化构建脚本,为迁移到 Jenkins 做准备
5、学习了一些基本的 docker 扩展命令

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

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