代码改变世界

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

DotNetCore自动化部署.docx