1. 程式人生 > 其它 >構造方法中super()的作用

構造方法中super()的作用

第1章docker簡介

1.1什麼是docker

  Docker 最初是 dotCloud 公司創始人 Solomon Hykes 在法國期間發起的一個公司內部專案,它是基於 dotCloud 公司多年雲服務技術的一次革新,並於 2013 3 月以 Apache 2.0 授權協議開源,主要專案程式碼在 GitHub 上進行維護。Docker 專案後來還加入了 Linux 基金會,併成立推動開放容器聯盟(OCI)。

  Docker 使用 Google 公司推出的 Go 語言進行開發實現,基於 Linux 核心的 cgroupnamespace,以及 OverlayFS 類的 Union FS

等技術,對程序進行封裝隔離,屬於作業系統層面的虛擬化技術。由於隔離的程序獨立於宿主和其它的隔離的程序,因此也稱其為容器。最初實現是基於 LXC,從 0.7 版本以後開始去除 LXC,轉而使用自行開發的 libcontainer,從 1.11 開始,則進一步演進為使用 runC containerd

  Docker 在容器的基礎上,進行了進一步的封裝,從檔案系統、網路互聯到程序隔離等等,極大的簡化了容器的建立和維護。使得 Docker 技術比虛擬機器技術更為輕便、快捷。

1.2為什麼要用docker

1.2.1docker的優勢

  • 更高效的利用系統資源

  由於容器不需要進行硬體虛擬以及執行完整作業系統等額外開銷,

Docker 對系統資源的利用率更高。無論是應用執行速度、記憶體損耗或者檔案儲存速度,都要比傳統虛擬機器技術更高效。因此,相比虛擬機器技術,一個相同配置的主機,往往可以執行更多數量的應用。

  • 更快速的啟動時間

  傳統的虛擬機器技術啟動應用服務往往需要數分鐘,而 Docker 容器應用,由於直接運行於宿主核心,無需啟動完整的作業系統,因此可以做到秒級、甚至毫秒級的啟動時間。大大的節約了開發、測試、部署的時間。

  • 一致的執行環境

  開發過程中一個常見的問題是環境一致性問題。由於開發環境、測試環境、生產環境不一致,導致有些 bug 並未在開發過程中被發現。而 Docker 的映象提供了除核心外完整的執行時環境,確保了應用執行環境一致性,從而不會再出現 「這段程式碼在我機器上沒問題啊」 這類問題。

  • 持續交付和部署

  對開發和運維(DevOps)人員來說,最希望的就是一次建立或配置,可以在任意地方正常執行。

  使用 Docker 可以通過定製應用映象來實現持續整合、持續交付、部署。開發人員可以通過 Dockerfile 來進行映象構建,並結合持續整合(Continuous Integration) 系統進行整合測試,而運維人員則可以直接在生產環境中快速部署該映象,甚至結合 持續部署(Continuous Delivery/Deployment) 系統進行自動部署。而且使用 Dockerfile 使映象構建透明化,不僅僅開發團隊可以理解應用執行環境,也方便運維團隊理解應用執行所需條件,幫助更好的生產環境中部署該映象。

  • 更輕鬆的遷移

  由於 Docker 確保了執行環境的一致性,使得應用的遷移更加容易。Docker 可以在很多平臺上執行,無論是物理機、虛擬機器、公有云、私有云,甚至是筆記本,其執行結果是一致的。因此使用者可以很輕易的將在一個平臺上執行的應用,遷移到另一個平臺上,而不用擔心執行環境的變化導致應用無法正常執行的情況。

  • 更輕鬆的維護和擴充套件

  Docker 使用的分層儲存以及映象的技術,使得應用重複部分的複用更為容易,也使得應用的維護更新更加簡單,基於基礎映象進一步擴充套件映象也變得非常簡單。此外,Docker 團隊同各個開源專案團隊一起維護了一大批高質量的 官方映象,既可以直接在生產環境使用,又可以作為基礎進一步定製,大大的降低了應用服務的映象製作成本。

1.2.2docker與傳統虛擬機器的比較

特性

docker

虛擬機器

啟動

秒級

分鐘級

硬碟使用

一般為 MB

一般為 GB

效能

接近原生

弱於

系統支援量

單機支援上千個容器

一般幾十個

隔離性

安全隔離

完全隔離

第2章docker的核心概念

  Docker 包括三個基本概念,理解了這三個概念,就理解了Docker的整個生命週期。

  1)映象(Image

  2)容器(Container

  3)倉庫(Repository

2.1映象(Image

  Docker映象類似於一個虛擬機器映象(xxx.iso), 可以將它理解為一個只讀的模板!例如,一個映象可以包含一個基本的作業系統環境,裡面僅安裝了 Apache應用程式(或使用者需要的其他軟體)可以把它稱為Apache映象,映象是建立Docker容器的基礎

  通過版本管理和增量的檔案系統,Docker提供了一套十分簡單的機制來建立和更新現有的映象,使用者甚至可以從網上下載一個已經做好的應用映象,並直接使用它.

2.2容器(Container

  Docker 容器類似於一個輕量級的沙箱, Docker 利用容器來執行和隔離應用,容器是從映象建立的應用執行例項。它可以啟動、開始、停止、刪除,而這些容器都是彼此相互隔離、互不可見的。可以把容器看作一個簡易版的 Linux 系統環境(包括 root 使用者許可權、程序空間、使用者空間和網路空間等)以及執行在其中的應用程式打包而成的盒子。

  注意:

    1)映象自身是隻讀的。

    2)容器從映象啟動的時候,會在映象的最上層建立一個可寫層。

2.3倉庫(Repository

  Docker 倉庫類似於程式碼倉庫,是 Docker 集中存放映象檔案的場所。根據所儲存的映象公開分享與否, Docker 倉庫可以分為公開倉庫(Public)和私有倉庫(Private)兩種形式。目前,最大的公開倉庫是官方提供的 Docker Hub ,其中存放著數量龐大的映象供使用者下載。國內不少雲服務提供商(如騰訊雲 、 阿里雲等)也提供了倉庫的本地源,可以提供穩定的國內訪問。

  當然,使用者如果不希望公開分享自己的映象檔案, Docker 也支援使用者在本地網路內建立一個只能自己訪問的私有倉庫。

  當用戶建立了自己的映象之後就可以使用 push 命令將它上傳到指定的公有或者私有倉庫。 這樣使用者下次在另外一臺機器上使用該映象時,只需要將其從倉庫上 pull 下來就可以了。

第3章Centos安裝Docker引擎

  Docker 目前支援 CentOS 7 及以後的版本, 核心版本必須是3.10

  1)檢視作業系統版本:

cat /etc/redhat-release

  2)檢視核心版本:

uname -r

3.1解除安裝舊版本

  舊版本的 Docker 被叫做 docker docker-engine,如果安裝了舊版本的 Docker ,需要解除安裝掉它。

sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

3.2安裝Docker

3.2.1安裝方法1: 手動安裝

  1)安裝依賴的軟體包

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

  2)新增Docker文件版本的yum源,官方的yum源安裝docker比較慢,我們配置國內比較快的yum(阿里雲)

sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

  3)安裝最新版本的docker引擎(社群版)

sudo yum -y install docker-ce docker-ce-cli containerd.io

3.2.2安裝方法2:使用指令碼自動安裝

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

  注意:

    1)自動安裝指令碼會自動檢測系統資訊並進行相應配置

    2)安裝方法1和安裝方法2二者選其一即可

3.2.3啟動Docker服務

sudo systemctl start docker

3.2.4驗證Docker是否可用

sudo docker run hello-world

3.2.5把普通使用者新增到docker

  每次使用docker的時候都需要使用root使用者,比較麻煩.可用把普通使用者新增到docker,避免每次都新增sudo.

#將atguigu使用者新增進docker組
sudo usermod -aG docker atguigu

  完成之後,退出當前shell視窗, 重新進入shell視窗, 使剛才的配置生效!!!

第4章映象基本操作

  映象是 Docker 三大核心概念中最重要的,自 Docker 誕生之日起映象就是相關社群最為熱門的關鍵詞。 Docker 執行容器前需要本地存在對應的映象,如果映象不存在Docker 會嘗試先從預設映象倉庫下載,使用者也可以通過配置, 使用自定義的映象倉庫。

4.1列出本機映象

docker images

  說明:

    1)REPOSITORY: 來源倉庫

    2)TAG: 映象的標籤資訊,表示映象的版本.只是標記,並不能表示映象內容

    3)IMAGE ID: 映象id, 唯一表示一個映象. 如果兩個映象的 ID 相同, 說明它們實際上指向了同一 個映象, 只是具有不同標籤名稱而已;

    4)CREATED: 映象的最後更新時間.

    5)SIZE:映象大小

4.2獲取一個新映象

  當我們在本地主機上使用一個不存在的映象時 Docker 就會自動下載這個映象。如果我們想預先下載這個映象,我們可以使用 docker pull命令來下載它。下載完成後,可以使用這個映象來執行容器

docker pull hello-world

4.3配置國內映象源地址

  下載映象的時候,預設是從官方地址下載,伺服器在國外, 速度比較慢,可以換成國內映象.

  國內常用加速地址:

    (1)網易:http://hub-mirror.c.163.com

    (2)中國科技大學:https://docker.mirrors.ustc.edu.cn

    (3)阿里雲容器服務:https://cr.console.aliyun.com/

  1)進入阿里雲容器映象服務頁面,獲取映象加速地址:https://cr.console.aliyun.com/cn-beijing/instances/mirrors

  2)進行如下配置:

sudo vim /etc/docker/daemon.json
{
    "registry-mirrors": [
                                "http://hub-mirror.c.163.com",
                                "https://docker.mirrors.ustc.edu.cn",
                                "https://lwo42jds.mirror.aliyuncs.com"
                         ]
}

  說明:

    1)關於阿里雲地址的參考:https://help.aliyun.com/document_detail/60750.html?spm=a2c4g.11186623.6.550.469742c75wmmC8

    2)重啟docker

sudo systemctl restart docker

    3)檢視是否配置成功

docker info

4.4搜尋映象

docker search hello-world

4.5刪除映象

  1)使用tag刪除映象

docker rmi hello-world:latest

  注意:

    (1)如果刪除的時候報錯: 有容器使用了該映象,則需要先刪除使用過該映象的容器,才能刪除該映象.

    (2)刪除容器,再刪映象

  2)使用id刪除映象

docker rmi d1165f221234

  3)清理映象,使用 Docker 一段時間後,系統中可能會遺留一些臨時的映象檔案,以及一些沒有被使用的映象,可以通過以下命令來進行清理:

docker image prune -f 

第5章容器基本操作

  容器是 Docker 的另一個核心概念。 簡單來說,容器是映象的一個執行例項。所不同的是,映象是靜態的只讀檔案,而容器帶有執行時需要的可寫檔案層,同時,容器中的應用程序處於執行狀態

  如果認為虛擬機器是模擬執行的一整套作業系統(包括核心、 應用執行態環境和其他系統環境)和跑在上面的應用。 那麼 Docker 容器就是獨立執行的一個(或一組)應用,以及它們必需的執行環境。

5.1建立容器

  1)獲取centos:7.5.1804的映象

docker pull centos:7.5.1804

  2)建立容器

docker create --name centos7_01 -i -t centos:7.5.1804 /bin/bash

  說明:

    (1)建立一個互動式的容器

    (2)-i: 允許你對容器內的標準輸入 (STDIN) 進行互動

    (3)-t: 在新容器內指定一個偽終端或終端。

  3)啟動容器

docker start centos7_01

  4)新建並啟動容器,前面操作是先建立容器,然後再啟動容器.也可以使用run來直接新建並啟動容器

#啟動一個互動式的centos容器
docker run --name centos7_02 -it centos:7.5.1804 /bin/bash

  說明:

    (1)檢查本地是否存在指定的映象,不存在就從公有倉庫下載;

    (2)利用映象建立一個容器,並啟動該容器;

    (3)分配一個檔案系統給容器,並在只讀的映象層外面掛載一層可讀寫層

  5)檢視有哪些容器

    (1)檢視啟動的容器

docker ps

    (2)檢視所有容器

docker ps -a

  6)啟動後臺容器程序

docker run --name centos7_03 -itd centos:7.5.1804 /bin/bash

5.2停止容器

docker stop centos7_02

5.3進入容器

  在使用 -d 引數時,容器啟動後會進入後臺(有些容器預設就是後臺,比如centos容器)。此時想要進入容器,可以通過以下指令進入:

docker exec -it centos7_01 /bin/bash

  通過指定 -it引數來保持標準輸入開啟, 並且分配一個偽終端。可以看到會開啟一個新的 bash 終端,在不影響容器內其他應用的前提下,使用者可以與容器進行交五

5.4刪除容器

  1)刪除已經停止的容器

docker rm f73d

  2)刪除正在執行的容器,先停止,再刪除

docker rm -f d07ec3

5.5匯入和匯出容器

  某些時候,需要將容器從一個系統遷移到另外一個系統,此時可以使用 Docker 的導人 和匯出功能,這也是 Docker 自身提供的一個重要特性。為了測試容器是否匯出和匯入成功,,我們在centos容器中建立一個新的檔案:

5.5.1匯出容器

  匯出容器是指,匯出一個已經建立的容器到一個檔案,不管此時這個容器是否處於執行狀態.

docker export -o '/home/atguigu/test_for_centos.tar' a5bf7

  可以把匯出的tar檔案,傳輸到其他裝置,再通過匯入命令匯入,實現容器的遷移

5.5.2匯入容器

  將上節匯出的容器匯入之後會成為映象

docker import test_for_centos.tar -- test/mycentos:1.0

  使用新的映象啟動容器,發現剛才建立的檔案還在:

docker run -it d7c8de284673 /bin/bash

5.6檢視容器

5.6.1檢視容器詳情

docker container inspect a5bf

  會以 json 格式返回包括容器 Id、建立時間、路徑、狀態、映象、配置等在內的各項資訊

5.6.2檢視容器內程序

docker top a5bf7

  這個子命令類似於 Linux 系統中的 top 命令, 會打印出容器內的程序資訊, 包括 PID 、 使用者、時間、命令等

5.6.3檢視統計資訊

docker stats --no-stream a5b

  此命令會顯示 CPU 、記憶體、儲存、網路等使用情況的統計資訊

5.7容器和主機之間複製檔案

  容器和主機之間進行檔案複製的時候,要保證容器已經啟動.

5.7.1從主機複製到容器

docker cp /home/atguigu/abc.txt a5bf7d:/

5.7.2從容器複製到主機

docker cp a5bf7:/a.txt /home/atguigu/

第6章映象高階操作

6.1建立映象

  建立映象的方法主要有2種:基於已有容器建立、基於Dockerfile檔案建立

6.1.1.基於已有容器建立

docker commit -m 'add new file:a.txt' -a 'yuage' a5bf new_centos:1.0

  說明:

    1)-m 提交資訊

    2)-a 作者

    3)a5bf 舊有的容器

    4)new_centos:1.0 新的映象

6.1.2.基於Dockerfile 建立

  基於 Dockerfile 建立是最常見的方式。 Dockerfile 是一個文字檔案 利用給定的指令描述基於某個父映象建立新映象的過程,下面使用Dockerfile建立一個基於centosjava開發環境:

  1)jdk安裝轉包上傳/home/atguigu 目錄下

  2)在/home/atguigu上建立Dockerfile檔案

vim /home/atguigu/Dockerfile
FROM centos:7.5.1804
RUN mkdir -p /opt/software
RUN mkdir -p /opt/module
COPY jdk-8u212-linux-x64.tar.gz /opt/software/
RUN tar -zxvf /opt/software/jdk-8u212-linux-x64.tar.gz -C /opt/module
RUN rm -rf /opt/software/jdk-8u212-linux-x64.tar.gz
ENV JAVA_HOME=/opt/module/jdk1.8.0_212
ENV PATH=$JAVA_HOME/bin:$PATH

  說明:

    (1)每一個指令都會在映象上建立一個新的層,每一個指令的字首都必須是大寫的。

    (2)第一條FROM,指定使用哪個映象源

    (3)RUN 指令告訴docker 在映象內執行命令,安裝了什麼

    (4)COPY 是把檔案copy到映象中.原始檔必須是相對路徑不能是絕對路徑

    (5)ENV 在映象中設定環境變數

  3)建立映象,並等待建立成功

docker build -t centos_java8:1.0 .

  說明:

    (1)-t 指明映象名字和標籤

    (2).表示Dockfile所在目錄

  4)測試映象是否可以正常工作

docker run centos_java8:1.0 java -version

6.2儲存和載入映象

  使用儲存和載入功能可以把本機的映象發給其他人使用

6.2.1.儲存映象

docker save -o /home/atguigu/yuange_centos_java8.tar centos_java8:1.0

6.2.2.載入映象

  把剛剛儲存的映象發給別人(hadoop102),然後載入匯入.

docker load -i /home/atguigu/yuange_centos_java8.tar

第7章為映象新增ssh服務

7.1建立映象

  1)構建Dockerfile:

# 設定繼承映象
FROM centos_java8:1.0
# 提供作者資訊
MAINTAINER yuange ([email protected])

# 更換國內阿里雲yum源
RUN curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
RUN sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo
RUN yum makecache

# 安裝sshd
RUN yum install -y openssh-server openssh-clients
RUN sed -i '/^HostKey/'d /etc/ssh/sshd_config
RUN echo 'HostKey /etc/ssh/ssh_host_rsa_key'>>/etc/ssh/sshd_config

# 生成 ssh-key
RUN ssh-keygen -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_key

# 更改 root 使用者登入密碼為
RUN echo 'root:123321' | chpasswd

# 開發 22 埠
EXPOSE 22

# 映象執行時啟動sshd
RUN mkdir -p /opt
RUN echo '#!/bin/bash' >> /opt/run.sh
RUN echo '/usr/sbin/sshd -D' >> /opt/run.sh
RUN chmod +x /opt/run.sh
CMD ["/opt/run.sh"]

  2)構建映象

docker build -t centos_java8_sshd:1.0 /home/atguigu/

7.2執行容器,測試映象

docker run -d -p 2222:22 centos_java8_sshd:1.0

  說明:容器的22埠對映到宿主機器的2222埠,這樣通過ssh連線宿主機器的2222埠就可以連線到容器了

第8章埠對映與容器互聯

8.1埠對映

  在啟動容器的時候,如果不指定對應引數,在容器外部是無法通過網路來訪問容器內的 網路應用和服務的,使用 -p 來指定對映規則:2222:22 表示宿主的2222對映到容器的22, 使用多次 -p 可以對映多個埠

docker run -d -p 2222:22 -p 8888:80 centos_java8_sshd:1.0

  檢視容器埠繫結情況:

docker port 22e35b9ef978

8.2容器互相訪問

  埠對映並不是唯一把 docker 連線到另一個容器的方法,docker 有一個連線系統允許將多個容器連線在一起,共享連線資訊,docker 連線會建立一個父子關係,其中父容器可以看到子容器的資訊。

8.2.1容器命名

  建立容器的時候,Docker會自動為容器分配一個隨機的名字.我們也可以指定一個好記的名字,方便容器間的互聯.

docker run -d --name hadoop201_01 centos_java8_sshd:1.0

  說明:--name 引數給容器起一個名字

8.2.2docker的網路

  docker還會給我們建立三個網路:bridge/host/none。我們可以通過以下命令檢視當前宿主機中所有的docker網路

docker network ls

  其中,網橋bridge模式是在實際專案中常用的。接下來,以互動模式啟動兩個centos_java8_sshd 容器。在沒有指定相關網路的情況下,容器都會連線到預設的bridge網路

  建立兩個容器:yuange_02yuange_03, 檢查bridge網路情況.可以看到他們的ip地址

docker run -d --name yuange_02 centos_java8_sshd:1.0
docker run -d --name yuange_03 centos_java8_sshd:1.0
docker network inspect bridge

  注意:

    (1)通過ip地址我們在宿主機或者容器之間可以訪問到對方

    (2)當是172.17.0.6 等這些ip地址不能固定,每次啟動容器的時候有可能會變化,如果組建叢集的話很不方便

8.2.3自定義bridge網路,實現容器間通訊

  docker daemon 實現了一個內嵌的 DNS server,使容器可以直接通過“容器名”通訊。使用預設的bridge網路,不能通過DNS server實現通過容器名通訊,但是使用自定義bridge網路可以做到通過容器名互相通訊

  1)建立自定義bridge網路,網路名yuange

docker network create --driver bridge yuange

  2)刪除yuange_02yuange_03容器

docker rm -f yuange_02 yuange_03

  3)新建並啟動yuange_02yuange_03容器,並加入到yuange網路

docker run -d --name yuange_02 --network yuange centos_java8_sshd:1.0
docker run -d --name yuange_03 --network yuange centos_java8_sshd:1.0

  4)進入yuange_02,測試是否可以ping通yuange_03

ssh [email protected]
ping 172.19.0.3

第9章教學模式下網路搭建

  為了節省資源,假設我們所有容器都在hadoop102主機建立和啟動,則我們必須滿足下面的網路互通情況:

  目前情況:

    1)windows系統和hadoop102互通已經完成

    2)容器和hadoop102也可以互相訪問

    3)容器間也可以自由訪問

    4)容器訪問windows訪問不到!!!

    5)windows訪問容器也訪問不到,但是可以通過埠對映解決.(如果埠過多,對映不方便)

    6)容器ip地址最好還是固定的

  如何解決前面網路不通的情況?

  解決:讓容器使用橋接模式(vmware中的橋接),hadoop102處於同一個網段就可以解決了.使用pipework工具可以滿足我們的需求!

9.1安裝pipworkbrctl工具

  1)在宿主(hadoop201)上安裝git(如果已經安裝,跳過該步驟)

sudo yum install -y git

  2)下載pipework

#方式一:從碼雲中下載(我選這個,快一些)
git clone https://gitee.com/mirrors/Pipework.git
#方式二:從giuhub中下載
git clone https://github.com/jpetazzo/pipework.git

  3)把pipework指令碼新增到path

sudo cp Pipework/pipework /usr/bin/

  4)安裝brctl工具

sudo yum install bridge-utils

9.2配置網路

  1)刪除原來的容器:yuange_02yuange_03

# 刪除所有容器, 慎用!!!
docker rm -f $(docker ps -aq) 

  2)在宿主機上實現橋接網路,我的宿主機資訊:

eth33: 192.168.1.201
閘道器: 192.168.1.2
DNS1: 114.114.114.114
DNS2: 8.8.8.8

  3)在宿主機上(hadoop201)執行如下命令:

sudo brctl addbr br0; \
sudo ip link set dev br0 up; \
sudo ip addr del 192.168.1.201/24 dev ens33 ; \
sudo ip addr add 192.168.1.201/24 dev br0 ; \
sudo brctl addif br0 ens33 ; \
sudo ip route add default via 192.168.1.2 dev br0

  說明:

    (1)sudo brctl addbr br0; 新增網橋 br0

    (2)sudo ip link set dev br0 up 啟動網橋br0

    (3)sudo ip addr del 192.168.1.201/24 dev ens33 ; ens33去掉ip

    (4)sudo ip addr add 192.168.1.201/24 dev br0 ;給網橋分配ip(就使用剛才ens33去掉的ip)

    (5)sudo brctl addif br0 eth0 ; eth0 搭在br0上

    (6)sudo ip route add default via 192.168.1.2 dev br0 br0新增新的路由(根據虛擬機器閘道器自己指定)

    (7)需要注意中間會斷網,所以需要放置在一條語句執行

  4)建立兩個容器

docker run -d --name yuange_52 centos_java8_sshd:1.0
docker run -d --name yuange_53 centos_java8_sshd:1.0

  5)給兩個容器新增ip,並搭在br0上

sudo pipework br0 yuange_52 192.168.1.52/[email protected]
sudo pipework br0 yuange_53 192.168.1.53/[email protected]

  說明:

    (1)br0:網橋名

    (2)yuange_02:容器名

    (3)192.168.1.202/24:容器ip24是指的掩碼

    (4)192.168.1.2 :閘道器地址(根據自己的虛擬機器來實際指定)

9.3測試網路是否OK

  進入yuange_02,ping一下即可

ssh [email protected]

9.4最後說明

  我們前面的網橋搭建方案和容器ip分配方案都是臨時臨時生效,當虛擬機器重啟或者容器重啟之後會失效,可以放入指令碼中,統一執行.

vim /home/atguigu/bin/docker.sh
# 啟動容器
docker start yuange_02
docker start yuange_03

# 搭建網橋
sudo brctl addbr br0; \
sudo ip link set dev br0 up; \
sudo ip addr del 192.168.1.201/24 dev ens33 ; \
sudo ip addr add 192.168.1.201/24 dev br0 ; \
sudo brctl addif br0 ens33 ; \
sudo ip route add default via 192.168.1.2 dev br0

sleep 5

# 給容器配置ip和閘道器
sudo pipework br0 yuange_02 192.168.1.202/[email protected]
sudo pipework br0 yuange_03 192.168.1.203/[email protected]
chmod +x /home/atguigu/bin/docker.sh

第10章使用docker搭建叢集

  理論上來說,每個容器應該只執行一個應用,但是考慮到實際情況,我們仍然採用前面學習的虛擬機器中集權搭建方案,用一個容器替換原來的一個虛擬機器.

  在3個容器中執行原來所有的叢集分散式方案.

10.1叢集規劃

  我們叢集需要3臺虛擬機器,每臺虛擬機器配置略有不同,我們只做3個映象,每個映象對應叢集中一臺虛擬機器

hadoop162

hadoop163

hadoop164

NameNode

SecondaryNameNode

DataNode

ResourceManager

NodeManager

HMaster

HRegionServer

Phoenix

Redis(非叢集)

mysql

10.2準備工作

  把所有需要用的檔案提前準備好,網盤地址:https://pan.baidu.com/s/1pk-RzsfWcoaOCiG9b5RNoQ  提取碼:g48h

10.3製作映象和建立容器

  1)各個Dockerfile檔案和指令碼具體內容見清單,將docker_images目錄上傳至使用者家目錄下

  2)進入docker_images/docker_bigdata目錄執行指令碼:build_all.sh根據提示構建需要的映象和容器(若無許可權先給指令碼新增許可權)

  3)進入docker_images/docker_bigdata目錄執行指令碼:contains.sh start啟動容器

  4)詳情請看Readme.md檔案

10.4測試映象

  容器叢集啟動成功之後,使用ssh登入,像在虛擬機器中操作一樣進行操作就可以了,但是需要注意的是,容器中用到的一些工具沒有了,如果使用,可以在製作映象的時候安裝好,也可以啟動容器之後安裝