美文网首页
五、Spring Boot与Docker

五、Spring Boot与Docker

作者: 紫雨杰 | 来源:发表于2018-05-04 00:09 被阅读0次

一、简介

1、Docker是一个开源的应用容器引擎;是一个轻量级容器技术;类似于虚拟机技术,实现了虚拟机技术中的资源隔离,性能上远远高于虚拟机。
   基于 Go 语言 并遵从Apache2.0协议开源。
   让开发者可以打包他们的应用以及依赖包到一个轻量级、可移植的容器中,
   然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。更重要的是容器性能开销极低。

2、Docker支持将软件编译成一个镜像;然后在镜像中各种软件做好配置,将镜像发布出去,其它使用者可以直接使用这个镜像;
   运行中的这个镜像称为容器,容器启动是非常快速的。

3、Docker之所以火的很快,原因之一就是它的仓库。仓库类似于github,很多现成的镜像可以下载,
   比如直接用docker pull redis-server(这个名字是瞎起的)就可以拉下来一个redis服务器的镜像,放到自己的docker里就能用了,
   不用自己解决依赖、安装redis。好多开源工具都有docker镜像,这就使得用户只需要下载使用就行,完全省去了处理软件依赖、缺少库文件、
   安装部署等环节。

4、 docker目前只能运行于linux的64位系统之上,并且检查内核版本,返回的值要大于3.10才可以(能运行32位系统也是做过处理的,降低效率),
    官方提供了运行于windows上的工具,但是这个工具其实是集成一个微型的virtubox虚拟机,说白了还是得需要linux系统。
Docker.png

二、Docker核心概念

    ▲ docker镜像(Images):Docker 镜像是用于创建 Docker 容器的模板。 即软件打包好的镜像,放在docker仓库中;
                        
    ▲ docker容器(Container):镜像启动后的实例称为一个容器;容器是独立运行的一个或一组应用
             
    ▲ docker仓库(Registry):Docker 仓库用来保存各种打包好的软件镜像。
                           Docker Hub(https://hub.docker.com) 提供了庞大的镜像集合供使用

    ● docker客户端(Client):连接docker主机进行操作;客户端通过命令行或者其他工具使用Docker API 与 Docker 的守护进程通信
                           
    ● docker主机(Host):一个物理或者虚拟的机器用于执行Docker 守护进程和容器。即安装了Docker程序的机器(Docker直接安装在操作系统之上)


  1、使用Docker的步骤:
      1)、安装Docker
      2)、去Docker仓库找到这个软件对应的镜像;
      3)、使用Docker运行这个镜像,这个镜像就会生成一个Docker容器;
      4)、对容器的启动停止就是对软件的启动停止;

三、Docker安装

 1、安装linux虚拟机
      1)、VMWare、VirtualBox(VirtualBox是Oracle的一个轻量级的开源免费虚拟机,安装);
      2)、导入虚拟机文件【centos7.ova】;
                管理 - 导入虚拟电脑 - 选则要导入的虚拟机文件 - 下一步(注意选中重新初始化所有网卡的MAC地址) - 导入
                
      3)、双击启动linux虚拟机;使用默认 root/ 123456登陆
      4)、使用linux客户端连接linux服务器进行命令操作;
      5)、设置虚拟机网络;
                  选择桥接网络 -> 选好网卡 -> 选择接入网线;

      6)、设置好网络以后使用命令重启虚拟机的网络:
                   service network  restart

      7)、查看linux的ip地址 :  ip addr

      8)、使用客户端连接linux;   

 2、在linux虚拟机上安装docker

     ▲ 步骤:    
        1)、检查内核版本,必须是3.10及以上。 
                    使用命令:uname ‐r
                        
        2)、安装docker。   
                    使用命令:yum install docker

        3)、输入y确认安装

        4)、启动docker

              [root@localhost ~]# systemctl start docker
            

        5)、查看 docker 版本
                    使用命令:docker ‐v

              [root@localhost ~]# docker ‐v
              Docker version 1.12.6, build 3e8e77d/1.12.6

        5)、开机启动docker
                    使用命令:systemctl enable docker

              [root@localhost ~]# systemctl enable docker
              Created symlink from /etc/systemd/system/multi‐user.target.wants/docker.service to  
              /usr/lib/systemd/system/docker.service.


        6)、停止docker。
                    使用命令:systemctl stop docker

四、Docker常用命令&操作

 1、镜像操作

        操作                       命令                                                说明

        检索            docker search 关键字 eg:docker search redis    我们经常去docker hub上检索镜像的详细息,如镜像的TAG。

        拉取            docker pull 镜像名:tag                          :tag是可选的,tag表示标签,多为软件的版本,默认是latest

        列表            docker images                                  查看所有本地镜像

        删除            docker rmi image-id                            删除指定的本地镜像


  ● 镜像搜索网址:https://hub.docker.com/


 2、容器操作

              操作                命令                                                               说明

              运行      docker run --name container-name -d image-name                 --name:自定义容器名;-d:后台运行;
                        eg:docker run –name myredis –d redis                          image-name:指定镜像模板

              列表       docker ps(查看运行中的容器)                                    加上-a;可以查看所有容器

              停止       docker stop container-name/container-id                       停止当前运行的容器

              启动       docker start container-name/container-id                      启动容器

              删除       docker rm container-id                                        删除指定容器

            端口映射      -p 6379:6379                                                  -p: 主机端口(映射到)容器内部的端口
                         eg:docker run -d -p 6379:6379 --name myredis docker.io/redis

             容器日志     docker logs container-name/container-id                       查看容器的日志


   ▲ 更多命令 https://docs.docker.com/engine/reference/commandline/docker/
   ▲ 也可以参考每一个镜像的文档


        1)、搜索镜像
                [root@localhost ~]# docker search tomcat

        2)、拉取镜像
                [root@localhost ~]# docker pull tomcat
        
        3)、根据镜像启动容器
                docker run ‐‐name mytomcat ‐d tomcat:latest

        4)、docker ps
                查看运行中的容器

        5)、 停止运行中的容器
                docker stop 容器的id

        6)、查看所有的容器
                docker ps ‐a

        7)、启动容器
                docker start 容器id

        8)、删除一个容器
                docker rm 容器id

        9)、启动一个做了端口映射的tomcat
                [root@localhost ~]# docker run ‐d ‐p 8888:8080 tomcat
                ‐d:后台运行
                ‐p: 将主机的端口映射到容器的一个端口 主机端口:容器内部的端口

        10)、关闭linux的防火墙
                service firewalld status ;查看防火墙状态
                service firewalld stop:关闭防火墙

        11)、查看容器的日志
                docker logs container‐name/container‐id

五、安装MySQL

1、docker pull mysql

2、启动容器

  ● 错误的启动
      [root@localhost ~]# docker run ‐‐name mysql01 ‐d mysql
      42f09819908bb72dd99ae19e792e0a5d03c48638421fa64cce5f8ba0f40f5846
      mysql退出了
      [root@localhost ~]# docker ps ‐a
       CONTAINERID IMAGE   COMMAND              CREATED        STATUS        PORTS         NAMES
 
      42f09819908b mysql "docker‐entrypoint.sh" 34 seconds ago Exited  (1) 33 seconds ago mysql01       
      538bde63e500 tomcat "catalina.sh run" About an hour ago Exited  (143) About an hour ago compassionate_goldstine                   
      c4f1ac60b3fc tomcat "catalina.sh run" About an hour ago Exited   (143) About an hour ago lonely_fermi        
      81ec743a5271 tomcat "catalina.sh run" About an hour ago Exited   (143) About an hour ago sick_ramanujan
    

      //查看错误日志(但是没有进行端口映射,所以连接不上数据库)
      [root@localhost ~]# docker logs 42f09819908b
      error: database is uninitialized and password option is not specified
      You need to specify one of MYSQL_ROOT_PASSWORD, MYSQL_ALLOW_EMPTY_PASSWORD and MYSQL_RANDOM_ROOT_PASSWORD;
     【意思是这个三个参数必须指定一个】

  ★ 正确的启动
      [root@localhost ~]# docker run ‐‐name mysql01 ‐e MYSQL_ROOT_PASSWORD=123456 ‐d mysql
      b874c56bec49fb43024b3805ab51e9097da779f2f572c22c695305dedd684c5f

      [root@localhost ~]# docker ps
      CONTAINER ID IMAGE      COMMAND             CREATED      STATUS       PORTS   NAMES 
      b874c56bec49 mysql "docker‐entrypoint.sh" 4 seconds ago Up 3 seconds 3306/tcp mysql01

  ● 做了端口映射
      [root@localhost ~]# docker run ‐p 3306:3306 ‐‐name mysql02 ‐e MYSQL_ROOT_PASSWORD=123456 ‐d mysql
      ad10e4bc5c6a0f61cbad43898de71d366117d120e39db651844c0e73863b9434

      [root@localhost ~]# docker ps
      CONTAINER ID IMAGE      COMMAND            CREATED         STATUS        PORTS              NAMES
      ad10e4bc5c6a mysql "docker‐entrypoint.sh" 4 seconds ago Up 2 seconds 0.0.0.0:3306‐>3306/tcp mysql02

  ● 几个其他的高级操作
    1)、docker run ‐‐name mysql03 ‐v /conf/mysql:/etc/mysql/conf.d ‐e MYSQL_ROOT_PASSWORD=my‐secret‐pw ‐d mysql:tag

        把主机的/conf/mysql文件夹挂载到 mysqldocker容器的/etc/mysql/conf.d文件夹里面
        改mysql的配置文件就只需要把mysql配置文件放在自定义的文件夹下(/conf/mysql)

    2)、docker run ‐‐name some‐mysql ‐e MYSQL_ROOT_PASSWORD=my‐secret‐pw ‐d mysql:tag ‐‐character‐set‐server=utf8mb4  ‐‐collation‐server=utf8mb4_unicode_ci
         
        指定mysql的一些配置参数

相关文章

网友评论

      本文标题:五、Spring Boot与Docker

      本文链接:https://www.haomeiwen.com/subject/ckfslftx.html