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之類的傳統虛擬化技術的區別:
# vs
準備
首先需要準備一個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中文網其他相關文章!