Docker安裝(Debian8)-構建簡單的SpringBoot應用

安裝docker

1. 創建倉庫

  • 移除已安裝的docker(docker之前被稱爲docker或者docker-enginer如今稱爲docker-ce)java

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

    sudo apt-get update
  • 安裝包以容許APT在HTTPS上使用存儲庫spring

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

    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包vim

    sudo apt-get update
  • 安裝最新的docker cespringboot

    sudo apt-get install docker-ce
  • 若是須要安裝特定版本的docker cebash

    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,解決方法:app

    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是否安裝成功,若是下圖所示即爲安裝成功curl

    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]

相關文章
相關標籤/搜索