现在,可以输入命令运行我们刚刚创建的 demo 镜像了
sudo docker run -d -p 80:80 -e --name demo demo:latest . -v /data/logs/demo:/data/logs/demo现在大家打开我 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 4.2 进入镜像进入运行中的容器的方法有多种,掌握一种足够,在控制台输入命令
sudo docker exec -it demo /bin/bash在容器内部使用命令和在 Centos 系统中一样,可以看到我们 demo 程序的执行目录 /app
结束语通过本文,我们学习了以下内容
1、在 Centos 中安装 docker
2、编写 Dockerfile 文件
3、在容器中构建 .NET Core 程序
4、编写自动化构建脚本,为迁移到 Jenkins 做准备
5、学习了一些基本的 docker 扩展命令