2022年11月21日 星期一

ubuntu 簡易安裝docker zabbix

 ubuntu要先安裝docker及docker-compose

Detailed Guide – Method: 1

The example demonstrates how to run Zabbix server with MySQL database support, Zabbix web interface based on the Nginx web server and Zabbix Java gateway.


1. Create network dedicated for Zabbix component containers:

# docker network create --subnet 172.20.0.0/16 --ip-range 172.20.240.0/20 zabbix-net


2. Start empty MySQL server instance

# docker run --name mysql-server -t \

      -e MYSQL_DATABASE="zabbix" \

      -e MYSQL_USER="zabbix" \

      -e MYSQL_PASSWORD="zabbix_pwd" \

      -e MYSQL_ROOT_PASSWORD="root_pwd" \

      --network=zabbix-net \

      -d mysql:5.7 \

      --character-set-server=utf8 --collation-server=utf8_bin


3. Start Zabbix Java gateway instance

# docker run --name zabbix-java-gateway -t \

      --network=zabbix-net \

      --restart unless-stopped \

      -d zabbix/zabbix-java-gateway:alpine-5.4-latest


4. Start Zabbix server instance and link the instance with created MySQL server instance

# docker run --name zabbix-server-mysql -t \

      -e DB_SERVER_HOST="mysql-server" \

      -e MYSQL_DATABASE="zabbix" \

      -e MYSQL_USER="zabbix" \

      -e MYSQL_PASSWORD="zabbix_pwd" \

      -e MYSQL_ROOT_PASSWORD="root_pwd" \

      -e ZBX_JAVAGATEWAY="zabbix-java-gateway" \

      --network=zabbix-net \

      -p 10051:10051 \

      --restart unless-stopped \

      -d zabbix/zabbix-server-mysql:alpine-5.4-latest


5. Start Zabbix web interface and link the instance with created MySQL server and Zabbix server instances

# docker run --name zabbix-web-nginx-mysql -t \

      -e ZBX_SERVER_HOST="zabbix-server-mysql" \

      -e DB_SERVER_HOST="mysql-server" \

      -e MYSQL_DATABASE="zabbix" \

      -e MYSQL_USER="zabbix" \

      -e MYSQL_PASSWORD="zabbix_pwd" \

      -e MYSQL_ROOT_PASSWORD="root_pwd" \

      --network=zabbix-net \

      -p 80:8080 \

      --restart unless-stopped \

      -d zabbix/zabbix-web-nginx-mysql:alpine-5.4-latest


Zabbix web interface instance exposes 80/TCP port (HTTP) to host machine.



Zabbix server主机安装Zabbix agent2服务

#sudo mkdir /var/lib/docker/volumes/zabbix-agent2-volume

#docker volume create zabbix-agent2-volume

#docker run -v /etc/localtime:/etc/localtime \

      --name zabbix-agent2 \

      -v zabbix-agent2-volume:/etc/zabbix \

      -e ZBX_HOSTNAME="zabbix-server" \

      -e ZBX_SERVER_HOST="zabbix-server-mysql" \

      -p 10050:10050 \

      -e ZBX_SERVER_PORT=10051 \

      -v ${server_dir}/agent2/modules:/var/lib/zabbix/modules \

      --privileged \

      --network=zabbix-net \

      --restart unless-stopped \

      -d zabbix/zabbix-agent2:ubuntu-6.0-latest

ubuntu 20.04.5安裝harbor

安裝ubuntu 20.04.5後

設定固定IP

sudo vi /etc/netplan/00-installer-config.yaml

例如:

# This is the network config written by 'subiquity'

network:

  version: 2

  ethernets:

    eth0:

      dhcp4: false

      addresses: [192.168.0.50/24]

      routes:

      - to: default

        via: 192.168.0.1

      nameservers:

        addresses: [1.1.1.1,8.8.8.8]


重啟網路設定

sudo netplan apply


進入ubuntu

sudo apt-get update && sudo apt-get upgrade -y


更改系統的時區

看目前時區

timedatectl


修改時區

sudo timedatectl set-timezone Asia/Taipei


安裝docker

更新軟件存儲庫

sudo apt update


下載依賴項:允許您的 Ubuntu 20.04 系統通過 HTTPS 訪問 Docker 存儲庫

sudo apt-get install apt-transport-https ca-certificates curl software-properties-common


添加 Docker 的 GPG 密鑰

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -


安裝 Docker 存儲庫

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"


安裝最新的 Docker

先再次更新存儲庫

sudo apt update


安裝最新的 Docker 版本

sudo apt-get install docker-ce


驗證 Docker 安裝

docker --version


啟用 Docker 服務

sudo systemctl start docker

sudo systemctl enable docker


檢查服務的狀態

sudo systemctl status docker


在沒有 Sudo 的情況下運行 Docker 命令

創建docker組

sudo groupadd docker


鍵入以下命令(確保將[user]替換 為您的用戶名,但別保留[])

sudo usermod -aG docker [user]

例如

sudo usermod -aG docker sct


啟用新設置

su - [user]

例如

su - sct


檢查以確認用戶現在是 docker 組的一部分

id -nG


測試

docker run hello-world


-----------------------------------------------------------------

安裝Docker Compose

sudo curl -L https://github.com/docker/compose/releases/download/v2.12.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose


設定執行權限

sudo chmod +x /usr/local/bin/docker-compose


看版本

docker-compose --version


----------------------------------------------------------------

安裝Harbor

要先安裝 Docker 與 Docker Compose

獲得的安裝包位置

wget https://github.com/goharbor/harbor/releases/download/v2.6.2/harbor-offline-installer-v2.6.2.tgz


解壓縮

tar xvf harbor-offline-installer-v2.6.2.tgz


修改harbor.yml

cd harbor

sudo cp harbor.yml.tmpl harbor.yml

sudo vi harbor.yml

修改hostname、先將happs拿掉、登入admin密碼及資料庫密碼

hostname: 192.168.137.200

#https:

  # https port for harbor, default is 443

  #  port: 443

  # The path of cert and key files for nginx

  #  certificate: /your/certificate/path

  #  private_key: /your/private/key/path

harbor_admin_password: Windows1

database:

  password: Windows1


修改完成後執行 sudo ./install.sh


完成後開啟瀏覽器http://192.168.137.200登入

也可以docker login 192.168.137.200

重開機後要輸入sudo docker-compose up -d 


-------------------------------------------------------------

使用HTTPS

建置放證書的目錄

sudo mkdir -p /data/certs

cd /data/certs


產生CA證書

創建key文件:

sudo openssl genrsa -out ca.key 4096

產生證書

sudo openssl req -x509 -new -nodes -sha512 -days 3650 -subj "/CN=192.168.137.200" -key ca.key -out ca.crt


產生服務器證書

創建私鑰

sudo openssl genrsa -out server.key 4096

產生證書簽名請求

sudo openssl req -new -sha512 -subj "/CN=192.168.137.200" -key server.key -out server.csr


產生harbor倉庫主機的證書

產生一個x509 v3擴展文件

sudo vim v3.ext


authorityKeyIdentifier=keyid,issuer

basicConstraints=CA:FALSE

keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment

extendedKeyUsage = serverAuth

subjectAltName = IP:192.168.137.200



使用此v3.ext文件為您的Harbor主機產生證書

sudo openssl x509 -req -sha512 -days 3650 -extfile v3.ext -CA ca.crt -CAkey ca.key -CAcreateserial -in server.csr -out server.crt


配置和安裝證書

將server.crt文件和server.key文件拷貝到此目錄/data/cert下

因為我前面一直是在這個路徑操作的就省略了該步驟

修改harbor的配置文件 修改以下配置項

root@eb7023:/data/certs>sudo vim ~/harbor/harbor.yml

hostname: 192.168.137.200

https:

port:443

certificate: /data/certs/server.crt

private_key: /data/certs/server.key


可以重啟一下harbor倉庫了,注意這里要CD到harbor解壓目錄

cd /home/sct/harbor/

sudo ./prepare


停止當前運行的harbor

sudo docker-compose down -v


後台運行的harbor

sudo docker-compose up -d


為docker配置harbor認證

將server證書cp到docker所在的機器固定目錄中

sudo mkdir -p /etc/docker/certs.d/192.168.137.200

cd /data/certs/

sudo cp server.crt /etc/docker/certs.d/192.168.137.200/server.crt


然后docker直接login即可

docker login 192.168.137.200


將 Harbor 設置為系統服務

編輯文件 sudo vim /lib/systemd/system/harbor.service


[Unit]

Description=Harbor

After=docker.service systemd-networkd.service systemd-resolved.service

Requires=docker.service

Documentation=http://github.com/vmware/harbor


[Service]

Type=simple

Restart=on-failure

RestartSec=5

ExecStart=/usr/local/bin/docker-compose -f /home/sct/harbor/docker-compose.yml up

ExecStop =/usr/local/bin/docker-compose -f /home/sct/harbor/docker-compose.yml down


[Install]

WantedBy=multi-user.target


sudo systemctl start harbor

sudo systemctl enable harbor



------------------------------------------------------------------------------------

測試建置Harbor倉庫主機是否可行

以瀏覽器登入

https://192.168.137.200

在左邊點選項目-->選新建項目-->填入項目名稱(例如ithome),確定即可


透過 Docker login 到 https://192.168.137.200

下載我本來放在 Docker hub 上的 Image,並透過 docker tag 將其重新命名

docker pull hwchiu/netutils

docker tag hwchiu/netutils 192.168.137.200/ithome/netutils:latest


將新命名的 docker image 推向我們建置的 Harbor container registry

docker push 192.168.137.200/ithome/netutils:latest


瀏覽器登入192.168.137.200 看netutils是否在ithome項目目錄中


-------------------------------------------------------------------------

安裝掃描器(掃漏洞)

先停止服務

sudo systemctl stop harbor


安裝掃描器

cd /home/sct/harbor

sudo ./install.sh --with-notary --with-trivy --with-chartmuseum


啟動服務

sudo systemctl start harbor


登入瀏覽器,進入項目,點選項目名稱,再點選鏡像倉庫名稱,選工作,選掃描即可


安裝ubuntu 20.04.5後 設定固定IP

 sudo vi /etc/netplan/00-installer-config.yaml

例如:

# This is the network config written by 'subiquity'

network:

  ethernets:

    eth0:

      dhcp4: no

      addresses: [192.168.137.200/24]

      optional: true

      gateway4: 192.168.137.1

      nameservers:

        addresses: [8.8.8.8, 8.8.4.4]

  version: 2


重啟網路設定

sudo netplan apply


更改系統的時區

看目前時區

timedatectl

修改時區

sudo timedatectl set-timezone Asia/Taipei


2022年10月2日 星期日

PowerShell 一長行如何分隔多行

 docker run -p 3307:3306 --name mysql-master ` 

-v e:\mydata\mysql-master\log:/var/log/mysql `

-v e:\mydata\mysql-master\data:/var/lib/mysql `

-v e:\mydata\mysql-master\conf:/etc/mysql `

-e MYSQL_ROOT_PASSWORD=root `

-d mysql:5.7


可以使用反勾号`(ESC下方第一个键),且要與最後一個字有空格


2022年7月15日 星期五

mysql 授權root遠端存取

Mysql 5.7版為

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '!QAZ@WSX' WITH GRANT OPTION;

FLUSH PRIVILEGES;

exit


Mysql 8版為

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '!QAZ@WSX';

FLUSH PRIVILEGES;

exit


CREATE USER 'root'@'%' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;

GRANT ALL PRIVILEGES ON *.* to 'root'@'%';

FLUSH PRIVILEGES;

exit


2022年7月10日 星期日

如何把powershell或終端機一行命令分割成多行?

 可以使用反勾号`(ESC下方第一个键)来进行换行

例如:

docker run --name mysql-server -t `

      -e MYSQL_DATABASE="zabbix" `

      -e MYSQL_USER="zabbix" `

      -e MYSQL_PASSWORD="!QAZ@WSX" `

      -e MYSQL_ROOT_PASSWORD="!QAZ@WSX" `

      --network=zabbix-net `

      -d mysql:8.0 `

      --restart unless-stopped `

      --character-set-server=utf8 --collation-server=utf8_bin `

      --default-authentication-plugin=mysql_native_password

2022年7月6日 星期三

docker ubuntu 時間不對

apt update  --一定要先做,否則以下無法安裝

apt-get -y install tzdata

mv /etc/localtime /etc/localtime1  --如果原先有檔案的話

cp /usr/share/zoneinfo/Asia/Taipei /etc/localtime