分享程式代碼相關筆記
目前文章總數:157 篇
最後更新:2024年 12月 07日
基本安裝指令如下:
更新apt資料:
sudo apt update
建立憑證
sudo apt-get install ca-certificates curl
安裝金鑰
sudo install -m 0755 -d /etc/apt/keyrings
以下指令包含了 5 個項目
docker-ce: | Docker CE 是 Docker 的社區版,用於構建、運行和管理容器。 |
docker-ce-cli: | Docker CE CLI 是 Docker 的命令行工具,用於與 Docker 守護進程進行交互。 |
containerd.io: | containerd.io 是一個高性能的容器運行時,用於管理容器的生命周期。 |
docker-buildx-plugin: | Docker Buildx 插件是一個 Docker 的擴展,允許您構建多平台的 Docker 鏡像。 |
docker-compose-plugin: | Docker Compose 插件是 Docker Compose 的插件,用於簡化多容器應用程序的管理和部署。 |
sudo apt-get install docker-compose
安裝完成後輸入 Docker –version 可以得到下圖:
Docker --version
安裝完成後可以運行官方標準的 Hello World 進行測試
sudo docker run hello-world
預期會出現如下:
安裝完成後可以運行官方標準的 Hello World 進行測試
檢視所有 Image :
docker images
檢視所有 Image :
docker images
移除指定 Image :
docker rmi <Image的Id 或者 Name>
釋放 Image 使用空間,刪除系統所有未使用的Image :
docker image prune
停止指定容器 :
dcoker stop <ContainerId 或 ContainerName >
刪除指定容器 :
docker rm <ContainerId 或 ContainerName>
檢視 Docker 客戶端服務狀態 :
sudo systemctl status docker
重新啟動 Docker 服務
sudo systemctl restart docker.service
在頻繁多人執行時,有可能遇到此問題,可以參考 排除方式
如果有安裝 Snap 會影響到
Status: Downloaded newer image for hello-world:latest
docker: Error response from daemon: all SubConns are in TransientFailure,
latest connection error: connection error:
desc = “transport: Error while dialing dial unix /run/containerd/containerd.sock: connect: permission denied”: unavailable.
Redis 容器如果資料要持久化,可建立一個 Volume 便於自己人識別
Volume : redis_volume_dev
sudo docker volume create redis_volume_dev
為了讓容器內的 Redis 能與外部網路連線,所以要開啟 Port:6379 彼此映射
幾個參數比較關鍵:
-d | 容器以「後台模式」啟動,在背景運行容器。 |
–name redis_dev | 容器指定的名稱 |
-p 6379:6379 | 外部系統通過主機的端口 6379 訪問 Redis 服務 |
-v redis_volume_dev:/data | 容器內的 data 資料夾對應到宿主機的 redis_volume_dev 資料夾。 |
redis:latest | 取得 Redis 最新版本的映像。 |
docker run -d --name redis_dev -p 6379:6379 --restart=always -v redis_volume_dev:/data redis:latest
啟動後,還需以下指令,讓容器內的 Redis 可以被客戶端訪問
-it : 就是交互式操作(i) 與 分配一個終端(t)
docker exec -it redis redis-cli
使用自己熟悉的 Redis 工具,或者撰寫程式連到Redis Server
如下圖,並且有存去一些 Key 確保能正常存取 Redis
RabbitMQ 容器如果資料要持久化,可建立一個 Volume 便於自己人識別
Volume : rabbitmq_volume_dev
sudo docker volume create rabbitmq_volume_dev
為了讓容器內的 RabbitMQ 能與外部網路連線,所以要開啟 Port:15672 彼此映射
幾個參數比較關鍵:
-d | 容器以「後台模式」啟動,在背景運行容器。 |
–name rabbitmq_dev | 容器指定的名稱 |
-p 15672:15672 | 外部系統通過主機的端口 15672 訪問 RabbitMQ 服務 |
-v rabbitmq_volume_dev:/var/lib/rabbitmq | 容器內的 /var/lib/rabbitmq 資料夾對應到宿主機的 rabbitmq_volume_dev 資料夾。 |
rabbitmq:latest | 取得 rabbitmq 最新版本的映像。 |
docker run -d --name rabbitmq_dev --restart=always -p 5672:5672 -p 15672:15672 -v rabbitmq_volume_dev:/var/lib/rabbitmq rabbitmq:latest
RabbitMQ 安裝完成後,Web Manage UI 預設是關閉的,要自己啟動
有了 UI 操作介面,可以有效使開發者們管理 RabbitMQ ,而不用頻繁輸入指令
docker exec rabbitmq_dev rabbitmq-plugins enable rabbitmq_management
在實務中 RabbitMQ 是有可能遇到故障異常,因此列出檢查服務狀態的參數
可以在 Ubuntu Shell 中輸入以下指令顯示 Status:
docker exec -it <container_id> rabbitmqctl status
Runtime:提供了 RabbitMQ 的運行時信息,包括操作系統、進程 ID、RabbitMQ 版本、節點名稱等。 |
Plugins:列出了已啟用的插件。 |
Data directory:提供了 RabbitMQ 數據存儲的目錄信息。 |
Config files:列出了 RabbitMQ 的配置文件。 |
Log file(s): 指示 RabbitMQ 的日誌文件位置。 |
Alarms: 顯示任何報警信息,這裡顯示為 “(none)”,表示沒有報警。 |
Memory: 顯示了 RabbitMQ 使用的記憶體情況,包括總內存使用量和各個部分的詳細信息。 |
File Descriptors: 顯示了文件描述符的使用情況,包括總數和限制。 |
Free Disk Space: 顯示了磁碟空間的情況,包括剩餘空間和低剩餘空間的警告閾值。 |
Totals: 顯示了連接數、隊列數和虛擬主機數量的總計。 |
Listeners: 顯示了 RabbitMQ 監聽的端口和協議。 |
可以從 Web 登入,進行基本配置
輸入遠端機器網址列 假設放在 192.168.100.1
https://192.168.100.1:15672
建立一個 admin 帳號
最終記得將預設的 guest 移除,即完成
以一個預設的Asp.net Core WEB 專案為例
對專案 -> 滑鼠右鍵 -> 啟用Docker
本範例是 Ubuntu 因此選 Linux
產生的 DockerFile 如下:
連到遠端的Ubuntu Server 將版控的代碼拉取
※這是 WinSCP 瀏覽資料夾工具,可以看到代碼已全拉取:
接著對該資料夾下的 DockerFile 產生 Image
docker build --no-cache -t myimage .
對應參數:
| build:進行 Image 的建構 | | -t myimage:產生的 Image 名稱 | | –no-cache :不進行緩存 | | . :當前目錄下的 DockerFile 檔案 |
網站也先準備好 Volume Config的查詢會較為便利
Volume : myweb_dev
sudo docker volume create myweb_dev
為了讓容器內的 網站 能與外部網路連線,所以要開啟映射 Https 與 Http
幾個參數比較關鍵:
-d | 容器以「後台模式」啟動,在背景運行容器。 |
–name testweb | 容器指定的名稱 |
-p 8065:8080 | 容器內 Http 對應到宿主機的 8065 |
-p 8066:8081 | 容器內 Https 對應到宿主機的 8066 |
-v myweb_dev:/app | 容器內的 /app 資料夾對應到宿主機的 myweb_dev 資料夾。 |
myimage | 自定義的 Image |
docker run --name testweb -d -p 8065:8080 -p 8066:8081 -v myweb_dev:/app myimage
輸入遠端機器網址列 假設放在 192.168.100.1
http://192.168.100.1:8065