Docker

一.为什么要用Docker

Docker 可以把开发环境直接封装转移给运维,运维直接部署封装后的环境就可以,而且docker 可以实现虚拟隔离应用环境的功能,并且开销比虚拟机小

1.什么是Docker

Docker 是一个开源的应用容器引擎,开发者可以打包自己的应用到容器里,然后迁移到其他机器的docker应用中,可以实现快速部署。如果出现的故障,可以通过镜像,快速恢复服务

2.docker的思想

  • Docker采用集装箱思想

    意思是将需要的内容和环境打包成一个个集装箱,所有的集装箱都可以上传到码头,当有人需要某个环境时,就从码头上拉取这个集装箱就可以 。码头的概念类似Maven仓库

  • Docker的隔离性

    docker在运行集装箱中的内容时,会在linux内核中,单独的开辟一个单元,不会影响到其他程序

  • Docker的标准化

    docker 提供了一系列的命令,帮助我们去创建,拉取集装箱

二.Docker的安装和配置

1.环境准备

操作系统:CentOs

软件源: 阿里云镜像

2.安装docker

可以参考: https://binghe.blog.csdn.net/article/details/105480007

  • 安装依赖

    yum -y install yum-utils device-mapper-persistent-data lvm2

  • 安装软件源

    yum-config-manager --add-repp http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

  • 安装docker-ce

    yum clean all 清除缓存

    yum makecache fast 本地缓存

    yum -y install docker-ce 安装docker

  • 检测是否安装成功

    systemctl start docker

    docker version

  • 查看当前所有镜像

    docker images

  • 查找镜像

    docker run 镜像名称

3.仓库,镜像,容器的关系和区别

docker的整个生命周期有3部分组成:仓库(repository)+镜像(image)+容器(container)

**仓库:**包含多个镜像的仓库,可以从仓库中拉取镜像,也可以将镜像推送到仓库

镜像:从仓库中拉取镜像,镜像是文件。这里的文件包含可执行文件,依赖软件,库文件,配置文件等等,也就是一个镜像可以包含一个完整的linux操作系统环境,里面仅安装了mysql或用户需要的其他应用程序

**容器:**由镜像创建容器,类似于给类实例化对象。docker容器类似于虚拟机,可以执行包含启动,停止,删除等。每个容器间是相互隔离的。容器中会运行特定的运用,包含特定应用的代码及所需要的依赖文件。可以把容器看作是一个linux环境(包含root用户权限,进程空间,用户空间和网络代码)和运行在其中的应用程序

4.拉取镜像

国内网址: https://hub.daocloud.io/repos/47f127d0-8f1d-4f91-9647-739cf3146a04 选择对应的镜像地址

命令:> docker pull 镜像名

5.镜像的使用

  • 运行容器

    docker run [options] 镜像名称 | 镜像标记

    其中: options 可以为

    -d :后台运行容器,并返回ID

    -p : 指定端口映射 格式: 主机端口:容器端口

    –name: 为容器指定一个名称

    –volumn,-v:绑定一个卷

    例如: docker run -d -p 8081:8080 --name tomcat 镜像名称(或者ID)

  • 查看容器

    docker ps

  • 启动容器

    docker start 容器名称

  • 停止容器

    指定 :docker stop 容器ID

    所有:docker stop $(docker ps -qa)

  • 查看所有容器

    docker ps -a

  • 查看运行的容器ID

    docker ps -qa

  • 删除容器

    指定: docker rm 容器ID

    所有:docker rm $(docker ps -qa)

  • 删除镜像

    指定: docker rmi 镜像ID

    所有: docker rmi $(docker ps -qa)

三.部署springboot项目

SpringBoot项目运行时需要用到Mysql,Tomcat,jdk或jre

1.拉取Mysql容器

拉取并创建容器: docker run -d -p 3307:3306 --name mysql -e MYSQL_ROOT_PASSWORD=root daocloud.io/library/mysql:8.0.21

MYSQL_ROOT_PASSWORD=root 设置 root 用户的密码

2.修改pom文件

<dependency>

   <groupId>org.springframework.boot</groupId>

   <artifactId>spring-boot-starter-web</artifactId>

   <!-- 从依赖信息里移除 Tomcat配置 -->

   <exclusions>

      <exclusion>

         <groupId>org.springframework.boot</groupId>

         <artifactId>spring-boot-starter-tomcat</artifactId>

      </exclusion>

   </exclusions>

</dependency>

3.修改启动类

继承 SpringBootServiceInitializer

重写 configure 方法: return builder.sources(启动类名.class)

4.修改springboot 中 mysql的配置信息

5.然后将项目重新达成war包,上传到服务器

6.配置到tomcat中

​ docker cp 项目.war tomcat的容器ID:/user/local/tomcat/webapps 下

然后 就可以访问咯

四.数据卷的使用

1.数据卷是干什么的?

现在的问题:

我们在部署项目的的时候会将war包复制到容器内,运行中产生的数据都在容器中,一旦容器删除,数据就会丢失,如果部署很多容器,每次都需要进入容器中进行配置?能不能外部进行配置,并实现数据共享?

我们的需求是:

我们希望数据可以持久化,即使删除掉容器,我们的数据还在,Docker容器产生的数据,能同步到本地,容器之间可以直接以数据数据共享

解决方案:

数据卷,也就是卷技术

卷技术就是为了实现数据的持久化和同步操作,容器间也是可以是数据共享的

2.数据卷的使用

  • 创建数据卷

    docker volume create 数据卷名称 # 默认存放目录 /var/lib/docker/volumes

  • 查看数据卷的详细信息

    docker volume inspect 数据卷名

  • 查看全部数据卷

    docker volume ls

  • 使用数据卷管理容器

    关联数据卷和容器:卷下的数据会与容器中的进行同步

    方法一

    数据卷存放在默认目录下 : /var/lib/docker/volumes

    docker run -d -p 8081:8080 --name tomcat -v tomcat_vol:/usr/local/tomcat/webapps b2

    # 创建tomcat 容器和数据卷关联

    方法二

    docker run -d -p 8081:8080 --name tomcat -v 指定目录下:/usr/local/tomcat/webapps b2

  • 删除卷

    docker volume rm 数据卷名称

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值