Docker 基礎介紹與微服務應用
Docker簡介
Docker是一個開源的容器引擎缀匕,它有助于更快地交付應用艺蝴。 Docker可將應用程序和基礎設施層隔離腿准,并且能將基礎設施當作程序一樣進行管理贺嫂。使用 Docker可更快地打包滓鸠、測試以及部署應用程序,并可以縮短從編寫到部署運行代碼的周期第喳。
Docker的優(yōu)點如下:
- 簡化程序
Docker 讓開發(fā)者可以打包他們的應用以及依賴包到一個可移植的容器中糜俗,然后發(fā)布到任何流行的 Linux 機器上,便可以實現(xiàn)虛擬化曲饱。Docker改變了虛擬化的方式悠抹,使開發(fā)者可以直接將自己的成果放Docker中進行管理。方便快捷已經(jīng)是Docker的最大優(yōu)勢扩淀,過去需要用數(shù)天乃至數(shù)周的 任務楔敌,在Docker容器的處理下,只需要數(shù)秒就能完成引矩。
- 簡化部署
Docker 鏡像中包含了運行環(huán)境和配置梁丘,所以 Docker 可以簡化部署多種應用實例工作侵浸。比如 Web 應用旺韭、后臺應用氛谜、數(shù)據(jù)庫應用、大數(shù)據(jù)應用比如 Hadoop 集群区端、消息隊列等等都可以打包成一個鏡像部署值漫。
- 降低成本
一方面,云計算時代到來织盼,使開發(fā)者不必為了追求效果而配置高額的硬件Docker 改變了高性能必然高價格的思維定勢杨何。Docker 與云的結合,讓云空間得到更充分的利用沥邻。不僅解決了硬件管理的問題危虱,也改變了虛擬化的方式。
Docker相關概念:
- Docker daemon( Docker守護進程)
Docker daemon是一個運行在宿主機( DOCKER-HOST)的后臺進程唐全“u危可通過
Docker客戶端與之通信。
- Client( Docker客戶端)
Docker客戶端是 Docker的用戶界面邮利,它可以接受用戶命令和配置標識弥雹,并Docker daemon通信。docker build等都是 Docker的相關命令延届。
- Images( Docker鏡像)
Docker鏡像是一個只讀模板剪勿,它包含創(chuàng)建 Docker容器的說明。它和系統(tǒng)安裝光盤有點像方庭,使用系統(tǒng)安裝光盤可以安裝系統(tǒng)厕吉,同理,使用Docker鏡像可以運行 Docker鏡像中的程序械念。
- Container(容器)
容器是鏡像的可運行實例赴涵。鏡像和容器的關系有點類似于面向對象中,類和對象的關系订讼∷璐埽可通過 Docker API或者 CLI命令來啟停、移動欺殿、刪除容器寄纵。
- Registry
Docker Registry是一個集中存儲與分發(fā)鏡像的服務。構建完 Docker鏡像后脖苏,就可在當前宿主機上運行程拭。但如果想要在其他機器上運行這個鏡像,就需要手動復制棍潘。此時可借助 Docker Registry來避免鏡像的手動復制恃鞋。一個 Docker Registry可包含多個 Docker倉庫崖媚,每個倉庫可包含多個鏡像標簽,每個標簽對應一個 Docker鏡像恤浪。這跟 Maven的倉庫有點類似畅哑,如果把 Docker Registry比作 Maven倉庫的話,那么Docker倉庫就可理解為某jar包的路徑水由,而鏡像標簽則可理解為jar包的版本號荠呐。
Docker 的安裝
Docker 是一個開源的商業(yè)產(chǎn)品,有兩個版本:社區(qū)版(Community Edition砂客,縮寫為
CE)和企業(yè)版(Enterprise Edition泥张,縮寫為 EE)。企業(yè)版包含了一些收費服務鞠值,個人開發(fā)者一般用不到媚创。下面的介紹都針對社區(qū)版。
Docker CE 的安裝請參考官方文檔彤恶。
下面以CentOS為例安裝Docker钞钙。
1、Docker 要求 CentOS 系統(tǒng)的內核版本高于 3.10 粤剧,查看本頁面的前提條件來驗證你的CentOS 版本是否支持 Docker 歇竟。
通過 uname -r 命令查看你當前的內核版本
[root@node-100 software]# uname -r
3.10.0-327.el7.x86_64
2、使用 root 權限登錄 Centos抵恋。確保 yum 包更新到最新焕议。
[root@node-100 software]# yum -y update
3、卸載舊版本(如果安裝過舊版本的話)
[root@node-100 software]# yum remove docker docker-common docker-selinux docker-engine
4弧关、安裝需要的軟件包盅安, yum-util 提供yum-config-manager功能,另外兩個是
devicemapper驅動依賴的
[root@node-100 software]# yum install -y yum-utils device-mapper-persistent-data lvm2
5世囊、設置yum源
[root@node-100 software]# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
6别瞭、可以查看所有倉庫中所有docker版本,并選擇特定版本安裝
[root@node-100 software]# yum list docker-ce --showduplicates | sort -r
7株憾、安裝docker蝙寨,#由于repo中默認只開啟stable倉庫,故這里安裝的是最
新穩(wěn)定版18.03.1
[root@node-100 software]# sudo yum install docker-ce-18.03.1.ce
安裝完畢:
已安裝:
docker-ce.x86_64 0:18.03.1.ce-1.el7.centos
作為依賴被安裝:
audit-libs-python.x86_64 0:2.8.4-4.el7 checkpolicy.x86_64 0:2.5-8.el7 container-selinux.noarch 2:2.74-1.el7 libcgroup.x86_64 0:0.41-20.el7
libsemanage-python.x86_64 0:2.5-14.el7 libtool-ltdl.x86_64 0:2.4.2-22.el7_3 pigz.x86_64 0:2.3.3-1.el7.centos policycoreutils-python.x86_64 0:2.5-29.el7_6.1
python-IPy.noarch 0:0.75-6.el7 setools-libs.x86_64 0:3.3.8-4.el7
完畢嗤瞎!
8墙歪、啟動并加入開機啟動
[root@node-100 software]# systemctl start docker
[root@node-100 software]# systemctl enable docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
[root@node-100 software]#
9、驗證安裝是否成功(有client和service兩部分表示docker安裝啟動都成功了)
[root@node-100 software]# docker version
Client:
Version: 18.03.1-ce
API version: 1.37
Go version: go1.9.5
Git commit: 9ee9f40
Built: Thu Apr 26 07:20:16 2018
OS/Arch: linux/amd64
Experimental: false
Orchestrator: swarm
Server:
Engine:
Version: 18.03.1-ce
API version: 1.37 (minimum version 1.12)
Go version: go1.9.5
Git commit: 9ee9f40
Built: Thu Apr 26 07:23:58 2018
OS/Arch: linux/amd64
Experimental: false
[root@node-100 software]#
10贝奇、卸載docker(如有需要)
yum -y remove docker-engine
注意:需要配置鏡像加速器
我們可以借助阿里云的鏡像加速器虹菲,登錄阿里云
https://cr.console.aliyun.com/cn-hangzhou/mirrors
登錄后可以在容器鏡像服務中找到鏡像加速器
然后再操作文檔中找到如下內容
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://1glxkz12.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
然后根據(jù)上面顯示的,一步步執(zhí)行
sudo mkdir -p /etc/docker
cd /etc/docker
vim daemon.json
新增
{
"registry-mirrors": ["https://1glxkz12.mirror.aliyuncs.com"]
}
wq保存 然后重啟
sudo systemctl daemon-reload
sudo systemctl restart docker
Docker常用命令
鏡像相關命令
1掉瞳、搜索鏡像
可使用 docker search命令搜索存放在 Docker Hub中的鏡像毕源。
docker search java
執(zhí)行該命令后浪漠, Docker就會在Docker Hub中搜索含有 java這個關鍵詞的鏡像倉庫。
[root@node-100 docker]# docker search java
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
node Node.js is a JavaScript-based platform for s… 7028 [OK]
tomcat Apache Tomcat is an open source implementati… 2283 [OK]
java Java is a concurrent, class-based, and objec… 1946 [OK]
openjdk OpenJDK is an open-source implementation of … 1509 [OK]
ghost Ghost is a free and open source blogging pla… 926 [OK]
anapsix/alpine-java Oracle Java 8 (and 7) with GLIBC 2.28 over A… 389 [OK]
jetty Jetty provides a Web server and javax.servle… 288 [OK]
couchdb CouchDB is a database that uses JSON for doc… 261 [OK]
ibmjava Official IBM? SDK, Java Technology Edition … 64 [OK]
groovy Apache Groovy is a multi-faceted language fo… 62 [OK]
lwieske/java-8 Oracle Java 8 Container - Full + Slim - Base… 43 [OK]
cloudbees/jnlp-slave-with-java-build-tools Extends cloudbees/java-build-tools docker im… 25 [OK]
zabbix/zabbix-java-gateway Zabbix Java Gateway 16 [OK]
frekele/java docker run --rm --name java frekele/java 13 [OK]
davidcaste/alpine-java-unlimited-jce Oracle Java 8 (and 7) with GLIBC 2.21 over A… 11 [OK]
blacklabelops/java Java Base Images. 8 [OK]
fabric8/s2i-java S2I Builder Image for plain Java applications 7
rightctrl/java Oracle Java 3 [OK]
appuio/s2i-maven-java S2I Builder with Maven and Java 2 [OK]
cfje/java-test-applications Java Test Applications CI Image 1
cfje/java-resource Java Concourse Resource 1
cfje/java-buildpack Java Buildpack CI Image 1
appuio/s2i-gradle-java S2I Builder with Gradle and Java 1 [OK]
thingswise/java-docker Java + dcd 0 [OK]
cfje/cf-java-client Cloud Foundry Java Client CI Image 0
以上列表包含五列霎褐,含義如下:
- NAME:鏡像倉庫名稱址愿。
- DESCRIPTION:鏡像倉庫描述。
- STARS:鏡像倉庫收藏數(shù)瘩欺,表示該鏡像倉庫的受歡迎程度必盖,類似于 GitHub的stars0
- OFFICAL:表示是否為官方倉庫拌牲,該列標記為[0K]的鏡像均由各軟件的官方項目組創(chuàng)建和維護俱饿。
- AUTOMATED:表示是否是自動構建的鏡像倉庫。
2塌忽、下載鏡像
使用命令docker pull命令即可從 Docker Registry上下載鏡像
docker pull java:8
執(zhí)行該命令后拍埠,Docker會從 Docker Hub中的 java倉庫下載最新版本的 Java鏡像。如果要下載指定版本則在java后面加冒號指定版本土居,例如:docker pull java:8
3枣购、列出鏡像
[root@node-100 docker]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
以上列表含義如下
- REPOSITORY:鏡像所屬倉庫名稱。
- TAG:鏡像標簽擦耀。默認是 latest,表示最新棉圈。
- IMAGE ID:鏡像 ID,表示鏡像唯一識眷蜓。
- CREATED:鏡像創(chuàng)建時間分瘾。
- SIZE: 鏡像大小。
4吁系、刪除本地
使用 docker rmi命令即可刪除指定鏡像
docker rmi java
容器相關命令
1德召、新建并啟動容器
使用以下docker run命令即可新建并啟動一個容器,該命令是最常用的命令汽纤,它有很多選項上岗,下面將列舉一些常用的選項。
-d選項:表示后臺運行
-P選項:隨機端口映射
-p選項:指定端口映射蕴坪,有以下四種格式肴掷。
-- ip:hostPort:containerPort
-- ip::containerPort
-- hostPort:containerPort
-- containerPort
--net選項:指定網(wǎng)絡模式,該選項有以下可選參數(shù):
--net=bridge:默認選項背传,表示連接到默認的網(wǎng)橋呆瞻。
--net=host:容器使用宿主機的網(wǎng)絡。
--net=container:NAME-or-ID:告訴 Docker讓新建的容器使用已有容器的網(wǎng)絡配置续室。
--net=none:不配置該容器的網(wǎng)絡栋烤,用戶可自定義網(wǎng)絡配
例如:
docker run -d -p 91:80 nginx
這樣就能啟動一個 Nginx容器。
docker run添加了兩個參數(shù)挺狰,含義如下:
-d 后臺運行
-p 宿主機端口:容器端口 #開放容器端口到宿主機端口
訪問 http://192.168.5.100:91/明郭,將會看到nginx的主界面如下:
Welcome to nginx!
If you see this page, the nginx web server is successfully installed and working. Further configuration is required.
For online documentation and support please refer to nginx.org.
Commercial support is available at nginx.com.
Thank you for using nginx.
需要注意的是买窟,使用 docker run命令創(chuàng)建容器時,會先檢查本地是否存在指定鏡像薯定。如果本地不存在該名稱的鏡像Docker就會自動從 Docker Hub下載鏡像并啟動一個 Docker容器始绍。
[root@node-100 docker]# docker run -d -p 91:80 nginx
Unable to find image 'nginx:latest' locally
latest: Pulling from library/nginx
6ae821421a7d: Pull complete
da4474e5966c: Pull complete
eb2aec2b9c9f: Pull complete
Digest: sha256:dd2d0ac3fff2f007d99e033b64854be0941e19a2ad51f174d9240dda20d9f534
Status: Downloaded newer image for nginx:latest
6b3eead5d213dd274b92256965063557b1d7e5b55e273de08711ce1cb42debc7
[root@node-100 docker]#
2、列出容器
用 docker ps命令即可列出運行中的容器
[root@node-100 docker]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6b3eead5d213 nginx "nginx -g 'daemon of…" 2 minutes ago Up About a minute 0.0.0.0:91->80/tcp admiring_nobel
[root@node-100 docker]#
如需列出所有容器(包括已停止的容器)话侄,可使用-a參數(shù)亏推。該列表包含了7列,含義如下
- CONTAINER_ID:表示容器 ID年堆。
- IMAGE:表示鏡像名稱吞杭。
- COMMAND:表示啟動容器時運行的命令。
- CREATED:表示容器的創(chuàng)建時間变丧。
- STATUS:表示容器運行的狀態(tài)芽狗。UP表示運行中, Exited表示已停止痒蓬。
- PORTS:表示容器對外的端口號童擎。
- NAMES:表示容器名稱。該名稱默認由 Docker自動生成攻晒,也可使用 docker run命令的--name選項自行指定顾复。
3、停止容器
使用 docker stop命令鲁捏,即可停止容器
[root@node-100 docker]# docker stop 6b3eead5d213
6b3eead5d213
[root@node-100 docker]#
其中6b3eead5d213是容器 ID,當然也可使用 docker stop容器名稱來停止指定容器
4芯砸、強制停止容器
可使用 docker kill命令發(fā)送 SIGKILL信號來強制停止容器
[root@node-100 docker]# docker kill 6b3eead5d213
5、啟動已停止的容器
使用docker run命令碴萧,即可新建并啟動一個容器乙嘀。對于已停止的容器,可使用 docker
start命令來啟動
[root@node-100 docker]# docker start 6b3eead5d213
6b3eead5d213
[root@node-100 docker]#
6破喻、查看容器所有信息
[root@node-100 docker]# docker inspect 6b3eead5d213
7虎谢、查看容器日志
[root@node-100 docker]# docker container logs 6b3eead5d213
192.168.5.1 - - [16/Feb/2019:10:14:57 +0000] "GET / HTTP/1.1" 200 612 "-" "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)" "-"
2019/02/16 10:14:58 [error] 5#5: *3 open() "/usr/share/nginx/html/favicon.ico" failed (2: No such file or directory), client: 192.168.5.1, server: localhost, request: "GET /favicon.ico HTTP/1.1", host: "192.168.5.100:91"
192.168.5.1 - - [16/Feb/2019:10:14:58 +0000] "GET /favicon.ico HTTP/1.1" 404 555 "-" "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)" "-"
[root@node-100 docker]#
8、查看容器里的進程
[root@node-100 docker]# docker top 6b3eead5d213
UID PID PPID C STIME TTY TIME CMD
root 39956 39944 0 18:21 ? 00:00:00 nginx: master process nginx -g daemon off;
101 39984 39956 0 18:21 ? 00:00:00 nginx: worker process
[root@node-100 docker]#
9曹质、進入容器
使用docker container exec命令用于進入一個正在運行的docker容器婴噩。如果docker run命令運行容器的時候,沒有使用-it參數(shù)羽德,就要用這個命令進入容器几莽。一旦進入了容器,就可以在容器的 Shell 執(zhí)行命令了
[root@node-100 docker]# docker container exec -it 6b3eead5d213 /bin/bash
root@6b3eead5d213:/# ls
bin dev home lib64 mnt proc run srv tmp var
boot etc lib media opt root sbin sys usr
root@6b3eead5d213:/#
exit退出
10宅静、刪除容器
使用 docker rm命令即可刪除指定容器
[root@node-100 docker]# docker rm 6b3eead5d213
該命令只能刪除已停止的容器章蚣,如需刪除正在運行的容器,可使用-f參數(shù)
將微服務運行在docker上
使用Dockerfile構建Docker鏡像
Dockerfile是一個文本文件姨夹,其中包含了若干條指令纤垂,指令描述了構建鏡像的細節(jié)先來編寫一個最簡單的Dockerfile矾策,以上文下載的Nginx鏡像為例,來編寫一Dockerfile修改該nginx鏡像的首頁
新建一個目錄
mkdir -p /usr/local/docker/app
cd /usr/local/docker/app
新建文件
vim Dockerfile
添加以下兩行內容
from nginx
run echo '<h1>this is my nginx!</h1>' > /usr/share/nginx/html/index.html
該Dockerfile非常簡單峭沦,其中的 FORM贾虽、 RUN都是 Dockerfile的指令寇仓。 FROM指令用于指定基礎鏡像笤虫, RUN指令用于執(zhí)行命令。
在Dockerfile所在路徑執(zhí)行以下命令構建鏡像:
[root@node-100 app]# docker build -t nginx:demo .
Sending build context to Docker daemon 2.048kB
Step 1/2 : from nginx
---> f09fe80eb0e7
Step 2/2 : run echo '<h1>this is my nginx!</h1>' > /usr/share/nginx/html/index.html
---> Running in 20dda34eb953
Removing intermediate container 20dda34eb953
---> a838995d130c
Successfully built a838995d130c
Successfully tagged nginx:demo
[root@node-100 app]#
其中眼坏,-t指定鏡像名字菇肃,命令最后的點(.)表示Dockerfile文件所在路徑
執(zhí)行以下命令地粪,即可使用該鏡像啟動一個 Docker容器
[root@node-100 app]# docker run -d -p 92:80 nginx:demo
0134ab93afa5dee00097e67bf02a7f13c8a8081418d030ef93eabda0bcc7f5cc
訪問http://192.168.5.100:92/ 進行查看,顯示如下
this is my nginx!
Dockerfile常用指令
命令 | 描述 | |
---|---|---|
FROM | 基礎鏡像文件 | |
RUN | 構建鏡像階段執(zhí)行命令ADD <src> <dest> | 添加文件巷送,從src目錄復制文件到容器的dest驶忌,其中 src可以是Dockerfile所在目錄的相對路徑矛辕,也可以是一個 URL,還可以是一個壓縮包 |
COPY | 拷貝文件笑跛,和ADD命令類似,但不支持URL和壓縮包 | |
CMD | 容器啟動后執(zhí)行命令 | |
EXPOSE | 聲明容器在運行時對外提供的服務端口 | |
WORKDIR | 指定容器工作路徑 | |
ENV | 指定環(huán)境變量 | |
ENTRYPINT | 容器入口聊品, ENTRYPOINT和 CMD指令的目的一樣飞蹂,都是指定Docker容器啟動時執(zhí)行的命令,可多次設置翻屈,但只有最后一個有效陈哑。 | |
USER | 該指令用于設置啟動鏡像時的用戶或者 UID,寫在該指令后的 RUN、CMD以及ENTRYPOINT指令都將使用該用戶執(zhí)行 | |
VOLUME | 指定掛載點伸眶,該指令使容器中的一個目錄具有持久化存儲的功能惊窖,該目錄可被容器本身使用,也可共享給其他容器厘贼。當容器中的應用有持久化數(shù)據(jù)的需求時可以在 Dockerfile中使用該指令界酒。格式為:VOLUME["/data"]。 |
注意:
RUN命令在 image 文件的構建階段執(zhí)行嘴秸,執(zhí)行結果都會打包進入 image 文件毁欣;
CMD命令則是在容器啟動后執(zhí)行。另外岳掐,一個 Dockerfile 可以包含多個RUN命令凭疮,但是只能有一個CMD命令。注意串述,指定了CMD命令以后执解,docker container run命令就不能附加命令了(比如前面
的/bin/bash),否則它會覆蓋CMD命令
使用Dockerfile構建微服務鏡像
為了方便纲酗,去 https://start.spring.io/
創(chuàng)建一個簡單的SpringBoot項目衰腌,maven編譯成jar
下面開始將可運行jar包構建成docker鏡像
創(chuàng)建一個測試目錄
[root@node-100 docker]# mkdir springboot
[root@node-100 docker]# cd springboot/
[root@node-100 springboot]# pwd
/usr/local/docker/springboot
[root@node-100 springboot]#
上傳jar包到該目錄逝淹,在jar包所在目錄創(chuàng)建名為Dockerfile的文件
[root@node-100 springboot]# vim Dockerfile
新增如下內容
# 基于哪個鏡像
From java:8
# 將本地文件夾掛載到當前容器
VOLUME /tmp
# 復制文件到容器
ADD springboot-demo-0.0.1-SNAPSHOT.jar /springboot.jar
# 聲明需要暴露的端口
EXPOSE 10086
# 配置容器啟動后執(zhí)行的命令
ENTRYPOINT ["java","-jar","/springboot.jar"]
保存后使用docker build命令構建
[root@node-100 springboot]# docker build -t springboot:0.0.1 .
Sending build context to Docker daemon 16.73MB
Step 1/5 : FROM java:8
8: Pulling from library/java
5040bd298390: Pull complete
fce5728aad85: Pull complete
76610ec20bf5: Pull complete
60170fec2151: Pull complete
e98f73de8f0d: Pull complete
11f7af24ed9c: Pull complete
49e2d6393f32: Pull complete
bb9cdec9c7f3: Pull complete
Digest: sha256:c1ff613e8ba25833d2e1940da0940c3824f03f802c449f3d1815a66b7f8c0e9d
Status: Downloaded newer image for java:8
---> d23bdf5b1b1b
Step 2/5 : VOLUME /tmp
---> Running in 030476e68207
Removing intermediate container 030476e68207
---> e1928fb571dc
Step 3/5 : ADD springboot-demo-0.0.1-SNAPSHOT.jar /springboot.jar
---> 942309050024
Step 4/5 : EXPOSE 8761
---> Running in ddf0e47c7be0
Removing intermediate container ddf0e47c7be0
---> 3b4bb5b9da39
Step 5/5 : ENTRYPOINT ["java","-jar","/springboot.jar"]
---> Running in 842ec587196a
Removing intermediate container 842ec587196a
---> 966885bc8baa
Successfully built 966885bc8baa
Successfully tagged springboot:0.0.1
[root@node-100 springboot]#
啟動鏡像,加-d可在后臺啟動
[root@node-100 springboot]# docker run -p 8761:8761 springboot:0.0.1
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.2.0.BUILD-SNAPSHOT)
2019-02-16 16:24:26.512 INFO 1 --- [ main] c.d.s.s.SpringbootDemoApplication : Starting SpringbootDemoApplication v0.0.1-SNAPSHOT on e6429e81d454 with PID 1 (/springboot.jar started by root in /)
2019-02-16 16:24:26.530 INFO 1 --- [ main] c.d.s.s.SpringbootDemoApplication : No active profile set, falling back to default profiles: default
2019-02-16 16:24:32.404 INFO 1 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http)
2019-02-16 16:24:34.451 INFO 1 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2019-02-16 16:24:34.452 INFO 1 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.16]
2019-02-16 16:24:34.485 INFO 1 --- [ main] o.a.catalina.core.AprLifecycleListener : The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: [/usr/java/packages/lib/amd64:/usr/lib/x86_64-linux-gnu/jni:/lib/x86_64-linux-gnu:/usr/lib/x86_64-linux-gnu:/usr/lib/jni:/lib:/usr/lib]
2019-02-16 16:24:34.665 INFO 1 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2019-02-16 16:24:34.665 INFO 1 --- [ main] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 7291 ms
2019-02-16 16:24:36.307 INFO 1 --- [ main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor'
2019-02-16 16:24:37.168 INFO 1 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path ''
2019-02-16 16:24:37.176 INFO 1 --- [ main] c.d.s.s.SpringbootDemoApplication : Started SpringbootDemoApplication in 13.283 seconds (JVM running for 16.657)
啟動成功桶唐。
如果問題栅葡,歡迎留言進行交流:)。