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

2022年6月1日 星期三

Docker 一些指令

建立docker 網路

docker network create 網路名稱

例如:docker network create net1

建立mysql (mariadb)容器及啟動時的選項與參數

docker run --name 容器名稱 -dit --net=網路名稱 -e MYSQL_ROOT_PASSWORD=mysql的管理員密碼 -e MYSQL_DATABASE=資料庫網域名稱 -e MYSQL_USER=mysql的使用者名稱 -e MYSQL_PASSWORD=mysql的使用者密碼 mysql(mariadb) --character-set-server=字元編號 --collation-server=字符對照表 --default-authentication-plugin=驗證方式

例如:docker run --name mysqltest -dit --net=net1 -e MYSQL_ROOT_PASSWORD=Mysqltest1@ -e MYSQL_DATABASE=wordpressdb -e MYSQL_USER=wordpress001 -e MYSQL_PASSWORD=testPress mysql(mariadb) --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --default-authentication-plugin=mysql_native_password

建立程式容器(container)

例如建立wordpress容器與mysql、網路連線

docker run --name wordpress01 -dit --net=net1 -p 8085:80 -e WORDPRESS_DB_HOST=mysqltest -e WORDPRESS_DB_NAME=wordpressdb -e WORDPRESS_DB_USER=wordpress001 -e WORDPRESS_DB_PASSWORD=testPress wordpress

確認容器執行狀況

docker ps  在status 是否Up

docker ps -a 列出容器清單在status 有Up或Exited

刪除容器--必須先停止再刪除,docker stop 容器名稱,docker rm容器名稱

例如:docker stop wrodpress01

docker stop mysqltest

docker rm wordpress01

docker rm mysqltest

刪除映像檔(image)

docker image rm 映像檔名稱

例如:docker image rm mysql,docker image rm wordpress

刪除網路

docker network rm 網路名稱

例如:docker network rm net1

顯示清單

容器:docker ps -a

映像檔:docker image ls

網路:docker network ls

卷宗:docker volume ls

容器與主機間的檔案複製, CP 源頭 目的地

docker cp 複製源頭 複製目的地

docker cp 主機端路徑 容器名稱:容器端路徑  主機-->容器

docker cp 容器名稱:容器端路徑  主機端路徑 容器-->主機

掛載儲存空間分卷宗掛載及繫結掛載

卷宗掛載:在Docker Engine 管理空間中建立卷宗,再當作硬碟掛載至容器

常用於放置想要臨時使用的資料、少用但不可刪除的檔案

繫結掛載:在安裝Docker的電腦,不再Docker Engine 管理下的既存目錄掛載至容器

常用來存放需要頻繁使用的檔案

建立卷宗(卷宗掛載)

docker volume create 卷宗名稱

例如:docker volume create appvol01

顯示卷宗的詳細資訊

docker volume inspect 卷宗名稱

例如:docker volume inspect appvol01

刪除卷宗(卷宗掛載)

docker volume rm 卷宗名稱

例如:docker volume rm appvol01

掛載儲存空間指令

docker run -it --privileged=true /宿主機絕對路徑目錄:/容器內目錄 鏡像名

默認目錄為rw

繫結掛載:docker run (省略) -v 實際的儲存空間路徑:容器的儲存空間路徑 (省略) 鏡像名

卷宗掛載:docker run (省略) -v 卷宗名稱:容器的儲存空間路徑 (省略) 鏡像名

建議加載--privileged=true

例如:docker run --name web1 -d -p 8081:80 -v appvol01:/usr/local/apache2/htdocs --privileged=true httpd

docker run -d -p 5000:5000 -v /abcd/myregistry/:/tmp/registry --privileged=true registry

/abcd/myregistry/:/tmp/registry-->宿主機的路徑:容器內的路徑

--privileged=true-->特權為true,不加也可以,建議加入

限制容器內部,只能讀取不能寫

docker run -it --privileged=true -v /宿主機的路徑:/容器內的路徑:ro 鏡像名

ro=read only

容器繼承

docker run -it --privileged=true --name=u1 ubuntu

docker run -it --privileged=true --volume-from u1 --name=u2 ubuntu

u1為父,u2為子;u1關機,u2與宿主機繼續通訊;u1啟動後,資料仍保持最新狀態及共享

顯示卷宗的詳細資料

例如:docker volume inspect appvol01

出現

[

    {

        "CreatedAt": "2022-06-01T06:30:40Z",

        "Driver": "local",

        "Labels": {},

        "Mountpoint": "/var/lib/docker/volumes/appvol01/_data",

        "Name": "appvol01",

        "Options": {},

        "Scope": "local"

    }

]

顯示容器的詳細資料

例如:docker container inspect web1

省略...

        "Mounts": [

            {

                "Type": "volume",

                "Name": "appvol01",

                "Source": "/var/lib/docker/volumes/appvol01/_data",

                "Destination": "/usr/local/apache2/htdocs",

                "Driver": "local",

                "Mode": "z",

                "RW": true,

                "Propagation": ""

            }

        ],

省略...

以Dockerfile建立映像檔

準備名為dockerfile的檔案,再以build 指令建立映像檔

docker build -t 建立的映像檔名稱 所需資料夾路徑

-t-->tag,標籤資訊

dockerfile內容範例

FROM 映像檔名稱

COPY 複製源頭路徑 複製目的地路徑

RUN Linux 指令

CMD["executable","param1","param2"]

......

docker build -f e:\ubuntutest\dockerfile -t ubuntu:1.2 .  --最後 . 表示當前目錄

docker build -t ubuntu:production -f dockerfile.production . --想建置的是production的映像檔


刪除所有容器(Container)

docker rm -f $(docker ps -q)

完整版

docker container rm --force $(docker container list --all --quiet)

刪除停止容器(Container)

docker container prune

清理不需要的映像檔

docker image prune  -->只會刪除dangling的映像檔

docker image prune --all  -->清除所有沒有執行的映像檔

清理系統

docker system prune    -->一次清除停止的容器,無名的映像檔,無名快取,沒有使用到的虛擬網路,只有volume沒被清除。

Docker scan file

例如: docker scan --file dockerfile myubuntu:1.2

Docker container 退出

1.退出仍執行:Ctrl+P和Ctrl+Q分别按,可以退出容器,讓容器仍繼續執行,如要進入使用 docker attach 容器名/id 或使用docker exec -it 容器名/id /bin/bash,退出下exit時,容器繼續執行(建議使用此方案)

2.退出不執行:Ctrl+D和exit退出容器,不運行、在容器里面退出可以使用docker stop 容器名/id

導出導入容器

導出-->docker export 容器名/id > 文件名.tar

導入-->cat 文件名.tar | docker import - 鏡像用戶/鏡像名:鏡像版本號

用commit產生新的鏡像(image)

docker commit -m="提交的描述訊息"  -a="作者" 容器名/id  要創建的目標鏡像名:[標籤名(TAG)]

1.Docker registry 建置私有倉庫

docker pull registry

docker run -d -p 5000:5000 -v /aaa/myregistry/:/tmp/registry --privileged=true registry:2

默認情況下,倉庫被創建在容器的/var/lib/registry目錄下,建議自行用容器映射,方便於宿主機聯調

2.驗證一下

curl -XGET http://宿主機IP:5000/v2/_catalog

出現{"repositories".[]} 表示目前為空

3.將image推送至私有倉庫 

docker tag <鏡像名:tag> registryIP:5000/<鏡像名:tag>

4.修改文件可以使之支持http

vi /etc/docker/daemon.json

加入

{

".....................................[] ,

"insecure-registries":["registryIP:5000"]

}

重啟docker

sudo systemctl restart docker

5.推送鏡像到私有倉庫

docker push 鏡像名(registryIP:5000/鏡像名:tag)

6.驗證一下,是否有上傳成功

curl -XGET http://宿主機IP:5000/v2/_catalog

出現{"repositories".[鏡像名]} 表示目前OK

7.測試將鏡像送到本地

docker pull registryIP:5000/鏡像名:tag




2022年4月21日 星期四

修改domain user 權限即可將電腦加入網域,有10次的配額

 網路上有3種

1.開始->程式集->網域控制站安全性原則->安全性原則->本機原則->使用者權力指派->將工作站加入電腦->將 Authenticated User 改成 Domain Admin。

2.利用使用委派來管理

加入網域ADUC—>View —> Advanced feature
按右鍵檢查 computer 的 properties
Security tab—> Advanced
Permission tab —> authenticated users—> Edit
將下列兩個打勾
Create Computer object
Delete Computer object ACEs

3.修改加入網域 10 次限制
執行 adsiedit.msc 
ADSI edit—> 選取 domain (dc=contoso,dc=com)
找出 ms-DS-MachineAccountQuota 的 attribute. 預設是 10,
可以透過這裡修改加入網域的次數(如廠商安裝新電腦時可以先變大,安裝後再縮小)

2022年3月30日 星期三

Windows AD 群組原則一些觀念

 

  1. 剛建好AD 網域時,預設有兩個 GPO—Default Domain Policy和Default Domain Controllers Policy,前者用來管理網域中所有的電腦與使用者;後者則專門用於管理網域控制站。
  2. 群組原則的套用順序為:最先套用本機電腦原則,其次為站台的群組原則,再其次為網域的群 組原則,最後是組織單位的群組原則
  3. 本機電腦原則<站台群組原則<網域群組原則<組織單位群組原則<下層組織單位群組原則
  4. 組織會繼承網域原則(也可以禁止繼承),若組織也有原則,則組織的電腦與使用者會得到網域原則+組織原則
  5. 若網域原則與組織原則有衝突時,以組織原則為準
  6. 優先權是以後面覆蓋前面
  7. 每個群組原則可分為「電腦設定』與「使用者設定』兩部份,分別套用到電腦與使用者,而且是以兩個獨立的套用程序,分別在不同的時間點執行。
  8. 開機/登入
    1. 『電腦開機』與『使用者登入』時,皆會套用群組原則:
      1. 電腦開機 
        1. 當電腦開機(或是執行重新啟動)時,網域控制站會根據該電腦帳戶所隸屬的站台、 網域或組織單位,決定應套用哪些群組原則的『電腦設定』部份。 
        2. 所以當我們看到螢幕出現登入的畫面時,表示已經套用了群組原則的「電腦設定』部分
      2. 使用者登入 
        1. 當使用者登入(按Ctrl + Alt+ Del鍵,輸入帳戶名稱與密碼)時,網域控制站會根據該使用者帳戶所隸屬的站台、 網域或組織單位,決定必須套用哪些群組原則的『使用者設定』部分。 
        2. 所以當我們看到螢幕出現各使用者自己的桌面時,表示已經套用了群組原則的『使用者設定」部分。
      3. ー般而言,在電腦順利啟動之後,使用者才能用該電腦登入網域。
    2. 因此是先套用電腦設定,後套用使用者設定。
    3. 不過,當電腦設定和使用者設定發生衝突時,若依照前述的觀念,應該是後套用的使用者設定 覆蓋掉先套用的電腦設定一一然而事實並非如此,而是電腦設定覆蓋掉使用者設定!
  9. 群組原則分原則及喜好設定,只有網域群組原則才有喜好設定,本機電腦原則則無
  10. 喜好設定非強制性,用戶端可以自行變更設定值,故適合用來作預設值;原則設定是強制性設定,用戶端無法變更
  11. 原則設定與喜好設定若有相同設定項目,以原則設定為優先