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]


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM