1. 程式人生 > >使用docker搭建web服務

使用docker搭建web服務

本文會對虛擬化技術與 Docker 容器技術做一個對比,然後引出一些 Docker 的名詞術語,比如:容器、映象等,隨後將使用 Docker 搭建一個 Java Web 執行環境,最後將對本文做一個總結。

我們先來回顧一下傳統虛擬化技術的體系架構:

可見,我們在宿主機的作業系統上,可安裝了多個虛擬機器,而在每個虛擬機器中,通過虛擬化技術,實現了一個虛擬作業系統,隨後,就可以在該虛擬作業系統上,安裝自己所需的應用程式了。這一切看似非常簡單,但其中的技術細節是相當高深莫測的,大神級人物都不一定說得清楚。

凡是使用過虛擬機器的同學,應該都知道,啟動虛擬機器就像啟動一臺計算機,初始化過程是相當慢的,我們需要等很久,才能看到登入介面。一旦虛擬機器啟動以後,就可以與宿主機建立網路連線,確保虛擬機器與宿主機之間是互聯互通的。不同的虛擬機器之間卻是相互隔離的,也就是說,彼此並不知道對方的存在,但每個虛擬機器佔用的都是宿主機的硬體與網路資源。

我們再來對比一下 Docker 技術的體系架構吧:

可見,在宿主機的作業系統上,有一個 Docker 服務在執行(或者稱為“Docker 引擎”),在此服務上,我們可開啟多個 Docker 容器,而每個 Docker 容器中可執行自己所需的應用程式,Docker 容器之間也是相互隔離的,同樣地,都是佔用的宿主機的硬體與網路資源。

Docker 容器相對於虛擬機器而言,除了在技術實現上完全不一樣以外,啟動速度較虛擬機器而言有本質的飛躍,啟動一個容器只在眨眼瞬間。不管是虛擬機器還是 Docker 容器,它們都是為了隔離應用程式的執行環境,節省我們的硬體資源,為我們開發人員提供福利。

我們再來看看 Docker 的 Logo 吧:

很明顯,這是一隻鯨魚,它託著許多集裝箱。我們可以把宿主機可當做這隻鯨魚,把相互隔離的容器可看成集裝箱,每個集裝箱中都包含自己的應用程式。這 Logo 簡直的太形象了!

需要強調的是,筆者並非否定虛擬化技術,而是想通過本文讓更多的讀者瞭解如何使用 Docker 技術,讓大家知道除了虛擬化技術以外,還有另一種替代技術,也能讓應用程式隔離起來。

下面,我們將結合一個 Java Web 應用的部署過程,來描述如何“烹飪”Docker 這份美味佳餚。您準備好了嗎?我們現在就開始!

原料

前提條件

首先,您要準備一個 CentOS 的作業系統,虛擬機器也行。總之,可以通過 Linux 客戶端工具訪問到 CentOS 作業系統就行。

需要說明的是,Ubuntu 或其它 Linux 作業系統也能玩 Docker,只不過本文選擇了以 CentOS 為例,僅此而已。

CentOS 具體要求如下:

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

通過以下命令檢視您的 CentOS 核心:

uname -r

如果執行以上命令後,輸出的核心版本號低於 3.8,請參考下面的方法來來升級您的 Linux 核心。

對於 CentOS 6.5 而言,核心版本預設是 2.6。首先,可通過以下命令安裝最新核心:

rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.orgrpm -ivh http://www.elrepo.org/elrepo-release-6-5.el6.elrepo.noarch.rpmyum -y --enablerepo=elrepo-kernel install kernel-lt

隨後,編輯以下配置檔案:

vi /etc/grub.conf

default=1修改為default=0

最後,通過reboot命令重啟作業系統。

重啟後如果不出意外的話,再次檢視核心,您的 CentOS 核心將會顯示為 3.10。

如果到這裡,您和我們所期望的結果是一致的。恭喜您!下面我們就一起來安裝 Docker 了。

安裝 Docker

只需通過以下命令即可安裝 Docker 軟體:

rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpmyum -y install docker-io

可使用以下命令,檢視 Docker 是否安裝成功:

docker version

若輸出了 Docker 的版本號,則說明安裝成功了,可通過以下命令啟動 Docker 服務:

service docker start

一旦 Docker 服務啟動完畢,我們下面就可以開始使用 Docker 了。

做法

就像曾經安裝軟體一樣,我們首先需要有一張刻錄了該軟體的光碟,如果您使用的是虛擬光碟機,那麼就需要執行一種名為“映象”的檔案,通過它來安裝軟體。在 Docker 的世界裡,也有一個名為“映象”的東西,已經安裝我們所需的作業系統,我們一般成為“Docker 映象”,本文簡稱“映象”。

那麼問題來了,我們從哪裡下載映象呢?

Docker 官網 確實已經提供了所有的映象下載地址,可惜在國內卻是無法訪問的。幸好國內好心人提供了一個 Docker 中文網,在該網站上可以下載我們所需的 Docker 映象。

下載映象

我們不妨還是以 CentOS 為例,通過以下步驟,下載一個 CentOS 的映象。

首先,訪問 Docker 中文網,在首頁中搜索名為“centos”的映象,在搜尋的結果中,有一個“官方映象”,它就是我們所需的。

然後,進入 CentOS 官方映象頁面,在“Pull this repository”輸入框中,有一段命令,把它複製下來,在自己的命令列上執行該命令,隨後將立即下載該映象。

最後,使用以下命令檢視本地所有的映象:

docker images

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

REPOSITORY                TAG                 IMAGE ID            CREATED             VIRTUAL SIZEdocker.cn/docker/centos   centos6             25c5298b1a36        7 weeks ago         215.8 MB

如果看到以上輸出,說明您可以使用“docker.cn/docker/centos”這個映象了,或將其稱為倉庫(Repository),該映象有一個名為“centos6”的標籤(Tag),此外還有一個名為“25c5298b1a36 ”的映象 ID(可能您所看到的映象 ID 與此處的不一致,那是正常現象,因為這個數字是隨機生成的)。此外,我們可以看到該映象只有 215.8 MB,非常小巧,而不像虛擬機器的映象檔案那樣龐大。

現在映象已經有了,我們下面就需要使用該映象,來啟動容器。

啟動容器

容器是在映象的基礎上來執行的,一旦容器啟動了,我們就可以登入到容器中,安裝自己所需的軟體或應用程式。既然映象已經下載到本地,那麼如何才能啟動容器呢?

只需使用以下命令即可啟動容器:

docker run -i -t -v /root/software/:/mnt/software/ 25c5298b1a36 /bin/bash

這條命令比較長,我們稍微分解一下,其實包含以下三個部分:

docker run <相關引數> <映象 ID> <初始命令>

其中,相關引數包括:

  • -i:表示以“互動模式”執行容器
  • -t:表示容器啟動後會進入其命令列
  • -v:表示需要將本地哪個目錄掛載到容器中,格式:-v <宿主機目錄>:<容器目錄>

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

需要說明的是,不一定要使用“映象 ID”,也可以使用“倉庫名:標籤名”,例如:docker.cn/docker/centos:centos6。

初始命令表示一旦容器啟動,需要執行的命令,此時使用“/bin/bash”,表示什麼也不做,只需進入命令列即可。

安裝相關軟體

為了搭建 Java Web 執行環境,我們需要安裝 JDK 與 Tomcat,下面的過程均在容器內部進行。我們不妨選擇/opt/目錄作為安裝目錄,首先需要通過cd /opt/命令進入該目錄。

安裝 JDK

首先,解壓 JDK 程式包:

tar -zxf /mnt/software/jdk-7u67-linux-x64.tar.gz -C .

然後,重新命名 JDK 目錄:

mv jdk1.7.0_67/ jdk/

安裝 Tomcat

首先,解壓 Tomcat 程式包:

tar -zxf /mnt/software/apache-tomcat-7.0.55.tar.gz -C .

然後,重新命名 Tomcat 目錄:

mv apache-tomcat-7.0.55/ tomcat/

設定環境變數

首先,編輯.bashrc檔案

vi ~/.bashrc

然後,在該檔案末尾新增如下配置:

export JAVA_HOME=/opt/jdkexport PATH=$PATH:$JAVA_HOME

最後,需要使用source命令,讓環境變數生效:

source ~/.bashrc

編寫執行指令碼

我們需要編寫一個執行指令碼,當啟動容器時,執行該指令碼,啟動 Tomcat,具體過程如下:

首先,建立執行指令碼:

vi /root/run.sh

然後,編輯指令碼內容如下:

相關推薦

使用docker搭建web服務

本文會對虛擬化技術與 Docker 容器技術做一個對比,然後引出一些 Docker 的名詞術語,比如:容器、映象等,隨後將使用 Docker 搭建一個 Java Web 執行環境,最後將對本文做一個總結。我們先來回顧一下傳統虛擬化技術的體系架構:可見,我們在宿主機的作業系統上,可安裝了多個虛擬機器,而在每個虛

使用Nodejs搭建Web服務

js使用Nodejs搭建Web服務器是學習Node.js比較全面的入門教程,因為實現Web服務器需要用到Nodejs中幾個比較重要的模塊:http協議模塊、文件系統、url解析模塊、路徑解析模塊、以及301重定向技術等,下面我們就一起來學習如何搭建一個簡單的Web服務器。 作為一個Web服務器應具備以下幾個功

python3.x +django + nginx + uwsgi 搭建web服務

python3 介紹 wsgi str 過程 ron 開發 網站 經歷 最近一直在用django開發自己的網站、在開發和線上環境的對接過程中遇到了許多的坑、所以想以一個老鳥的經歷來寫一下怎麽 搭建web服務 一、python3.x 、django 、nginx 、uwsgi

怎樣在Win7系統中搭建Web服務

選擇 手機瀏覽器 web資源 程序 彈出 root htm 打開控制面板 安全 文章轉發自(謝樓主了): http://jingyan.baidu.com/article/ed2a5d1f128ff609f6be17fa.html (1)打開控制面板,選擇並進入“程序”,雙

搭建web服務

搭建web服務器1.環境準備:使用ctos1虛擬機,打開之後確認ip地址為192.168.100.150,網關為192.168.100.100,dns為192.168.100.100.設置主機名:[root@www ~]# cat /etc/sysconfig/network ##設置主機的FQDNNET

樹莓派搭建WEB服務

.org 官網 登陸 doc all update 插件 root date 樹莓派搭建WEB的教程網上有許多,但感覺每一篇都有一些問題,這次我將網上的教程匯總,並親身實踐,將註意的問題都寫進去,方便新手學習! 目錄:1,安裝nginx+sqlite+php5打造輕量級服

用apache搭建web服務

apache httpd apache的搭建知識部分·簡介:apache以其開放源代碼、可跨平臺使用、支持各種編程語言、模塊化設計、運行安全問穩定的特性被廣泛應用於搭建企業的網站服務器。·apache發布於1995年,後期通過了Apache Group到ASF的維護和管理。全稱為“Apache HTT

Centos7使用docker搭建gitlab服務

rtt -name -i passwd dom 資源 版本 pipe 返回 了解到docker的優點,搭建快,運行要求資源低,最重要的是實現的功能和效果都能達到預期,於是決定使用docker來搭建gitlab服務器。 效果圖如下: 系統環境:CentOS Linux re

Ubuntu虛擬機搭建web服務

Ubuntu首先安裝apache服務 sudo apt-get install apache2 打開瀏覽器,地址欄輸入localhost 顯示下面界面表示成功安裝由於Ubuntu自帶php7.0版本,而我們需要php5.6版本,所以需要切換成php5.6版本 *sudo add-apt-repository

server2016下搭建web服務器&三種虛擬主機實驗文檔

服務器角色 訪問 要去 images www size html system 管理器 安裝web服務器 首先打開server2016的服務器管理器,點擊添加角色和功能如圖所示: 開始之前默認下一步如圖所示: 安裝類型默認下一步選擇基於角色或基於功能的安裝如圖所示:

server2016下搭建web服務器&三種虛擬主機實驗

端口號 選擇 ado 實現 itl ice p地址 效果 info 搭建web服務器web服務器的搭建實現方式有如下三種:1、基於IP地址2、基於端口號(默認80端口,可修改)3、基於主機名(

golang搭建web服務

req http imp quest fun wro div write bsp 一個最簡單的golang web服務器 package main import ( "net/http" "fmt" ) func sayHelloWo

python3 使用SimpleHTTPServer搭建web服務

停止 ima http服務 index eas .cn web apache 步驟 剛剛萌發了一個念頭,要用python來做個web服務器,秀出自己的網頁。於是,開始了我的搭建web服務器之旅。首先,如果不想使用Apache、IIS,那就需要一個HTTP服務,而python

HA搭建web服務器高可用

查看 md5 linux isa hosts inux mct 主服務器 指定 拓撲:QJ02 主web==192.168.2.131QJ03 從web==192.168.2.132QJ01 NFS====192.168.2.1301.準備工作:(1).解析域名 #[ro

Ubuntu 搭建Web服務器(MySQL+PHP+Apache)詳細教程 (全網最全)

rpm php7 grep host 存儲 需要 目錄 所有 提示 Ubuntu 搭建Web服務器(MySQL+PHP+Apache)詳細教程 (全網最全) 看了好多人的博客,有的不全 or 有問題,整理了一下,適合小白 新手先整理幾個小問題 1.為啥使用 Linux 搭建

Mac上搭建Web服務

str php 需要 pattern 通過 退出 home 瀏覽器 所有 Mac上搭建Web服務器 開啟Apache 開啟Web服務器的方法有兩種: 打開“系統設置偏好(System Preferences)” -> “共享(Sharing)” -> “Web

docker搭建gitlab服務

Git:分散式版本控制工具 Git:分散式版本控制工具 安裝 # yum install -y git 提交程式碼需要配置[[email protected]個人資訊 [[email protected] python]# git c

使用nginx搭建web服務,問題彙總

1、 問題:nginx配置中引用了lua程式碼,lua的作用是:將請求資料寫入到redis,但是發現在連線redis時,連線失敗,原因是:無法解析其域名。 解決:在nginx配置檔案目錄下:nginx.conf的http模組,新增一行域名解析:resolver 10.**

Docker搭建MySQL服務

Docker開源映象 前面我們已經安裝好了Docker,也簡單瞭解了Docker。那麼我們可以嘗試搭建一個MySQL服務。 要搭建服務就要啟動服務容器,要建立容易就要有映象,Docker提供了一個類似Github的開源平臺,提供開源映象,放心可靠。(畢竟大家都看著原始碼呢) Docker

node.js搭建web服務

1.確保已經安裝node.js和npm    注意:node.js不是JavaScript框架,而是js的執行環境 2.建立app.js,引入http模組,程式碼如下 var http=require('http'); var PORT=1234; var app=h