日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

可以說,Docker是目前市面上比較流行的容器技術之一。

本節我們將帶領大家一起使用Docker來演示如何構建、運行、發布微服務。

十年失眠架構師教你使用Docker來構建、運行、發布微服務

 

Docker的安裝

原先,Docker只支持linux環境下的安裝。自從微軟與Docker展開了深入合作之后,對于windows平臺的支持力度也加大了許多。目前,已經知道支持的Windows平臺有Windows 10和Windows Server 2016。

本文將基于Windows 10來演示安裝的過程。本例所使用的Docker版本為17.09.1-ce-win42。

1.下載安裝Docker

下載位置可見https://docs.docker.com/docker-for-windows/install/#download-docker-for-windows

下載成功之后,可以獲取到Docker for Windows Installer.exe安裝文件。雙擊該文件,根據提示執行安裝即可。

安裝完畢后,會自動啟動Docker。狀態欄中顯示了Docker圖標,說明Docker正在運行,可以從終端訪問。

單擊頂部狀態欄中的Docker 圖標,并選擇“About Docker”,來驗證所安裝的是否是最新的版本。

2.驗證安裝

為了驗證安裝是否正確,可以在命令行工具( cmd.exe或PowerShell)中執行下列命令來驗證Docker Engine、Compose及 machine。

C:lUsersAdministrator>docker --versionDocker version 17.09.1-ce, build 19e2cf6

C:UsersAdministrator>docker-compose --versiondocker-compose version 1.17.1,build 6d101fb0

C:lUsers Administrator>docker-machine --versiondocker-machine version 0.13.0,build 9ba6da9

 

十年失眠架構師教你使用Docker來構建、運行、發布微服務

 

Docker的簡單使用

接下來我們將通過一些簡單的示例,來熟悉Docker的基本用戶。使用命令行工具來執行Docker相關的命令。

1.查看容器列表

執行docker ps可以查看已經安裝的容器。

C:lUsersAdministrator>docker ps

CONTAINER ID IMAGE COMMAND CREATED

STATUS PORTS NAMES

正如上面所輸出的那樣,一開始,我們的容器列表是空的。

⒉.查看Docker的版本信息

執行docker version可以查看Docker 的版本信息。

C:Users Administrator>docker version

Client:

version:17.09.1-ce

APIversion:1.32

Go version:go1.8.3

Git commit: 19e2cf6

Built: Thu Dec 722:22:26 2017

oS/Arch:windows/amd64

Server:

version:17.09.1-ce

API version:1.32 (minimumversion 1.12)

Go version:gol.8.3

Git commit:19e2cf6

Built: Thu Dec 7 22:28:28 2017

OS/Arch:linux/amd64

Experimental:true

3.查看Docker的詳細信息

執行 docker info可以查看Docker 的詳細信息。

C: lUserslAdministrator>docker info

Containers:o

Running:o

Paused:0

Stopped: 0

工mages:0

Server version:17.09.1-ce

Storage Driver: overlay2

Backing Filesystem:extfs

Supports d_type:true

Native Overlay Diff:true

Logging Driver: json-file

cgroup Driver:cgroupfs

Plugins:

volume: local

Network: bridge host ipvlan macvlan null overlay

Log: awslogs fluentd gcplogs gelf journald json-file logentries splunk

syslog

Swarm: inactive

Runtimes:runc

Default Runtime: runc

Init Binary:docker-init

containerd version: 06b9cb35161009dcb7123345749fef027cea8e0

runc version:328b84a7773d38244dd690525642a72156c64

init version:949e6fa

Security Options:

seccomp

Profile: default

Kernel version: 4.9.49-moby

operating System: Alpine Linux v3.5

OSType:linux

Architecture:x86 64

CPUs:2

Total Memory: 1.934GiB

Name: moby

ID:FB3K:DR7K:UX7V:23AU:MPDR:E2NJ:R746:JFU5:730V:P2RU:YQ7F:MYPF

Docker Root Dir:/var/lib/docker

Debug Mode (client):false

Debug Mode (server) :true

File Descriptors:16

Goroutines:25

System Time:2017-12-22T15:40:01.6330973z

EventsListeners:o

Registry:https://index.docker.io/v1/

Experimental:true

Insecure Registries:

127.0.0.0/8

Live Restore Enabled: false

4.運行容器

執行docker run hello-world可以測試運行容器。

C:UsersAdministrator>docker run hello-world

Unable to find image 'hello-world:latest' locally

latest: Pulling from library/hello-world

ca4f61b1923c:Pull complete

Digest:sha256:445b2fe9afea8b4aa0b227fe49dd6ad130dfe7a8fd0832be5de

99625dad47cd

Status: Downloaded newer image for hello-world:latest

Hello from Docker!

This message shows that your installation Appears to be working

correctly.

To generate this message,Docker took the following steps:

1.The Docker client contacted the Docker daemon.

2. The Docker daemon pulled the "hello-world" image from the DockerHub.

(amd64))

3.The Docker daemon created a new container from that image which runstheexecutable that produces the output you are currently reading.

4.The Docker daemon streamed that output to the Docker client,which

sent it

toyour terminal.

To try something more ambitious,you can run an Ubuntu container with:

$docker run-it ubuntu bash

Share images,automate workflows,and more with a free Docker ID:

https://cloud.docker.com/

For more examples and ideas, visit:

https://docs.docker.com/engine/userguide/

其中:

  • . hello-world是一個用于測試的非常簡單的程序。該程序執行之后,會輸出上述文本內容;
  • .hello-world是托管于Docker Hub上的一個image;
  • 執行docker run hello-world之后,會先在本地查找是否存在hello-world image,如果沒有找到,則聯網到Docker Hub上下載;
  • ·找到hello-world image后,就運行容器。

 Docker運行微服務

下面,我們就演示下如何用Docker來運行微服務。

1.創建微服務

我們在之前所創建的hello-world應用的基礎上,生成一個新的應用hello-world-docker,用于微服務示例。

同時,我們執行gradlew build來編譯hello-world-docker應用。編譯成功之后,就能運行該編譯文件。

JAVA-jar build/libs/hello-world-docker-1.0.0.jar

此時,在瀏覽器訪問http:/localhost:8080/hello,應能看到“Hello World! Welcome to visit way-lau.com!”字樣的內容,則說明該微服務構建成功。

2.微服務容器化

我們需要將微服務應用包裝為Docker容器。Docker使用 Dockerfile文件格式來指定image層。

我們在 hello-world-docker應用的根目錄下創建Dockerfile文件。

EROM openjdk:8-jdk-alpine

VOLUME/tmp

ARG JAR FILE

ADD ${JAR FILE}app.jar

ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom", "-jar","/

app.jar"]

這個Dockerfile是非常簡單的,因為本例子中的微服務應用相對比較簡單。其中:

·FROM可以理解為我們這個image依賴于另外一個image。因為我們的應用是一個Java應用,所以依賴于JDK;

·項目JAR文件以“app.jar”的形式添加到容器中,然后在ENTRYPOINT中執行;

. VOLUME指定了臨時文件目錄為/tmp。其效果是在主機/var/lib/docker目錄下創建了一個臨時文件,并鏈接到容器的/tmp。該步驟是可選的,如果涉及文件系統的應用,就很有必要了。/tmp目錄用來持久化到Docker數據文件夾,因為Spring Boot使用的內嵌Tomcat容器默認使用/tmp 作為工作目錄;

·為了縮短Tomcat啟動時間,添加一個系統屬性指向/dev/./urandomo

3.使用Gradle來構建Docker image

為了使用Gradle來構建Docker image,需要添加docker插件在應用的build.gradle中。

buildscript {

dependencies{

...

classpath ('gradle.plugin.com.palantir.gradle.docker:gradle-dock-

er:0.17.2')

apply plugin: 'com.palantir.docker'

docker {

name "${project.group}/${jar.baseName }"

files jar.archivePath

buildArgs(['JAR_FILE':"${jar.archiveName}"])

 

執行gradlew build docker來構建Docker image。

 

>gradlew build docker --info

...

Starting process 'command 'docker' '. Working directory:D:|workspaceGi

tosclspring-cloud-microservices-developmentsampleshello-world-docker

builddocker Command:docker build --build-arg JAR_FILE=hello-world-

docker-1.0.0.jar-t com.waylau.spring.cloud/hello-world-docker .

Successfully started process 'command 'docker''

2fdfelcd78c2:Pulling fs layer

82630fd6e5ba: Pulling fs layer

00151leb3437:Pulling fs layer

82630fd6e5ba:verifying Checksum

82630fd6e5ba:Download complete

2fdfelcd78c2:verifying Checksum

2fdfelcd78c2:Download complete

2dfelcd78c2:Pull complete

82630fd6e5ba: Pull complete

001511eb3437:Verifying Checksum

001511eb3437: Download complete

0015l1eb3437: Pull complete

Digest:sha256:388566cc68259a0019004c2d343dd6c69b83914dc5c458be959271

a2761795

Status:Downloaded newer image for openjdk:8-jdk-alpine

-—-> 3642e636096d

Step 2/5 :VOLUME /tmp

---> Running in 40ff6fa809e8

--->f467a7dlc267

Removing intermediate container 40ff6fa809e8

step 3/5 :ARG JAR FILE

---> Running in 4872c7353093

--->4406b96eca35

Removing intermediate container 4872c7353093

Step 4/5 : ADD ${JAR_FILE} app-jar

---> a2e55472f1db

step 5/5:ENTRYPOINT java-Djava.security.egd=file:/dev/./urandom -jar

/app.jar

---> Running in f536a4993ca5

-―->527b7c667dd2

Removing intermediate container f536a4993ca5

Successfully built 527b7c667dd2

Successfully tagged com.waylau.spring.cloud/hello-world-docker:latest

SECURITY WARNING: You are building a Docker image from Windows against

a non-Windows Docker host. All files and directories added to build

context will have '-rWxr-Xr-x' permissions. It is recommended to double

check and reset permissions for sensitive files and directories.

:docker(Thread[Task worker,5,main]) completed.Took 15 mins 24.218

secs.

BUILD SUCCESSFUL in 15m 26s

9actionable tasks: 3 executed,6 up-to-date

Stoppedo worker daemon(s).

構建成功,可以在控制臺看到如上信息。因篇幅有限,這里省去大部分內容。

4.運行image

在構建Docker image完成之后,使用Docker來運行該image。

docker run -p 8080:8080 -t com.waylau.spring.cloud/hello-world-docker圖11-3展示了運行image的過程。

十年失眠架構師教你使用Docker來構建、運行、發布微服務

 

5.訪問應用

image運行成功后,就能在瀏覽器訪問http:/localhost:8080/hello,應能看到“Hello World! Wel-come to visit waylau.com!”字樣的內容。

6.關閉容器

可以先通過docker ps命令來查看正在運行的容器的ID,而后可以執行docker stop命令來關閉容器。命令如下。

C:UserslAdministrator>docker ps

CONTAINER ID IMAGE COMMAND

CREATED STATUS PORTS NAMES

7dde27af2b7b com.waylau.spring.cloud/hello-world-docker "java

0.0.0.0:8080-

-Djava.secur..." 4 minutes ago Up 4 minutes

>8080/tcpxenodochial_heyrovsky

C:lUsersAdministrator>docker stop 7dde27af2b7b7dde27af2b7b

Docker發布微服務

當我們的微服務包裝成為Docker的image之后,就能進行分發了。Docker Hub是專門用于托管image的云服務。用戶可以將自己的image推送到Docker Hub上,以方面其他人下載。

 Docker展望

雖然本文只是挑選了一個最簡單的Spring Boot微服務作為例子,但是可以完整呈現如何使用Docker構建、運行、發布一個微服務應用的整個過程。讀者可以舉一反三,將天氣預報系統中的其他微服務實例做相應的操作,實現天氣預報系統的容器化改造。為節約篇幅,本文不再對這個改造做詳細的描述。

源碼

本節示例所涉及的源碼見hello-world-docker。

十年失眠架構師教你使用Docker來構建、運行、發布微服務

分享到:
標簽:Docker
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定