成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Java開發人員:如何穿過Docker現象這片"叢林"

譯文
云計算
今天我們來談談Java開發人員如何能夠穿過Docker現象這片叢林,更容易了解使用這種熱門新技術來簡化開發流程的種種好處。我們在本文中將探討你可以用Docker來完成什么以及如何認識Docker這項新興技術。

如今我要話要說:一段時間以來,我一直遲遲沒有認真打量Docker,原因主要是缺少時間,再加上我們的贊助商兼母公司ZeroTurnaround最近決定完全退出運維(Ops)行業,致力于開發者工具。作為開發昔日版本自動化工具的工程師,我在關注虛擬化或大型集群管理工具時往往興趣不太大。

于是我現在關注Docker領域可能有點晚,不過今天我還是要談談Java開發人員如何能夠穿過Docker現象這片叢林,更容易了解使用這種熱門新技術來簡化開發流程的種種好處。

我們在本文中將探討你可以用Docker來完成什么以及如何認識Docker這項新興技術。

安裝和入手

讓人大為意外的是,官方網站就有安裝Docker的操作說明(https://docs.docker.com/installation/mac/#installation)。我不想具體介紹獲得Docker所需的具體步驟,所以為了讓這篇文章立足于更宏觀的層面,這一章節將非常簡短。

要是你很幸運,在運行一款直接支持Docker的操作系統(言外之意是一些Linux發行版),你就可以開始上手了。使用你青睞的程序包管理器來安裝Docker,然后證實這個命令正常運行:

  1. $ sudo docker run ubuntu:14.04 /bin/echo 'Hello world' 
  2. Hello world

要是你不是那么幸運,屬于運行Windows或OS X的這一類人,那也大可不必擔心。boot2docker項目(http://boot2docker.io)會為你啟動一個小型的輕量級Linux虛擬機,那樣你就能享受使用Docker的樂趣了。

安裝boot2docker的過程很容易,已為我們準備好了針對特定操作系統的安裝程序。運行安裝程序也很簡單,下面列出了面向Mac用戶的操作說明:https://docs.docker.com/installation/mac/#installation。

使用上述命令證實boot2docker正常運行,通過ssh進入到boot2docker,運行它:

  1. $ boot2docker ssh 
  2. ## . 
  3. ## ## ## == 
  4. ## ## ## ## === 
  5. /""""""""""""""""\___/ === 
  6. ~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ / ===- ~~~ 
  7. \______ o __/ 
  8. \ \ __/ 
  9. \____\______/ 
  10. _ _ ____ _ _ 
  11. | |__ ___ ___ | |_|___ \ __| | ___ ___| | _____ _ __ 
  12. '_ \ / _ \ / _ \| __| __) / _` |/ _ \ / __| |/ / _ \ '__| 
  13. | |_) | (_) | (_) | |_ / __/ (_| | (_) | (__| < __/ | 
  14. |_.__/ \___/ \___/ \__|_____\__,_|\___/ \___|_|\_\___|_| 
  15. Boot2Docker version 1.3.1, build master : 9a31a68 - Fri Oct 31 03:14:34 UTC 2014 
  16. Docker version 1.3.1, build 4e9bbfa 
  17.  
  18. docker@boot2docker:~$ sudo docker run ubuntu:14.04 /bin/echo 'Hello world' 
  19. Hello world 

就是這樣,我們已運行了***個Docker應用程序。它沒有任何花哨的功能,只是回送一個消息而已,但這是為有用的系統安裝基礎設施的一個重要步驟。

那些重要的容器

雖然我們喜歡Groovy這門語言,但我們根本不是一家使用Groovy的公司,于是我們將著重介紹讓Java在容器中運行。

好消息是,即便在這里,一切工作都為我們做好了。有一個官方軟件庫:dockerfile/java(https://github.com/dockerfile/java),附有面向Java的Docker映像。確切地說,這些并不是映像,而是告訴Docker如何創建實際映像的Docker文件(dockerfile)。

如果你看一下面向Java 8的Docker文件(https://github.com/dockerfile/java/blob/master/oracle-java8/Dockerfile),立馬就會注意到:Java 8映像基于常規的Ubuntu映像,你可以像對待平常的Ubuntu機器那樣來安裝Java。

另外,它定義了JAVA_HOME以及需要執行的默認Docker命令:

  1. # 定義工作目錄。
  2. WORKDIR /data 
  3. # 定義常用的JAVA_HOME變量 
  4. ENV JAVA_HOME /usr/lib/jvm/java-8-oracle 
  5. # 定義默認命令。 
  6. CMD ["bash"

現在,我們的Docker容器已配備了Java,能夠運行Java命令了:

  1. docker run -it --rm dockerfile/java:oracle-java8 java -version 
  2. java version "1.8.0_25" 
  3. Java(TM) SE Runtime Environment (build 1.8.0_25-b17) 
  4. Java HotSpot(TM) 64-Bit Server VM (build 25.25-b02, mixed mode) 

我們可以運行在我們的Docker環境中執行的隨機性Java命令。它并不為此使用標準的虛擬機,所以你根本不用擔心虛擬機開銷問題。

瞧瞧這有多么簡單、多么易于移植?!

進一步個性化

我知道你在想什么:這相當酷,但現在我不得不做一個Docker文件,以便下載和安裝Maven,克隆我的項目軟件庫,然后構建它,并且在這個過程中下載一半的互聯網。別擔心,Docker可以輕松訪問你的主機文件系統,所以除了對Java的訪問外,你沒必要提供太多的東西。

的確,你可以擁有它。Linux顯然具有作為Docker原生操作系統的優點,所以映射起來非常順暢無阻。Docker命令只要接收一個參數:-v,即可讓目錄映射到容器里面的某個對象。

比如說,下面這個命令將與容器共享我的~/repo目錄。

  1. docker run -v /Users/shelajev/repo:/opt/repo ubuntu ls -la /opt/repo/zt-zip 

OS X用戶也不必擔心,因為自boot2docker 1.3.1以來,你的主目錄默認情況下就與boot2docker虛擬機共享,所以-v也會正常發揮作用:

Windows用戶不用擔心,完全有一個版本可以讓你確保正常運行(參閱http://www.incrediblemolk.com/sharing-a-windows-folder-with-the-boot2docker-vm/)。簡而言之,你不得不安裝VirtualBox Guest Additions,并且在你的主機和boot2docker虛擬機之間手動映射一個文件夾。如果你明白自己在做什么,或者遵守實用操作指南,就像上面那個鏈接,這部分相當簡單直觀。

現在如何在Docker容器里面運行實際的Java應用程序已相當一目了然了。你的源代碼位于主機上,你同樣可以在主機上編輯源代碼;甚至可以在主機上構建源代碼,因為運維活動并不從源代碼開始,而是從預制構件開始。之后,它就跟將它放到正確的位置,使用正確的命令來啟動它一樣簡單。

下面是Java項目的例子,我將使用Spring Boot(http://projects.spring.io/spring-boot/)來啟動該應用程序。

所以通常來說,我在自己的機器上會這樣運行它:

  1. shelajev@shrimp ~/repo/tmp/gs-spring-boot/complete ‹master› 
  2. $ java -jar target/gs-spring-boot-0.1.0.jar 

另外證實該應用程序在端口8080上運行。想在Docker容器里面運行它,我只要做同樣的事情,不過需要提供端口映射,那樣我就能從主機訪問它:

  1. docker run -v /Users/shelajev/repo:/opt/repo -p 8080:8080 --rm dockerfile/java:oracle-java8 java -jar /opt/repo/tmp/gs-spring-boot/complete/target/gs-spring-boot-0.1.0.jar 

該命令的輸出結果非常容易預測,它啟動Spring Boot應用程序,并輸出顯示所有初始化內容。為了簡便起見,這里就不附上了,但它看起來就像這個pastebin。

瞧!我現在可以通過主機瀏覽器來訪問它了!只要使用下面這個命令,就很容易獲得確切的IP,boot2docker提供了被映射到docker的接口:

  1. open http://$(boot2docker ip 2>/dev/null)/ 

結束語:Docker是一種對開發人員友好的運維工具

我可以有把握地說,Docker是一種深思熟慮的工具,幾乎一切都可以從命令行來加以訪問。

我們在本文中分析了如何從Docker容器入手,以便為Java項目建立一個易于移植的開發環境。這也許可以為新項目減少安裝方面的難度,又不必犧牲通常使用的環境為你提供的好處或性能:平常使用的集成開發環境(IDE)、自動化測試、JRebel(厚著臉皮做下廣告)等工具及其他。

對于Java開發人員而言,Docker有助于在一個干凈的環境中隔離我們的應用程序,所以多少緩解了無法預測“是否可以在我的機器上運行”的問題。隔離之所以很重要,是因為它減小了我們使用的軟件環境的復雜性。另外,想得益于使用Docker,你沒必要深入鉆研容器世界,就可以開始將應用程序部署到成千上萬個節點。與開發人員的機器隔離開來是一大有利條件。

Docker擁有直觀的用戶界面,進一步減小了這種復雜性,它已成為任何開發人員的一款出色工具。使用它的額外好處包括,它簡化了運維人員的工作,而我們都知道這有多重要。

英文原文鏈接:http://zeroturnaround.com/rebellabs/docker-for-java-developers-how-to-sandbox-your-app-in-a-clean-environme

責任編輯:Ophira 來源: 51CTO
相關推薦

2021-02-19 09:33:01

kubernetesJAVA服務

2023-03-15 07:12:53

企業開發人員提供商

2021-12-10 23:48:19

Java開發技術

2023-08-14 15:23:37

2013-04-15 10:00:09

程序員

2019-11-27 18:54:07

物聯網數字孿生機器學習

2009-12-09 10:04:20

ibmdwJavaTwitter

2012-05-30 15:15:42

ibmdw

2020-12-02 09:59:49

惡意軟件Docker開發

2009-11-23 20:07:51

ibmdw開發

2009-12-11 14:50:14

Visual Basi

2019-07-12 13:59:21

Docker軟件技術

2022-02-19 22:44:26

Java開發技術

2009-08-27 12:00:40

ibmdwJava

2022-01-04 19:26:42

開發人員安全性網絡安全

2012-11-23 09:42:26

開源軟件開發人員

2022-02-17 16:05:58

SQL開發招聘

2020-10-27 08:46:06

降低開發人員的生產力

2009-05-31 08:31:07

GoogleWaveTechCrunch

2011-09-05 14:21:29

webOS
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 91影院在线观看 | 国内精品久久久久 | 九九亚洲精品 | 特级黄一级播放 | 日韩国产高清在线观看 | 成年人在线视频 | 91精品久久久久久久久 | 福利在线观看 | 免费观看成人av | 午夜影院黄| 黄色在线免费观看视频 | 国产区在线观看 | 97视频成人| 草草视频在线观看 | 久久精品97 | 手机看片在线播放 | 国产在线观看av | 天天天操天天天干 | 欧美伊人久久久久久久久影院 | 久久精品小视频 | av色站| 久久精品国产一区 | 国产一区二区三区视频免费观看 | 国产三级| 色婷婷一区二区三区四区 | 日本不卡一区二区三区在线观看 | 男人阁久久 | 国产精品一区视频 | 91麻豆产精品久久久久久夏晴子 | 91精品国产91久久久久久 | 真人毛片 | 91视频精选 | a级在线免费视频 | 欧美精品一区二区三区在线播放 | 国产精品区二区三区日本 | 国产免费福利小视频 | 99精品在线观看 | 九热在线 | 国产视频一二三区 | 欧美日韩国产精品激情在线播放 | 亚洲一区在线播放 |