Docker 管理員操作使用說明

1 模塊一:Docker 和集算器結合

1.1 Docker 和集算器結合概述

將集算器的群集和 docker 結合可以進行高效的運算、合理的資源分配與管理。結合以後結構分成兩部分: Server 端和 Client 端; Docker Server 端目前只能在 Linux 中使用。

1.2 Docker 端口

我們需要了解的是 Docker 管理涉及到三個端口:通信端口、映射外部端口及映射內部端口。其中,dockerManager 與 dockerServer 之間通過通信端口相互通信;Docker 通過映射外部端口來訪問 esprocs 服務;esprocs 服務使用的是映射內部端口。

1.3 兩個對應關係

1) Docker 機與集算器群集的節點機為一一對應關係, 通過主機與端口來區分,docker 映射內外端口相同. 因此在同一臺物理機上,用戶使用的端口要求是沒有被佔用而且還是唯一的,Docker 在 Server 端的使用分為一臺物理機和多臺物理機,我們簡單的把 ip:port 和 docker 理解為 1:1 的對應關係。

2) Server 端分為 dockerManager 與 dockerServer, dockerManager 管理網絡連接,是網絡的入口,負責用戶的登陸檢驗、其它關聯 docker 機的管理(啟動、關閉)、用戶配置信息複製到 docker 中;dockerServer 不直接與 client 端通信, 只與 dockerManger 通信,它只負責 docker 的啟動與關閉,由 dockerManager 管理,dockerServer 與 dockerManager 是 n:1 關係.

2 模塊二:管理員配置 Server 端

在 server 端 docker 管理員要對 docker_user.xml, docker_server.xml, unitServer.xml 及用戶使用的資源進行管理與分配設置。

2.1 宿主機和 docker 容器目錄映射關係

Docker 管理員操作使用說明

2.2 啟動腳本自動拷貝配置文件

  • 管理員配置宿主機集算器 esProc/config 目錄下的兩個文件:

raqsoftConfig.xml【授權配置文件】

unitServer.xml 【分配 ip:port 資源的群集配置文件】

  • dokcer 啟動腳本在 docker 容器中執行如下命令:

cp /app/config/raqsoftConfig.xml ../config

cp /app/config/unitServer.xml ../config,

把宿主機 ${home} /config/(對應 docker 容器內 /app/config 目錄)下的兩個配置文件拷貝到 docker 的集算器配置目錄下。

2.3 配置 docker_server 服務器管理

  • docker_server.xml 配置示例

<config>
<server>192.168.0.186:9001/<server>
<share>/home/docker/share/<share>
<nodetype>manager/<nodetype>
/<config>

<config>
<server>192.168.0.186:9001/<server>
<share>/home/docker/share/<share>
<nodetype>manager/<nodetype>
/<config>

說明:

標籤為 client 端訪問 Server 端時的 IP 和端口號,示例如下:

Docker 管理員操作使用說明

標籤為共享目錄

2.4 配置集算器在 docker 中使用的配置文件:

  • raqsoftConfig.xml 配置示例:
Docker 管理員操作使用說明

說明:

此處 /share 路徑為標籤指定的共享目錄 (映射目錄)

在 docker 啟動時掛載了宿主機的共享目錄 ${sharePath},映射關係為:-v ${sharePath}:/share:ro,該目錄掛載到 docker 容器的 /share 目錄,docker 共享目錄 /share 下的文件會自動複製到 docker 下集算器配置目錄下。

  • unitServer.xml 配置示例
Docker 管理員操作使用說明

說明:

標籤屬性為 manager 表示此物理機為入口機

2.4.1 場景一:一臺物理機配置一個或多個 docker

配置標籤屬性為 manager

2.4.2 場景二:多臺物理機配置多個 docker

各個物理機之間要相互通信,所以通信端口 9001(或者為其它端口)要求一致

入口機配置標籤屬性為 manager

其他物理機無標籤

2.5 配置 docker_user.xml 用戶管理


<users>
<user>
<name>aaa/<name>
<alias>張三/<alias>
123456
<memory>500m/<memory>
512
<home>/opt/app/aaa/<home>
<unit>192.168.0.76:8281/<unit>
/<user>
<user>
<name>bbb/<name>
<alias>李四/<alias>
123456
<memory>500m/<memory>
512

<home>/opt/app/bbb/<home>
<unit>192.168.0.77:8282,192.168.0.77:8283/<unit>
/<user>
。。。
<users>

<users>
<user>
<name>aaa/<name>
<alias>張三/<alias>
123456
<memory>500m/<memory>
512
<home>/opt/app/aaa/<home>
<unit>192.168.0.76:8281/<unit>
/<user>
<user>
<name>bbb/<name>
<alias>李四/<alias>
123456
<memory>500m/<memory>
512
<home>/opt/app/bbb/<home>
<unit>192.168.0.77:8282,192.168.0.77:8283/<unit>
/<user>
。。。
<users>
/<users>/<users>/<users>/<users>

標籤為 Client 端訪問 Server 端時的用戶名,要求是唯一的,最好是英文,docker 使用時,不允許同名的用戶名同時使用

標籤為 Client 端訪問 Server 端時的密碼

標籤為用戶名別名,方便用戶區分記憶

使用最小為 4M, 需要在參數後面加上單位 m

為用戶在宿主機上存儲的位置, 要求可讀寫, 它下面分 config, demo, data 三個目錄,分別對應存放配置文件、dfx 文件及數據文件.

標籤為 docker 映射(內外)端口即,Client 端訪問 Server 端的集算器 IP 和端口。

2.5.1 場景一:一臺物理機配置一個或多個 docker

<unit>192.168.0.76:8282,192.168.0.76:8283/<unit>
<unit>192.168.0.76:8282,192.168.0.76:8283/<unit>

2.5.2 場景二:多臺物理機配置多個 docker

<users>
<user>
<unit>192.168.0.76:8281/<unit>
<user>
<user>
<unit>192.168.0.77:8282,192.168.0.77:8283/<unit>
<user>
。。。
<users>
<users>
<user>
<unit>192.168.0.76:8281/<unit>
<user>
<user>
<unit>192.168.0.77:8282,192.168.0.77:8283/<unit>
<user>
。。。
<users>
/<users>/<user>/<user>/<user>/<user>/<users>/<users>/<user>/<user>/<user>/<user>/<users>

3 啟用 Server 端

3.1 Java 運行軟件包在 server 上的佈署

服務端啟動程序 server.sh 及其相關的程序目錄相對關係如下圖:

Docker 管理員操作使用說明

3.2 鏡像安裝使用:

進行 esproc 鏡像文件 esproc.tar.gz 所在的目錄,先解壓再發布鏡像

tar -zxvf esproc.tar.gz; docker load -i esproc.tar

3.3 鏡像安裝使用:

# ./server.sh

3.4 鏡像安裝使用:

# kill -9 docker_pid

3.5 鏡像安裝使用:

1.docker 日誌–容器

docker logs 能夠打印出自容器啟動以來完整的日誌,位置存放 /var/lib/docker/containers

$ docker logs [OPTIONS] CONTAINER

Options:

–details 顯示更多的信息

-f, –follow 跟蹤日誌輸出,最後一行為當前時間戳的日誌

–since string 顯示自具體某個時間或時間段的日誌

–tail string 從日誌末尾顯示多少行日誌, 默認是 all

-t, –timestamps 顯示時間戳

2.docker 管理服務日誌

Docker daemon 日誌的位置,可以根據不同的系統去查看:

Ubuntu - /var/log/upstart/docker.log

Boot2Docker - /var/log/docker.log

Debian GNU/Linux - /var/log/daemon.log

CentOS - /var/log/daemon.log | grep docker

3.5 鏡像安裝使用:

1.dokcer 端口占用衝突

解決方法:

一,更改端口號;

二,刪除衝突的端口號。

刪除衝突端口如下:

–查看 nat 表所有鏈的規則:

iptables -t nat -nL –line-number |grep 80 (如 80 端口)

Chain DOCKER (2 references)

target prot opt source destination

DNAT tcp – 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 to:172.17.0.2:8080

DNAT tcp – 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 to:172.17.0.9:8080

–刪除衝突的端口:

iptables -t nat -D DOCKER 2 刪除 chain docker 中的第二條規則

2.Docker 殭屍進程

–產生原因:子進程退出,而父進程並沒有調用 wait 或 waitpid 獲取子進程的狀態信息,那麼子進程的進程描述符仍然保存在系統中,這種進程稱之為殭屍進程。

–宿主機上 docker 容器卡死,解決方法:

ps -ef|grep defunct

ps -ef|grep -w ‘Z’ #查找殭屍進程

殭屍進程很難直接 kill 掉,可以試著殺死殭屍進程的父進程:

ps -e -o ppid,stat |grep Z|awk -F " " ‘{print $1}’|xargs kill -9

–容器內的殭屍進程

現在有很多人使用 docker,只在容器裡面運行一個進程。大多數情況下,這個進程並不會有 init 進程的行為,不會有 init 進程來接管殭屍進程,所以在 docker 啟動時添加 init 進程,可以用來接收孤兒進程。

docker run –init your_image_here

3.dockerServer 失敗問題

dockerserver 失敗問題

a.docker 服務失敗查看日誌

systemctl status docker.service

–詳細日誌

journalctl -xe

–重啟服務

systemctl daemon-reload

systemctl start docker.service

b. 啟動容器失敗根據日誌查看失敗的原因

docker log

4.docker 沒有正常退出

–查看容器運行狀態和查看日誌

docker ps -a

docker logs CONTAINER

–可能原因:

docker 容器的主線程(dockfile 中 CMD 執行的命令)結束,容器會退出

–建議使用後臺模式和 tty 選項

docker run -dit [CONTAINER_NAME or CONTAINER_ID]

–Docker 容器在後臺以守護態(Daemonized)形式運行,可以通過添加 -d 參數來實現,以下例子容器不會沒事幹而自殺

sudo docker run -d ubuntu:14.04 /bin/sh -c “while true; do echo hello world; sleep 1; done”

管理員操作幫助文件:

dockerServerzip(http://img.raqsoft.com.cn/file/2019/05/4ee994ac30324aca8ff5b9eb93567107_dockerServer.zip)


分享到:


相關文章: