<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # Docker 的 Hello World 示例 > 原文: [https://howtodoinjava.com/library/docker-hello-world-example/](https://howtodoinjava.com/library/docker-hello-world-example/) [Docker](https://www.docker.com/) 是用于將應用程序及其運行時環境打包在一起的開發人員工具,因此任何人都可以在任何其他計算機上部署和運行它們,而不會遇到運行時環境沖突。 它與虛擬機概念([虛擬化](https://en.wikipedia.org/wiki/Virtualization))非常相似,在虛擬機概念中,您可以獲取 VM 映像并在任何支持的硬件上運行它。 VM 中的所有內部程序將按其原始打包的方式運行。 **VM 和 docker 映像之間的區別**是 docker 映像不打包整個虛擬操作系統。 就像開發人員計算機中的其他進程一樣,它使用 OS 資源,僅打包應用程序,并且打包其特定于運行時的依賴項([容器化](http://www.theserverside.com/discussions/thread/80994.html))。 ![](https://img.kancloud.cn/b5/71/b571065afa647ec74dbc8c879d826acc_794x500.jpg) 虛擬化 vs 容器化 Docker 允許用戶發布 docker 映像并使用其他人在 [Docker Hub](https://hub.docker.com/) 等存儲庫中發布的映像。 在本教程中,學習在 Windows 中在 **Windows** 中安裝 Docker 容器,**創建 Docker 映像**和**部署 Docker 映像**(作為一個簡單的基于 spring boot 的微服務)。 開發人員機器。 ## Docker 安裝 要在 Windows 7 計算機上安裝 docker,請按照以下步驟操作: #### 為您的系統選擇合適的 Docker 安裝程序 在開始安裝過程之前,我們需要了解適合您所使用 Windows 的確切 Docker 版本。 Docker 提供了以下兩個版本的 Windows 發行版 * 對于 Windows 10,我們需要點擊此鏈接 [https://docs.docker.com/docker-for-windows/](https://docs.docker.com/docker-for-windows/) * 對于 Windows 7、8 和更早版本,我們需要使用 Docker 工具箱,這是官方鏈接:[https://docs.docker.com/toolbox/overview/](https://docs.docker.com/toolbox/overview/) 我們將按照本文的 Docker 工具箱安裝步驟進行操作。 #### 下載 Docker 安裝程序 我們首先需要從 [https://download.docker.com/win/stable/DockerToolbox.exe](https://download.docker.com/win/stable/DockerToolbox.exe) 下載 Docker 工具箱發行版,然后按照本地工作站中的安裝步驟進行操作。 #### 啟用硬件虛擬化技術 為了使 Docker 工具箱正常工作,我們需要確保您的 Windows 系統支持硬件虛擬化技術并且已啟用虛擬化。 Docker 在此處提供了詳細的步驟: [https://docs.docker.com/toolbox/toolbox_install_windows/#step-1-check-your-version](https://docs.docker.com/toolbox/toolbox_install_windows/#step-1-check-your-version)。 如果未啟用此功能,則需要轉到 BIOS 選項并啟用“硬件虛擬化”。 對于不同型號的計算機,BIOS 有所不同,因此請按照官方指南啟用它。 #### 運行 Docker 安裝程序 一旦下載了安裝程序并啟用了硬件虛擬化,就可以啟動安裝程序。 就像安裝向導指導下的另一個基于 Windows 的簡單安裝過程一樣。 #### 驗證您的安裝 要[驗證 docker 安裝](https://docs.docker.com/toolbox/toolbox_install_windows/#step-3-verify-your-installation),請從“桌面”或“開始”菜單中打開 Docker Quickstart Terminal 快捷方式。 驗證 Docker 提示即將到來,然后需要測試一些基本命令。 Docker 提示和示例 docker 命令將如下所示。 ![](https://img.kancloud.cn/b3/c1/b3c1fef36babe2fba58aaecf8b95da6b_1068x609.jpg) Docker 安裝驗證 #### 記下 Docker IP 現在,我們需要記下分配給該容器的 Docker IP。 我們將訪問此 IP,以訪問 Docker 內部安裝的應用程序。 要從命令提示符處了解 IP,請使用命令`docker-machine ip`。 這是命令的示例輸出。 請注意,此 IP 對于不同的 M / C 將有所不同。 ![](https://img.kancloud.cn/c6/6d/c66d592e3ac2bf8a9196de1df645b1d3_1066x57.jpg) docker 機器 IP 輸出 ## 創建 Docker Windows 映像 我們將首先創建基于 Spring Boot 的 REST API,添加特定于 docker 的配置,然后創建 docker 映像。 #### 創建 Spring REST 項目 開發一個簡單的 hello world [微服務](https://howtodoinjava.com/microservices/microservices-definition-principles-benefits/)進行測試。 我們使用 [Spring Boot](https://howtodoinjava.com/spring/spring-boot/spring-boot-jersey-example/) 和 [Maven](https://howtodoinjava.com/maven/) 和 Eclipse 作為 IDE。 添加 [REST](http://restfulapi.net) 端點,以便將該應用程序部署到 Docker 之后,我們可以通過訪問其余端點來對其進行測試。 ```java package com.example.howtodoinjava.hellodocker; import java.util.Date; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @SpringBootApplication public class HelloDockerApplication { public static void main(String[] args) { SpringApplication.run(HelloDockerApplication.class, args); } } @RestController class HelloDockerRestController { @RequestMapping("/hello/{name}") public String helloDocker(@PathVariable(value = "name") String name) { String response = "Hello " + name + " Response received on : " + new Date(); System.out.println(response); return response; } } ``` 使用服務器端口信息更新`resources/application.properties`。 ```java server.port = 9080 ``` 現在,通過將項目作為 Spring Boot 應用程序運行來測試此微服務。 #### 添加 Docker 配置 現在在根目錄中創建一個名為`Dockerfile`的文件,并將以下幾行添加為 Docker 配置。 ```java FROM openjdk:8-jdk-alpine VOLUME /tmp ADD target/hello-docker-0.0.1-SNAPSHOT.jar hello-docker-app.jar ENV JAVA_OPTS="" ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /hello-docker-app.jar" ] ``` Docker 在創建映像時使用它。 基本上是在聲明 Java 運行時信息和目標分發。 有關更多詳細信息,請遵循[ docker 構建器參考](https://docs.docker.com/engine/reference/builder/)。 #### 添加 Maven Docker 插件 在`pom.xml`文件中添加兩個 maven 插件,以便我們在創建實例時可以使用與 Docker 相關的 maven 命令。 這些插件是`dockerfile-maven-plugin`和`maven-dependency-plugin`。 我們使用了構建項目所需的最少配置。 ```java <plugin> <groupId>com.spotify</groupId> <artifactId>dockerfile-maven-plugin</artifactId> <version>1.3.4</version> <configuration> <repository>${docker.image.prefix}/${project.artifactId}</repository> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <executions> <execution> <id>unpack</id> <phase>package</phase> <goals> <goal>unpack</goal> </goals> <configuration> <artifactItems> <artifactItem> <groupId>${project.groupId}</groupId> <artifactId>${project.artifactId}</artifactId> <version>${project.version}</version> </artifactItem> </artifactItems> </configuration> </execution> </executions> </plugin> ``` #### 創建 Docker 映像 現在使用 maven 命令`mvn clean install dockerfile:build`創建 docker 鏡像。 ![](https://img.kancloud.cn/21/0d/210d02a1a0293801e4e27573b59c12d3_1071x453.jpg) 從 Docker 終端構建 Docker 映像 請確保在構建映像時本地應用程序未運行,在這種情況下,您可能會遇到 maven 構建失敗的情況,因為在干凈的步驟中,由于 Java 進程正在使用 jar,因此它將無法刪除目標文件夾。 這是 Maven 輸出日志在其中構建映像的最后幾行。 ```java [INFO] Image will be built as hello-howtodoinjava/hello-docker:latest [INFO] [INFO] Step 1/5 : FROM openjdk:8-jdk-alpine [INFO] Pulling from library/openjdk [INFO] Digest: sha256:2b1f15e04904dd44a2667a07e34c628ac4b239f92f413b587538f801a0a57c88 [INFO] Status: Image is up to date for openjdk:8-jdk-alpine [INFO] ---> 478bf389b75b [INFO] Step 2/5 : VOLUME /tmp [INFO] ---> Using cache [INFO] ---> f4f6473b3c25 [INFO] Step 3/5 : ADD target/hello-docker-0.0.1-SNAPSHOT.jar hello-docker-app.jar [INFO] ---> ce7491518508 [INFO] Removing intermediate container c74867501651 [INFO] Step 4/5 : ENV JAVA_OPTS "" [INFO] ---> Running in f7cd27710bf3 [INFO] ---> 086226135205 [INFO] Removing intermediate container f7cd27710bf3 [INFO] Step 5/5 : ENTRYPOINT sh -c java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /hello-docker-app.jar [INFO] ---> Running in 9ef14a442715 [INFO] ---> bf14919a32e2 [INFO] Removing intermediate container 9ef14a442715 [INFO] Successfully built bf14919a32e2 [INFO] Successfully tagged hello-howtodoinjava/hello-docker:latest [INFO] [INFO] Detected build of image with id bf14919a32e2 [INFO] Building jar: F:\Study\Technical Writings\docker\hello-docker\target\hello-docker-0.0.1-SNAPSHOT-docker-info.jar [INFO] Successfully built hello-howtodoinjava/hello-docker:latest [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ ``` ## 部署并運行 Docker 映像 因此,我們創建了 Docker 映像(即`hello-docker-0.0.1-SNAPSHOT-docker-info.jar`)。 我們還在本地計算機上運行了一個已安裝的 docker 容器。 現在,要在已安裝的 Docker 容器中運行 docker 映像,我們將使用以下命令。 ```java docker run -p 8080:9080 -t hello-howtodoinjava/hello-docker --name hello-docker-image ``` 在這里,選項`-p 8080:9080`很重要。 它表示將端口`8080`暴露為內部端口`9080`。 請記住,我們的應用程序正在 Docker 映像內的端口`9080`中運行,我們將從 Docker 容器外部的端口`8080`中對其進行訪問。 現在,使用 URL `http://192.168.99.100:8080/hello/sajal`訪問該應用程序。 請注意,瀏覽器輸出與`localhost`上獨立 REST API 的輸出相同。 ![Docker Localhost Output](https://img.kancloud.cn/3f/70/3f70fe779a83ee00913199fccfd77ee2_1114x305.jpg) Docker Localhost 輸出 #### 停止 Docker 容器 我們可以在終端中通過命令`docker ps`列出所有 docker 容器,并且可以使用命令`docker stop <name>` ![](https://img.kancloud.cn/4a/db/4adb8c17ec881f94021dcbcb43165131_1062x137.jpg) 停止 Docker 容器 ## 總結 我們學會了在 Windows OS 中安裝 Docker。 我們還學習了使用一個 REST 端點創建一個 spring boot 項目并為其構建 Docker 映像。 然后,我們學習了在 docker 容器中運行 docker 鏡像,并在 docker 鏡像中測試了 REST 端點。 Docker 是一個非常酷的工具,可以解決非常老的開發人員問題,“它可以在我的本地計算機上工作”。 現在,如果您的計算機可以正常運行,那么您當然也可以在其他計算機上運行它。 [下載源碼](https://howtodoinjava.com/wp-content/uploads/2017/08/hello-docker.zip) 學習愉快!
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看