首頁 > Java > java教程 > 主體

如何使用Docker建構Java環境

王林
發布: 2023-05-11 13:22:06
轉載
3168 人瀏覽過

docker是做什麼的

docker 是一個基於linux容器(lxc-linux container)的高階容器引擎,基於go語言開發,原始碼託管在github 上, 遵從apache2.0協定開源。 docker的目標是實現輕量級的作業系統虛擬化解決方案。

學習docker首先要了解幾個概念:

映像—docker的映像和常見的系統iso映像類似,包含了應用程式的資訊;

容器—容器相當於一個可以運作起來的虛擬機,應用程式運行在容器中,docker運行在「docker」;

倉庫—倉庫是存放映像的地方,有類似git的版本控制,同樣分為公開倉庫(public)和私有倉庫(private)兩種形式;

docker支援大部分的linux發行版,透過使用docker容器,就可以在不同的作業系統,不同的機器上運行自己的應用,不用關心硬體、運行環境之類的配置,應用程式的遷移變得非常簡單。

 docker和傳統虛擬化技術的對比

#比較傳統虛擬機技術,docker資源佔用少,啟動更快,很大的方便了專案的部署和運維。

docker是在作業系統層面上實現虛擬化,復用本地主機的作業系統,傳統方式是在硬體的基礎上,虛擬出多個作業系統,然後在系統上部署相關的應用。

這張圖片很形象的說明了docker和vm之類的傳統虛擬化技術的區別:

如何使用Docker建構Java環境# vs如何使用Docker建構Java環境

準備

首先需要準備一個centos的作業系統,虛擬機器也可以。具體配置需求如下:

1.必須是64位元作業系統
2.建議核心在3.8以上

安裝docker

只需要透過以下命令即可安裝docker軟體

yum -y install docker-io
登入後複製

可使用以下命令,查看docker是否安裝成功:

docker version
登入後複製

如果輸出看docker的版本號,則說明安裝成功了,可透過以下指令啟動docker服務:

service docker start
登入後複製

如果service指令啟動不了用下面的

systemctl start docker.service
登入後複製

做法

#就像安裝軟體一樣,我們首先需要有一張刻錄了該軟體的光碟,如果使用的是虛擬光碟機,那麼就需要準備鏡像的文件,透過它來安裝軟體。在docker的世界裡,也是有映像的檔案的,已經安裝我們所需的作業系統,我們一般稱為docker映像

下載映像

docker search <image>
登入後複製

使用docker pull imagename(映像名)來下載鏡像

下載完成後使用以下命令查看本地所有的鏡像:

docker images
登入後複製

當下載完成後,你應該會看到:

repository        tag         image id      created       virtual size
docker.io/centos   centos7       f753707788c5    12 days ago     127.1 mb
登入後複製

如果看到以上輸出,表示你可以使用「docker.cn/docker/centos」這個映像了,或稱為倉庫(repository),該映像有一個名為」centos7」的標籤(tag),此外還有一個名為」25c5298b1a36」的鏡像id(這個是隨機生成,所以每個人看到的都不一樣)

啟動容器

容器是在鏡像的基礎上來運行的,一旦容器啟動了,我們就可以登入容器中,安裝自己所需的軟體或應用程式。

使用進入已經執行的docker

docker attach dabfb413d8cf[容器id]
登入後複製

使用以下指令即可啟動容器:

docker run -i -t -v /root/software/:/mnt/software/ --privileged=true 2a392a47afc5
登入後複製

docker run <相關參數> <映像id> <初始指令>

其中相關參數包含:

-i:表示以互動模式執行容器

-t:表示容器啟動後會進入其命令列

-v:表示需要將本地哪個目錄掛載到容器中,格式-v<宿主機目錄>:<容器目錄>

假設我們的所有安裝程式都放在了宿主機的/root/software/目錄下,現在需要將其掛載到容器的/mnt/software/目錄下。

這一切做好後你就可以為這個容器安裝軟體了。

docker 傳送檔案指令

docker cp more.log e7de404c00bd:/tmp/ 

1f8787b81bcd
登入後複製

安裝java開發環境

我們需要安裝的有jdk1.7,、tomcat7、nginx,安裝套件去官網下載就行了

1.安裝jdk

首先,解壓縮jdk程式包:

tar -zxf jdk-7u71-linux-x64.tar.gz –c
登入後複製

如果是rpm包

rpm –ivh jdk-7u71-linux-x64.tar.gz
登入後複製

#然後重命名資料夾

mv jdk1.7.0_71/ jdk/
登入後複製

最後設定環境變數

vi ~/.bashrc
登入後複製

在檔案結尾新增以下設定:

export java_home=/opt/jdk

export path=$path:$java_home
登入後複製

·用文字編輯器開啟/etc/profile 

 ·在profile檔案結尾加入:

export java_home=/usr/share/jdk1.6.0_14 
 export path=$java_home/bin:$path 
 export classpath=.:$java_home/lib/dt.jar:$java_home/lib/tools.jar
登入後複製

最後使用source指令,讓環境變數生效:

source ~/.bashrc

source /etc/profile
登入後複製

1.安裝tomcat

也是一樣,解壓縮tomcat程式包:

tar –zxf apache-tomcat-7.0.55.tar.gz
登入後複製

然後重新命名tomcat目錄:

mv apache-tomcat-7.0.55/ tomcat/
登入後複製

編寫一個運行腳本,當啟動容器時,運行該腳本,啟動tomcat,具體過程如下:

vi /root/run.sh
登入後複製

然後,編輯腳本內容如下:

#!/bin/bash

source ~/.bashrc

sh /opt/tomcat/bin/catalina.sh run
登入後複製

注意:这里必须先加载环境,然后使用tomcat的运行脚本来运行tomcat

最后,为运行脚本添加执行权限:

chmod u+x /root/run.sh
登入後複製

1.安装nginx

先去官网下载源码包注意要是gz的

下载地址

下载完后,解压安装包:

tar -zxvf nginx-1.11.5.tar.gz
登入後複製

然后再配置安装变量,打开解压后的目录-执行命令

cd nginx-1.11.5
登入後複製

配置安装环境

./configure --prefix=/usr/local/servers/nginx “/usr/local/servers/nginx”是安装路径

有可能会出现./configure: error: c compiler cc is not found

这时需要运行命令更新一下gcc

yum install gcc gcc-c++ ncurses-devel perl

yum -y install pcre-devel

yum -y install zlib-devel

yum -y install autoconf libtool make
登入後複製

在解压目录执行:

make
登入後複製

切换到root用户执行安装命令

make install
登入後複製

创建软链

ln –s /usr/local/servers/nginx/sbin/nginx /usr/local/bin/nginx
登入後複製

启动nginx服务

nginx
登入後複製

再用 ps -ef|grep nginx查看是否启动成功

提交docker镜像

首先退出你刚才配置好的docker镜像

exit
登入後複製

然后使用以下命令可以看到刚才退出的docker镜像

docker ps –a
登入後複製

再使用以下命令,根据某个”容器id”来创建一个新的”镜像”:

docker commit 57c312bbaad1 javaweb:0.1
登入後複製

该容器id是”57c312bbaad1”,所创建的镜像名是”javaweb”

注意:”57c312bbaad1” 这个id是使用 docker ps 命令来查看的

提交了新的镜像你可以把这个镜像储存tar包

docker  –o ~/javaweb.tar javaweb
登入後複製

docker save –o 保存的目录 镜像名

启动容器

先用 docker images看看当前所有的镜像

启动最新创建的镜像

docker run -d -p 80:80 --name javaweb javaweb:0.1 /root/run.sh
登入後複製

-d:表示以”守护模式”执行/root/run.sh脚本,此时tomcat控制台不会出现在输出终端上。

-p:表示宿主机与容器的端口映射,此时将容器内部的80端口映射为宿主机的 80端口,这样就向外界暴露了80端口,可通过docker网桥来访问容器内部的80端口了

--name:表示容器名称,用一个有意义的名称命名即可

以上是如何使用Docker建構Java環境的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:yisu.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!