zoukankan      html  css  js  c++  java
  • Docker安装(Debian8)-构建简单的SpringBoot应用

    安装docker

    1. 建立仓库

    • 移除已安装的docker(docker以前被称为docker或者docker-enginer现在称为docker-ce)

      apt-get remove docker docker-engine docker.io docker-ce
      rm -rf /var/lib/docker/
      rm -rf /etc/docker/
    • 更新APT包

      sudo apt-get update
    • 安装包以允许APT在HTTPS上使用存储库

      sudo apt-get install 
           apt-transport-https 
           ca-certificates 
           curl 
           gnupg2 
           software-properties-common
    • 配置阿里云的apt源

      curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/debian/gpg | sudo apt-key add -
      sudo add-apt-repository 
      "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/debian 
      $(lsb_release -cs) 
      stable"

    2. 安装docker ce

    • 更新APT包

      sudo apt-get update
    • 安装最新的docker ce

      sudo apt-get install docker-ce
    • 如果需要安装特定版本的docker ce

      apt-cache madison docker-ce #查看可安装版本
      sudo apt-get install docker-ce=<VERSION_STRING> #替代值为第二列的版本号

    3. 检查docker安装结果

    • 查看docker状态启动结果,Active为active(running)状态

      systemctl status docker.service 
    • 可能出现安装失败,active状态为stop,通过查看/var/log/daemon.log,日志:Error starting daemon: Error initializing network controller: list bridge addresses failed: no available network,解决方法:

      apt-get install bridge-utils
      brctl addbr docker0
      ifconfig docker0 192.168.2.1
      echo 'DOCKER_OPTS="b=docker0"' >> /etc/default/docker
    • 通过hello-world镜像来验证docker是否安装成功,如果下图所示即为安装成功

      docker run hello-world

    制作简易SpringBoot工程镜像

    1. 新建springboot工程

    • 添加相关pom依赖后,创建HelloController便携代码:

      @RestController
      public class HelloController {
      
          @GetMapping("/hello")
          @ResponseBody
          public String hello(String name) {
              return "Hello world!";
          }
      }
    • pom中配置maven插件后,通过mvn命令导出jar,导出文件在工程的target目录中:

      mvn clean package

    2. 制作镜像

    • 创建Dockerfile,最好是空目录,注意文件大小写

      touch Dockerfile
      #Dockerfile的内容
      #指定基础镜像
      FROM openjdk:8
      RUN apt-get update 
          #安装基础工具
          && apt-get install -y --no-install-recommends locales net-tools iputils-ping curl wget telnet vim tzdata 
          #设置语言环境
          && locale-gen en_US.UTF-8 
          #设置时区,docker中默认使用UTC时间
          && echo "Asia/Shanghai" > /etc/timezone 
          && rm /etc/localtime 
          #重新配置tzdata软件包,使得时区设置生效
          && dpkg-reconfigure -f noninteractive tzdata
      
      #指定维护者信息,可不写
      MAINTAINER yehx 582097515@qq.com
      #容器工作目录,run -it进入docker后CD进入改目录
      WORKDIR /app
      #指定标签信息,可不写
      LABEL app="springboot-helloworld" version="1.0" by="yehx"
      #COPY工程的jar文件,会自动解压
      ADD ../springboot-helloworld-1.0-SNAPSHOT.jar ./
      #打开某个端口
      EXPOSE 8181
      #容器启动后需要执行的命令
      CMD java -jar springboot-helloworld-1.0-SNAPSHOT.jar
    • 制作镜像(最后. 代表当前路径)

      docker build -t springboot-helloworld:1.0 .

    3. 检查镜像

    • 查看镜像,可以看到刚刚制作好的镜像文件

      docker images
      REPOSITORY                        TAG                 IMAGE ID            CREATED             SIZE
      springboot-helloworld             1.0                 7484da556931        10 hours ago        660MB
    • 运行镜像

      #-p 8181:8181指定端口映射,让外部也可以访问这些应用,如果不用-p,可以通过--network host,将container与宿主机的网络相连通
      #--name指定运行后的容器名称
      #-d
      
      docker run -d -p 8181:8181 --name springboot-helloworld springboot-helloworld:1.0
      CONTAINER ID        IMAGE                       COMMAND                  CREATED             STATUS              PORTS                    NAMES
      833c1354f668        springboot-helloworld:1.0   "/bin/sh -c 'java -j…"   10 hours ago        Up 10 hours         0.0.0.0:8181->8181/tcp   springboot-helloworld
    • 查看镜像运行日志

      docker logs -f 833c1354f668

       

    • 访问/hello接口

    Docker Hub

    目前Docker官方维护了一个公共仓库叫Docker Hub,大部分需求都可以通过在Docker Hub中直接下载镜像来实现,并可以上传自己的镜像文件。

    1. 基本使用

      • 注册:在 https://cloud.docker.com 免费注册一个 Docker 账号
      • 登录:通过执行 docker login 命令交互式的输入用户名及密码来完成在命令行界面登录Docker Hub
      • 查询镜像:通过 docker search 命令来查找官方仓库中的镜像

      • 拉取镜像:利用 docker pull 命令来将它下载到本地

      • 推送镜像:可以在登录后通过 docker push 命令来将自己的镜像推送到 Docker Hub

        这边需要注意的是,推送前需要通过docker tag命令将镜像重新打标签,如果Docker Hub的账号用户名为usernamme,则新镜像名为username/[old-image]

  • 相关阅读:
    JS闭包应用-私有变量、柯里化、偏函数
    JS限流与防抖
    JS自定义事件与事件代理
    CSS 去除图片和父元素底部间隙
    logstash使用http收集日志送Kafka
    shell中if条件语句结尾fi前面如果有&可以没有;
    filebeat 采集日志送Kafka
    JavaScript通过reduce+递归实现树的深度遍历
    WebStorm配置vueCli+eslint+prettier保存自动格式化
    ECMAScript 6 promise
  • 原文地址:https://www.cnblogs.com/handsomeye/p/9647417.html
Copyright © 2011-2022 走看看