溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Docker如何部署

發(fā)布時間:2021-11-18 16:12:53 來源:億速云 閱讀:156 作者:小新 欄目:云計(jì)算

這篇文章給大家分享的是有關(guān)Docker如何部署的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

一 : 概述

  • 我們將在 CentOS 7 上演示用 Docker 部署 Spring Boot 程序。

  • 我們需要編譯自己的 Docker 鏡像, 并運(yùn)行鏡像的容器。

  • 主流的云計(jì)算 (PAAS) 平臺都支持發(fā)布 Docker 鏡像。

二 : Dockerfile

(一) 介紹

  • Docker 是使用 Dokerfile 文件來編譯自己的鏡像的。

(二) 指令

  • FROM : 指明了當(dāng)前鏡像繼承的基鏡像

    • 編譯當(dāng)前鏡像時會自動下載基鏡像

    • 示例 : FROM ubuntu

  • MAINTAINER : (maintainer, 維護(hù)者) 指明了當(dāng)前鏡像的作者

    • 示例 : MAINTAINER info

  • RUN : 可以在當(dāng)前鏡像上執(zhí)行 Linux 命令并形成一個新的層

    • RUN /bin/bash -c "echo helloworld"

    • RUN ["/bin/bash", "-c", "echo hello"]

    • RUN 是編譯時(build)的動作

    • 示例 : 可有如下兩種格式, CMD 和 ENTRYPOINT 也是如此

  • CMD : (command, 命令/指令) 指明了啟動鏡像容器時的默認(rèn)行為

    • 一個 Dockerfile 里只能有一個 CMD 指令。CMD 指令里設(shè)定的命令可以在運(yùn)行鏡像時使用參數(shù)覆蓋。

    • CMD 是運(yùn)行時(run)的動作

    • 示例 : CMD echo "this is a test"

    • 可被 docker run-d image_name echo "this is not a test" 覆蓋。

  • EXPOSE : (expose, 暴露) 指明了鏡像運(yùn)行時的容器必需監(jiān)聽指定的端口。

    • 示例 : EXPOSE 8080

  • ENV : (environment, 環(huán)境) 可用來設(shè)置環(huán)境變量

    • 示例 : ENV myName=infoENV myName info

  • ADD : 從當(dāng)前工作目錄復(fù)制文件到鏡像目錄中去

    • 示例 : ADD test.txt /mydir/

  • ENTRYPOINT : (entrypoint, 入口點(diǎn)) 讓容器像一個可執(zhí)行程序一樣運(yùn)行, 這樣鏡像運(yùn)行時可以像軟件一樣接收參數(shù)執(zhí)行。

    • ENTRYPOINT 是運(yùn)行時(run)的動作。

    • 示例 : ENTRYPOINT ["/bin/echo"]

    • 我們可以向鏡像傳遞參數(shù)運(yùn)行 :

      docker run -d image_name "this is not a test"


三 : 安裝 Docker

  • 通過下面命令安裝 Docker :

    yum install docker


  • 啟動 Docker 并保持開機(jī)自啟 :

    systemctl start docker # 啟動docker
    systemctl enable docker # 設(shè)置開機(jī)啟動


四 : 項(xiàng)目目錄及文件

  • 新建 Spring Boot 項(xiàng)目, docker-demo, 這個項(xiàng)目很簡單, 只修改了入口類, 代碼如下 :

    @SpringBootApplication 
    @RestController
    public class DockerDemoApplication { 
        @RequestMapping("/") 
        public String home() { 
            return "Hello Docker!!"; 
        }
    
        public static void main(String[] args) { 
            SpringApplication.run(Ch20dockerApplication.class, args); 
        } 
    }


  • 在 CentOS 7 上的 /var/apps/dockerdemo 目錄下放入我們編譯好的 dockerdemo 的 jar 包, 如 dockerdemo-0.0.1-SNAPSHOT.jar, 在同級目錄下新建一個 Dokcerfile 文件。

  • Dockerfile 文件內(nèi)容如下 :

    FROM java:8 # 基鏡像為Java, 標(biāo)簽(版本)為8
    MAINTAINER info # 作者 info
    # 將我們的 dockerdemo-0.0.1-SNAPSHOT.jar 添加到鏡像中, 并重命名為app.jar
    ADD dockerdemo-0.0.1-SNAPSHOT.jar app.jar
    EXPOSE 8080 # 運(yùn)行鏡像的容器, 監(jiān)聽8080端口
    ENTRYPOINT ["java","-jar","/app.jar"] # 啟動時運(yùn)行java -jar app.jar


五 : 編譯鏡像

  • 在 /var/apps/dockerdemo 目錄下執(zhí)行下面命令, 執(zhí)行編譯鏡像 :

    docker build -t info/dockedemo .


  • 其中, info/dockedemo 為鏡像名稱, 我們設(shè)置 info 作為前綴, 這也是 Docker 鏡像的一種命名習(xí)慣。

  • 注意, 最后還有一個 ., 這是用來指明 Dockerfile 路徑的, . 表示 Dockerfile 在當(dāng)前路徑下。

  • 這時我們查看本地鏡像

    docker images


六 : 運(yùn)行

  • 通過下面命令運(yùn)行 :

    docker run -d --name test -p 8080:8080 info/dockerdemo


  • 查看我們當(dāng)前的容器狀態(tài)

    docker ps


  • 當(dāng)前的 CentOS 系統(tǒng)的 ip 為 192.168.25.11, 訪問 http://192.168.25.11:8080

感謝各位的閱讀!關(guān)于“Docker如何部署”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細(xì)節(jié)
推薦閱讀:
  1. docker部署svn
  2. 部署Docker

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI