日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

上手 Docker 容器,不应该是个问题

發布時間:2024/8/23 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 上手 Docker 容器,不应该是个问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

來源 | 無敵碼農

責編?| 寇雪芹

頭圖 | 下載于視覺中國

在微服務時代,服務數量及規模越來越大,服務的部署及運維的模式如果仍然采用傳統方式就會大大增加運維成本。所以微服務時代的運維方式一定是Devops模式,通過構建自動化運維發布平臺來打通產品、開發、測試及運維流程,從而整體上提升研發效能,而這也是目前大部分公司正在做的事情。

隨著以Docker為代表的容器化技術的普及,目前Devops實踐大多會采用容器(如Docker、K8s)這樣的方式來作為微服務應用部署運行的載體,并通過容器的彈性擴展來實現快速擴容和縮容,從而更快地響應業務、更好地利用資源。

目前Devops最流行的部署方案是基于K8s的集群方案,但是它本身也是基于Docker容器技術的,所以在接觸K8s技術之前,先通過本文了解下Docker及基于Docker的容器化部署。

Docker的基本概念

Docker是一個開源的應用容器引擎,也是目前最流程的應用部署方式,通過它可以把應用及其依賴打包到一個可移植的鏡像中,然后利用Docker提供的部署機制將其發布至任意安裝了Docker容器的系統環境中。從使用角度主要需要理解一下幾個要點如圖所示:

如上圖所示,理解Docker的使用方式需要掌握以下幾個概念:

  • Image(鏡像):它是一個可執行文件,包含應用代碼、依賴庫、運行環境(如JRE等)以及環境變量及配置等信息,通過鏡像可以啟動一個應用,鏡像的構建過程通過Dockefile文件描述。

  • Container(容器):使用Image啟動的一個進程實例,它與鏡像之間為一對多的關系,一個鏡像可以啟動多個容器實例。

  • Service(服務):一組提供對外服務的Container,這些Container使用同一個Image鏡像,它與鏡像為一對一、與容器為一對多的關系,Service由docker-compose文件定義。

  • Stack(應用):一組Service,相互協作對外提供服務,可以看作是一個完整的應用,在一些復雜的場景中會拆分為多個Stack,由docker-compose構建。

Docker部署一個Spring Boot服務

為了更進一步加深對上述概念的理解,這里以一個Spring Boot應用為例演示如何通過Docker部署一個Spring Boot服務。這里可以通過IDE創建一個簡單的Spring Boot應用并寫一個測試接口,如下圖所示:


以上為通過IDEA創建的一個最為簡單的Spring Boot應用程序,運行后啟動服務可以通過端口訪問測試接口,接下來使用Docker部署該服務,步驟如下:

? 創建Dockerfile文件構建Docker鏡像

按照前面Docker的介紹,如果要讓Spring Boot程序運行在Docker容器上,首先需要構建Docker鏡像,而構建的過程則需要通過Dockerfile文件來描述。例如在項目src/main/docker目錄創建Dockerfile文件,代碼如下:

1FROM?java:82VOLUME?/tmp3RUN?mkdir?/app4ADD?springboot-1.0-SNAPSHOT.jar?/app/springboot.jar5ADD?runboot.sh?/app/6RUN?bash?-c?'touch?/app/springboot.jar'7WORKDIR?/app8RUN?chmod?a+x?runboot.sh9EXPOSE?9090 10CMD?/app/runboot.sh上述Dockerfile文件定義了運行的基礎信息為JDK1.8、容器運行的目錄為/app、并添加了所需的Jar包等信息,最后定義了要執行的命令為“/app/runboot.sh”腳本。runboot.sh腳本代碼如下: 1sleep?10 2java?-Djava.security.egd=file:/dev/./urandom?-jar??/app/springboot.jar

這里打包Spring Boot應用Docker鏡像的Dockerfile文件就定義好了,為了能在Maven項目中執行Docker鏡像構建命令,還需要在項目pom.xml文件添加Maven Build插件信息,代碼如下:

1<!--Docker?Maven插件依賴-->2<plugin>3????<groupId>com.spotify</groupId>4????<artifactId>docker-maven-plugin</artifactId>5????<configuration>6????????<imageName>${project.name}:${project.version}</imageName>7????????<dockerDirectory>${project.basedir}/src/main/docker</dockerDirectory>8????????<skipDockerBuild>false</skipDockerBuild>9????????<resources> 10????????????<resource> 11????????????????<directory>${project.build.directory}</directory> 12????????????????<include>${project.build.finalName}.jar</include> 13????????????</resource> 14????????</resources> 15????</configuration> 16</plugin>

接下來可以通過Maven命令構建Spring Boot應用Docker鏡像,命令如下:

1mvn?clean?package?docker:build

運行成功可以看到本地Docker倉庫中鏡像信息,命令如下:


這表示Spring Boot程序的Docker鏡像已打好,需要說明的是以上命令運行是需要你的系統已經安裝Docker容器運行環境。

? 創建docker-compose.yml文件

有了Docker鏡像,如何將鏡像作為容器啟動以及該鏡像中啟動那些服務、它的資源限制及網絡使用什么方式,這些都是docker-compose文件定義的,其代碼如下:

1version:?'3.2'2services:3??springboot:4????image:?springboot:1.0-SNAPSHOT5????hostname:?springboot6????environment:7??????-?SPRING_PROFILES_ACTIVE=${SPRING_PROFILES_ACTIVE:-debug}8????ports:9??????-?"9999:9090" 10????networks: 11??????-?mynet 12networks: 13??mynet: 14????external:?true

在上述docker compose文件中定義了一個springboot服務,然后針對該服務描述了其所使用的Docker鏡像、環境變量參數、容器端口映射及網絡等信息。需要說明的是services下面還可以定義服務,stack(應用)與service(服務)的關系在docker-compose中是一對多的關系,只是這里暫時沒有需要定義其他服務。

? 啟動Docker容器實現應用容器部署

通過上述準備,此時就可以通過docker-compose啟動Spring Boot應用的Docker鏡像,目錄切換到src/main/docker目錄,執行如下命令:

1$?docker-compose?up?-d 2Creating?docker_springboot_1?...?done

此時應用就已經通過Docker容器部署了,可以通過如下命令進行查看:

1$?docker?ps 2CONTAINER?ID????????IMAGE?????????????????????COMMAND??????????????????CREATED?????????????STATUS??????????????PORTS??????????????????????????????????????????????????????????????????????NAMES 34117e4a8963e????????springboot:1.0-SNAPSHOT???"/bin/sh?-c?/app/run…"???5?seconds?ago???????Up?3?seconds????????9090/tcp,?0.0.0.0:9999->9999/tcp???????????????????????????????????????????docker_springboot_1

到這里就大功告成了,訪問9999端口就能夠訪問到Docker容器中的Spring Boot服務了。

點擊關注我們,記得標星哦~~~

更多閱讀推薦

  • 一張魔力象限圖,一眼看盡5G江湖

  • 低代碼,讓人人都可以是開發者

  • 三探云原生全景圖,這次聊聊運行時層

  • 俯瞰云原生,這便是供應層

  • 13種重要的云原生工具,讓交付過程更快

  • 馮諾依曼架構的 IO 鴻溝,誰能來填補?

總結

以上是生活随笔為你收集整理的上手 Docker 容器,不应该是个问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 久久大陆| 国内一区二区视频 | 毛片在线免费 | 在线免费| 黄网www| 香港三级日本三级 | 无码人妻丰满熟妇精品 | 女人裸体无遮挡 | 午夜影院在线观看18 | 91porny九色| 免费美女视频网站 | 小镇姑娘国语版在线观看免费 | 一区二区三区精品久久久 | 鸥美毛片 | 久久久精品一区二区涩爱 | 大屁股白浆一区二区三区 | 国产天堂在线观看 | 色中色综合网 | 丁香在线 | 亚洲国产理论 | 五月天婷婷在线观看 | 国产精品嫩草69影院 | 国产网站在线看 | 亚洲性天堂 | 免费一级黄色大片 | 91亚洲免费 | 久久蜜桃精品 | 欧美少妇视频 | 免费观看视频一区二区 | 黄色a视频 | 在线观看成人小视频 | 欧美人妻精品一区二区免费看 | 日日操夜夜干 | 精品一区中文字幕 | 99热这里只有精品1 亚洲人交配视频 | 久久久77| 亚洲h在线观看 | 亚洲精品久久久 | 超碰c| 香蕉黄色片 | 今天高清视频在线观看视频 | 日韩欧美理论 | 美女尻逼视频 | 久久瑟瑟 | 无码不卡av东京热毛片 | 尹人综合在线 | 色噜噜在线播放 | 天天爽夜夜爽视频 | 怡红院成永久免费人全部视频 | 天堂中文在线最新 | 日韩成人在线一区 | 精品国产乱码久久久久久久软件 | av中字在线| 欧美日韩精品亚洲精品 | 中文字幕不卡在线观看 | 国产乱偷 | 自拍偷拍专区 | 四虎精品视频 | 91天天| 亚洲视频91 | 综合婷婷久久 | 国产一区二区精品在线观看 | 国产精品无码久久久久一区二区 | 一区二区三区四区免费观看 | 很黄的网站在线观看 | 1024亚洲天堂 | 亚洲欧美精品一区二区三区 | 美女又爽又黄视频毛茸茸 | 国产精品网址 | 综合久久久久久久久久久 | 在线观看一区二区三区四区 | 国产色诱视频 | 精品无码久久久久久久久成人 | 实拍女处破www免费看 | 99久久久国产 | 欧美成年视频 | 校园春色亚洲色图 | 免费a v在线 | 免费的黄色片 | 日韩av在线影院 | 久久偷看各类女兵18女厕嘘嘘 | 久久久久亚洲av片无码 | 国产日韩一区二区在线观看 | 久久精品这里有 | 四虎在线播放 | 国产成人综合亚洲 | 国产成人午夜精品无码区久久 | 一区二区三区视频免费视 | 污污网站在线免费观看 | 德国性猛交xxxxhd | 在线观看欧美 | 一区二区不卡在线观看 | 福利在线免费观看 | 人妻在线一区 | 国产精品资源在线 | 久久国产区 | 日本午夜在线视频 | 中文字幕在线视频一区二区 | 欧美视频在线免费看 |