2023年9月1日 星期五

跟著書做~圖解Docker & Kubernetes的知識與使用方法

作者說到一個重點,因為K8s變化很快,建議到官網查資料@@ 看了很多網頁的資訊,只有這本書比較能一步步地跟著做(建議先看附錄九,安裝步驟)。

一、何謂Docker

  1. 一定要在Linux上安裝docker engine,才能運行各種容器。容器可以移植到其他Docker上。
  2. windows也是要安裝WSL(linux)才能運行@@

二、Docker的運作機制

  1. 建議一個容器一個service。

三、使用Docker

  1. docker desktop要開啟 hyper-v(會與Vbox,VMware相衝突),但hyper-v只有專業版以上才有,所以微軟推出WSL2,家用版就可以用囉~

四、使用Docker建立容器

  1. docker run --name apa001 -d httpd
    可以跑起來,但不知怎麼看@@原來是沒有指定 port,本機 : 容器
    docker run --name apa002 -d -p 8080:80 httpd
  2. container有很多,可以到官網查看看說明文件
  3. docker run --name mysql001 -dit -e MYSQL_ROOT_PASSWORD=myrootpass mysql

五、嘗試讓Docker結合多個容器來運行

  1. wordpress = wordpress容器( wordpress本體,apache, php )  + MYSQL容器
    容器要互相通,要建立網路network
    docker network create WP001net001
  2. 啟動MYSQL
    docker run --name mysqlHost001 -dit --net=WP001net001 -e MYSQL_ROOT_PASSWORD=myrootpass -e MYSQL_DATABASE=WP001DB001  -e MYSQL_USER=WP001user001 -e MYSQL_PASSWORD=WP001userpass mysql --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci  --default-authentication-plugin=mysql_native_password
  3. 啟動Wordpress docker run --name WP001 -dit --net=WP001net001 -p 8080:80  -e WORDPRESS_DB_HOST=mysqlHost001 -e WORDPRESS_DB_NAME=WP001DB001 -e WORDPRESS_DB_USER=WP001user001 -e WORDPRESS_DB_PASSWORD=WP001userpass wordpress
  4. 關閉要先關wordpress,再關mysql

六、學習容器的應用方式

  1. 容器與主機的檔案複製(主機位置    容器名稱 : /位置)
    docker cp 複製源頭  目的地
  2. 繫結掛載,類似做捷徑,備份很容易
    docker  run  -v  本機的資料夾:容器的資料夾
  3. 卷宗掛載,要先建立一個卷宗(放在哪裡不知道,由docker engine設定???),再用容器去連結,不容易備份,要用容器進行備份
    docker   volume   create   卷宗名稱
    docker   run   -v   卷宗名稱:容器的資料夾 
  4. 建立映像檔一:先跑一個容器,然後commit就可以變成映像檔
    docker commit   啟動的容器    要變映像檔的名字
    docker commit  apa022  apa_img001
  5. 建立映像檔二:用dockerfile建立映像檔,再用build
    docker  build  -t  httpd_img001  dockerfile的位置
  6. 搬運映像檔:容器(要先轉成映像檔 )與映像檔都無法直接複製或搬運,必須用save 轉成tar檔後,再搬運。
    docker  save  -o  檔案名稱.tar   映像檔名稱
  7. 搬運完後再用load將映像檔轉入Docker中,好像會覆蓋同名的映像檔喔@@要注意
    docker load -i  檔案名稱.tar
  8. 改造容器,要進去容器內修改。使用 docker exec -it 容器 /bin/bash(進去已經啟動的容器)。
    或 docker run --name 容器 -it -p 8080:80 httpd /bin/bash (這時httpd不會啟動喔)
  9. docker registry 包含官方的docker hub(docker registry),也包含私人的registry(公司)。
    每個registry裡面會有不同的repository(儲藏室),例如MYSQL放了5.0、6.2、7.4不同版本。

七、學習Docker Compose

  1. 跟dockerfile差異,dockerfile無法建立網路、卷宗。
  2. compose是寫YAML,up表示建立設定,down會刪除容器、網路,但保留卷宗與映像檔。
  3. Desktop有內建compose,linux要另外安裝python3、python3-pip、docker-compose。
    sudo apt install -y python3 python3-pip
    sudo pip3 install docker-compose
  4. 新增資料夾,新增固定的名稱 docker-compose.yml,冒號後面一定要空一格,禁止用tab(用□表示,我是喜歡空兩格。接著這四大項的設定內容都要縮排,跟python一樣,都要一致)。 version:□□'3' services:□□ □□□□mysql001:
    □□□□wordpress001:
    networks:□□
    volumes:□□

八、學習Kubernetes

  1. docker compose可以建立、刪除容器,不能管理容器。
    k8s可以管理、調度容器,想要關閉只需要設定容器數量為0。
    管理員:要有kubectl
    主要節點:k8s、CNI(container Networking Interface)、etcd(用來管理容器的資料庫)
    工作節點:k8s、CNI、container engine
  2. ubuntu用minikube,參考P313步驟,到官網copy code。
    1.先安裝kubectl,2.再安裝minikube
    05/18 準備寫kubectl001,寫好了,( . kubectl001 ) 點,空一格 檔案名稱 05/25 寫minikbue,minikube
  3. 若沒有一起呵成完成第八章,就要記得啟動minikube【minikube  start】。
  4. 要寫 Service、Deployment( Pod、ReplicaSet 這兩個可以寫在deployment中)
  5. P283的網址,要先確定minikube的IP(感謝Joombuopre分享)【minikube  ip】就可以用這個IP:30080瀏覽

九、附錄

  1. 有很多安裝步驟,可以先看大致上了解一下@@








沒有留言:

張貼留言

注意:只有此網誌的成員可以留言。