Docker简介
2018-11-26 17:03 石吴玉 阅读(336) 评论(0) 编辑 收藏 举报一、什么是Docker
docker是一个能够把开发的应用程序自动部署到容器得开源引擎。
二、为什么要使用Docker
- 启动速度快(大多数docker容器只需不到1秒的时间即可启动.)
- 资源利用率高(一台普通 PC 可以跑上千个容器,跑上千个 VM 试试.)
- 隔离性(docker相当于一个单独的运行环境,和宿主机之间个隔离更加彻底,也避免了宿主机的环境污染.)
- 快速、高效得开发生命周期(缩短开发、测试到部署、上线运行的周期,让你的应用具备可移植性,易于构建.)
- 鼓励面向服务的架构和微服务架构(docker推荐一个容器之运行一个应用程序,这样就形成了一个分布式的应用程序模型.)
三、怎么使用Docker
#查看所有镜像
docker images
#查看所有正在运行的容器
docker ps
#运行一个容器
docker run -d --restart=always -p 8021:80 --name supback supback
#停止容器
docker stop supback
#启动一个停止的容器
docker start supback
#删除容器
docker rm supback
#删除镜像
docker rmi supback
四、通过Dockerfile构建镜像
# 基于dotnet基础环境构建镜像
#FROM必须是Dockerfile中的第一个非注释指令。
FROM docker.io/microsoft/dotnet
#维护者信息
MAINTAINER Dirk.Wang 510423039@qq.com
#镜像的相关信息
LABEL Discription="这是基于dotnetcore的泛优镜像"
LABEL version="1.0"
# 通过RUN指令可以运行shell脚本 创建Supback目录
RUN mkdir /Supback
#定义参数 通过ARG 可以在构建镜像的时候定义参数
ARG env
# 把发布的内容拷贝到docker容器的supback目录下
COPY /publish /Supback
# 设置工作目录(相当于cd 到需要执行命令的目录下)
WORKDIR /Supback
# 暴露80端口
EXPOSE 80
# 设置环境变量
ENV ASPNETCORE_ENVIRONMENT=$env
# 启动web
RUN echo "执行环境: $env"
#容器启动时进行调用
CMD ["dotnet","SupBack.dll"]
五、通过Jenkins实现自动编译发布应用程序到Docker
- 在使用Jenkins之前,先写好我们需要在Jenkins上执行的命令
- 新建一个shell脚本:publish.development.sh
#!/bin/sh
#查询所有叫做supback的容器
docker container ls -a | grep "supback"
if [ $? -eq 0 ];then
#如果查询到存在该容器,则停止容器,在删除改镜像
docker container stop supback
docker container rm supback
docker rmi supback
#查询supback容器之前占用的端口
docker network ls |grep supback
#之前由于会有端口释放不了这里手动释放端口
docker network rm supback
fi
#基于之前的Dockerfile构建泛优的系统镜像
docker build -t supback --build-arg env="Development" .
#基于我们构建的镜像运行一个容器
docker run -d --restart=always -p 8021:80 --name supback supback
#设置docker容器的时间和宿主机的时间保持一致
docker cp /etc/localtime supback:/etc/
- 安装配置Jenkins
# 进入到Supback文件夹
cd SupBack
#如果publish文件夹存在,则删除
if [ -d "publish" ]; then
rm -rf publish
fi
#发布dotnetcore 系统到指定目录下
dotnet publish -o /var/lib/jenkins/workspace/SupBack/SupBack/publish
# 给shell脚本授予可执行的权限
chmod 777 publish.development.sh
#执行脚本
./publish.development.sh