项目部署环境工具docker(一)

一、认识docker

(一)、简介与概述

1.Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。

Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

2.  Docker的主要目标是‘build ,ship and run any app,anywhere’,也就是说通过对应用程序组件的封装,分发,部署,运行等生命周期的管理。使用户的app(可以是一个web应用程序或者数据库应用等)及其运行环境能够做到‘一次封装,到处运行’。

3.Linux容器技术的出现解决了这个问题。而docker就是基于他的基础上发展过来的。将应用运行到docker容器上面,而docker容器在任何操作系统上都是一致的,这就是实现跨平台跨服务器。只需要一次配置好环境,换到别的机子上就可以一键部署好,大大简化了操作。

4.容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

5.Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版) 和 EE(Enterprise Edition: 企业版),我们用社区版就可以了。

6.Docker实际上就是一个虚拟化轻量级linux服务器,可以解决我们在开发环境中运行配置问题。

(二)、为什么使用docker

Docker:虚拟化容器技术

Docker主要解决我们开发环境配置迁移的问题。

1.我们现在开发了一个javaweb项目,需要依赖很多环境配置 比如:Tomcat、JDK环境、Nginx、Redis环境等。

2.本地需要安装这些环境Tomcat、JDK环境、Nginx、Redis环境等,在打war包给运维部署在linux服务器,运维人员也需要在linux服务器上安装Tomcat、JDK环境、Nginx、Redis环境。

3.但是有时候可能会发生这些问题:我在本地运行环境没有问题,但是打包到Linux服务器运行总是遇到很多错误,大多数由于一些版本冲突影响。

4.所以在这时候我们就可以使用docker部署和安装软件就非常方便,直接将该springboot项目制作成一个镜像文件,镜像文件中包含jdk版本 tomcat版本信息  直接部署linux即可,减少依赖冲突概率。

看看linux安装mysql在不同的linux内核中安装,Mysql很容易发生版本冲突的问题。

(三)、使用docker的好处

  1. 简化配置 安装创建非常的方便
  2. 代码流水线(Code Pipeline)管理 传统项目部署可能需要经过很多环节,容易产生版本的依赖冲突问题,Docker给应用提供了一个从开发到上线均一致的环境,让代码的流水线变得简单不少。
  3. Devops 开发与运维一体化减少沟通的成本 (docker或者是k8s实现)
  4. 虚拟技术 快速部署
  5. 弹性扩容 

(四)、应用场景

1.Web 应用的自动化打包和发布。

2.自动化测试和持续集成、发布。

3.在服务型环境中部署和调整数据库或其他的后台应用。

4.从头编译或者扩展现有的 OpenShift 或 Cloud Foundry 平台来搭建自己的 PaaS 环境。

(五)虚拟机和容器的区别

1.什么是虚拟机:在一台物理机器上,利用虚拟化技术,虚拟出来多个操作系统,每个操作系统之间是隔离的。

2.从下到上理解上图:

最下面的一层就是物理机,可以是服务器,设置是一台个人电脑;

电脑上需要安装操作系统,比如我们安装了win10的操作系统;

再往上就是虚拟机软件了,比如我们常用的VirtualBox、VMWare,它们的作用是模拟计算机硬件;

继续向上,就是虚拟机模拟出来的操作系统了;

在虚拟的操作系统中,安装所需的软件、组件等。比如我们需要在虚拟操作系统中安装JDK、Tomcat等;

最后就是具体的应用了,例如部署到Tomcat中。

Docker :Docker是开源的应用容器引擎

3.依然从下往上看:

最下面两层,概念同上。

往上,可以看做Docker容器的管理器。

依赖和应用都被打包成了Docker镜像。例如,JDK、Tomcat、应用都被打包在了一起,运行在Docker容器里,容器和容器间是隔离的。

4.Docker和虚拟机的区别

(1)从两者的架构图上看,虚拟机是在硬件级别进行虚拟化,模拟硬件搭建操作系统;而Docker是在操作系统的层面虚拟化,复用操作系统,运行Docker容器

(2)Docker的速度很快,秒级,而虚拟机的速度通常要按分钟计算。

(3)Docker所用的资源更少,性能更高。同样一个物理机器,Docker运行的镜像数量远多于虚拟机的数量。

(4)虚拟机实现了操作系统之间的隔离,Docker是进程之间的隔离,虚拟机隔离级别更高、安全性方面也更强。

(5)虚拟机和Docker各有优势,不存在谁替代掉谁的问题,很多企业都采用物理机上做虚拟机,虚拟机中跑Docker的方式。

特性

容器

虚拟机

启动速度

秒级

分钟级别

硬盘使用

一般为MB

一般GB

性能

接近原生

弱于

系统支持量

单机支持上千个容器

一般几十个

隔离性

完全隔离

完全隔离

(五)docker的获取与安装

1.Docker官网

Docker Docs

Docker: Accelerated Container Application Development

2.Docker安装

Docker 要求 CentOS7 系统的内核版本 3.10以上 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 。

1、通过 uname -r 命令查看你当前的内核版本
uname -r
2、使用 root 权限登录 Centos。确保 yum 包更新到最新。
yum -y update

该过程大概需要维持10分钟左右

3、卸载旧版本(如果安装过旧版本的话)
yum remove docker docker-common docker-selinux docker-engine

4、安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
yum install -y yum-utils device-mapper-persistent-data lvm2

 

5、设置yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

6、可以查看所有仓库中所有docker版本,并选择特定版本安装
yum list docker-ce --showduplicates | sort -r
7、安装docker
sudo yum install -y docker-ce     #由于repo中默认只开启stable仓库,故这里安装的是最新稳定版18.03.1
8、启动并加入开机启动
systemctl start docker
systemctl enable docker
9、验证安装是否成功(有client和service两部分表示docker安装启动都成功了)
docker version

二、docker核心入门

(一)、docker的组成

镜像文件

容器

仓库

1.镜像:简单理解为就是一个安装包,里面包含容器所需要运行的的基础文件和配置信息,比如:redis镜像、mysql镜像等。

镜像的来源方式:

  1. 自己做镜像  比如(自己开发微服务项目)
  2. 拉取别人制作好的镜像, 例如 nginx、mysql、redis等。

2.容器: 容器就是镜像运行的实例,容器状态分为:初创建、运行、停止、暂停、

删除, 一个镜像可以创建多个不同的容器。

每个镜像文件都有自己独立ip信息---轻量级的linux服务器 虚拟化

比如:镜像就是类  容器就是实例对象

3.仓库: 仓库可以简单理解为,专门存储镜像文件仓库, 类似于 谷歌手机市场,统一在

谷歌手机市场下载开发者的安装包。

Docker 公开仓库地址: Docker hub

https://hub.docker.com/

Docker官方仓库:https://hub.docker.com/ ----访问比较慢

  1. 需要制作镜像文件(springboot项目)------类似于开发者开发安装应用程序打包
  2. 需要将我们制作好的镜像文件提交到docker仓库中-----开发者将自己的app应用程序发布安卓手机助手中。
  3. 本地需要拉去我们docker仓库中下载镜像文件,在交给我们容器运行---用户从app市场中下载安装包运行。

 (二)、docker镜像的下载与配置

1.Docker  pull 从远程docker 官方仓库下载 镜像,到本地,在使用容器运行该镜像。

注意的是:docker官方镜像仓库地址部署在国外,下载镜像可能比较慢,建议配置国内加速镜像。

 2.docker加载镜像配置

https://hub.docker.com/search?q=redis&type=image ---在国外访问可能比较慢

国内从 DockerHub 拉取镜像有时会遇到困难,此时可以配置镜像加速器。Docker 官方和国内很多云服务商都提供了国内加速器服务,例如:

科大镜像:https://docker.mirrors.ustc.edu.cn/

网易:https://hub-mirror.c.163.com/

阿里云:https://<你的ID>.mirror.aliyuncs.com

七牛云加速器:https://reg-mirror.qiniu.com

当配置某一个加速器地址之后,若发现拉取不到镜像,请切换到另一个加速器地址。国内各大云服务商均提供了 Docker 镜像加速服务,建议根据运行 Docker 的云平台选择对应的镜像加速服务。

3.使用阿里云加载镜像配置

阿里云镜像获取地址:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors,登陆后,左侧菜单选中镜像加速器就可以看到你的专属地址了:

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://66mzqrih.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

 

如何查看加速镜像安装成功

输入:docker info

 (三)docker的常用指令

docker --help  帮助命令
docker --version
docker -version
docker images
查看本地images 镜像缓存

docker images 查看本地镜像文件
docker rmi -f kibana:5.6.9 ---删除镜像文件

REPOSITORY 存储库名称
Tag  镜像的标签  不写版本号码 默认下载最新latest镜像
IMAGE ID  镜像id
CREATED 创建时间
SIZE 大小

docker images -a
docker images -q ---只显示镜像的id
docker images --digests ---显示镜像的摘要信息
docker images --no-trunc ---显示完整镜像信息

docker rmi tomcat(镜像文件名称) 

docker search 
docker search mysql 
https://hub.docker.com/ 

docker search -s 30 mysql  列出点赞数超过30以上。

latest 表示为最新的镜像文件 mysql8.0版本

docker pull

latest -----tag 最新版本的镜像文件

docker pull nginx:latest --默认的情况下 下载最新版本的镜像  可以通过
https://hub.docker.com/_/nginx?tab=tags&page=1&ordering=last_updated

容器管理
查看容器信息
Docker  ps  获取到容器id
查看该容器更深度的信息
docker inspect  1e07cc5cc78d
运行容器
docker run
docker run -i(保持容器一直运行)-t(给容器一个伪终端)-d(后台运行,不直接进入容器) --name=tomcat9.2(给启动容器起名字)-p 8080:8080(宿主:docker容器)tomcat:9.2(启动的容器)  【参数】(加入容器初始化命令)
#通过 -it 启动的容器有两个特点 一创建就进入容器 exit退出容器 容器就会停止运行  ---交互式容器
#通过 -id 创建的容器 docker exec -it tomcat9.2(--name起的名称)进入容器 exit退出容器 容器不会停止运行   ---守护式容器
docker ps 查看正在运行的容器
docker ps -a 查看运行和已经运行关闭大的容器
docker stop tomcat8  关闭容器
docker start tomcat8 启动容器
docker rm tomcat8 删除容器
docker inspect tomcat8 查看容器信息
docker exec 参数  进入容器
docker run 运行原理

docker run boyatop 

 

简单描述:首先会先从本地获取获取boyatop镜像文件,如果本地没有该镜像文件则会去

阿里云仓库查找该镜像文件,如果阿里云仓库也没有该镜像文件,则会报错找不到

镜像文件。

获取到镜像文件之后直接运行。

详细描述:

1.docker在本机缓存中  boyatop镜像文件,如果本地存在该镜像文件,则以该镜像文件作为模板在容器中运行。

2.如果本地缓存中,没有boyatop镜像文件 则会从dockerhub 或者加速镜像中查找,如果查找不到的话,则返回错误找不到该镜像。

3.如果能够查找到该镜像,则以该镜像作为模板运行。

 每个容器都有自己独立的网络 ip信息 运行成功 就是一个轻量级linux操作系统

启动容器
docker start 容器id
停止容器
docker stop  容器id
删除容器
docker rm  容器id
进入容器中

# 首先使用下面的命令,查看容器ID(CONTAINER ID):
docker ps -a
# 然后用下面的命令进入容器,就可以使用bash命令浏览容器里的文件:
docker exec -it [CONTAINER ID] bash
# 有的镜像没有bash命令,可以用对应的shell,比如sh
docker exec -it [CONTAINER ID] sh

  • 28
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值