首頁

目前文章總數:157 篇

  

最後更新:2024年 12月 07日

0003. Docker 對已建立的 Container 內容進行編輯的 3 種方法

日期:2024年 05月 19日

標籤: Docker Container Vim Ubuntu Linux

摘要:Docker


應用所需:1. Ubuntu
     2. 已安裝 Docker 並啟動了 RabbitMQ 容器
解決問題:容器化運行後,如何編輯容器內的設定檔案,以 RabbitMQ 舉例,提供 3 種常用作法
基本介紹:本篇分為 4 部分。
第一部分:RabbitMQ 容器為例
第二部分:複製出容器內的設定檔案
第三部分:重建並擴增容器的 Volumn
第四部分:容器內新增 Pluging 進行編輯檔案






第一部分:RabbitMQ 容器為例

Step 1:參考上篇設置

假設參考了 0001. Ubuntu 上安裝 Docker 與各個容器、Asp.net Core網站
建立了 RabbitMq 容器 (※同下指令)

sudo docker volume create redis_volume_dev
docker run -d --name redis_dev -p 6379:6379 --restart=always -v redis_volume_dev:/data redis:latest


Step 2:介面化啟用 - 1

預設的RabbitMQ 介面 未啟用 統計圖表
如下圖:

Step 3:介面化啟用 - 2

可以輸入以下指令進入 Container 容器中

docker exec -it 您的容器名稱 bash


進入指定位置

cd /etc/rabbitmq/conf.d/



Step 4:介面化啟用 - 完成

輸入以下指令啟用介面化

echo management_agent.disable_metrics_collector = false > management_agent.disable_metrics_collector.conf



Step 5:介面化啟用 - 畫面

成功啟用 - 可以看到類似如下的圖表(要先發送資料)



第二部分:複製出容器內的設定檔案

Step 1:目的

我們目標是將 Rabbitmq 介面化關閉,在 第一部分 Step 4. 中,模擬編輯容器內的設定。
同以下語法:

echo management_agent.disable_metrics_collector = true > management_agent.disable_metrics_collector.con


Step 2:建立一個資料夾

首先在 Container 的宿主機上建立一個資料夾

Step 3:登入宿主機

移動到新建的資料夾下

cd \louistemp



Step 4:將容器內的資料複製出來

輸入以下指令將檔案複製出來

docker cp 您的容器名稱:/etc/rabbitmq/conf.d/management_agent.disable_metrics_collector.conf  /louistemp 


將檔案 management_agent.disable_metrics_collector.conf 複製到宿主機的 louistemp 資料夾中


※產生以下檔案

Step 5:編輯檔案

將 false 改為 true 並且保存

Step 6:覆蓋回容器

輸入以下指令,將檔案從宿主機覆蓋容器中:

docker cp /louistemp/management_agent.disable_metrics_collector.conf rabbitmq_qat:/etc/rabbitmq/conf.d/management_agent.disable_metrics_collector.conf  



Step 7:重啟容器

輸入以下指令重新啟動容器:

docker restart 您的容器名稱


Step 8:驗證結果

可以確認已經關閉介面化



第三部分:重建並擴增容器的 Volumn

Step 1:目的

我們目標是將 Rabbitmq 介面化關閉,在 第一部分 Step 4. 中,模擬編輯容器內的設定。
同以下語法:

echo management_agent.disable_metrics_collector = true > management_agent.disable_metrics_collector.con


Step 2:刪除舊有的容器

強制將舊的容器移除

docker container rm -f 您的容器名稱



Step 3:重新建立新的容器 - 設置 Volumn

保留舊的 Volumn 資料,並且這次將 conf.d 資料夾下的目錄作為 Volumn ,輸入以下:

sudo docker volume create rabbitmq_config_qat


Step 4:重新建立新的容器 - 新建容器

保留舊的 Volumn 資料,並且這次將 conf.d 資料夾下的目錄作為 Volumn ,輸入以下:

docker run -d --name rabbitmq_qat --restart=always -p 5672:5672 -p 15672:15672 -v rabbitmq_volume_qat:/var/lib/rabbitmq -v rabbitmq_config_qat:/etc/rabbitmq/conf.d/ rabbitmq:latest



Step 5:重新建立新的容器 - 編輯 Volumn 內的資料 - 查找

可以透過工具或 Docker Compose 指令查詢出在 Ubuntu 資料夾上 Volumn 映射位置

Step 6:重新建立新的容器 - 編輯 Volumn 內的資料 - 目錄

透過 WinScp 或指令到目錄下,可以發現已經映射到 conf.d 資料夾

/var/lib/docker/volumes/rabbitmq_config_qat/_data



Step 7:重新建立新的容器 - 編輯 Volumn 內的資料 - 編輯

因為重建容器的關係,會沒有檔案,可以手動新建文檔,把設定值貼上
※此方法好處是未來隨時可以直接更改,不用進入容器內

Step 8:驗證結果

可以確認已經關閉介面化



第四部分:容器內新增 Pluging 進行編輯檔案

Step 1:目的

我們目標是將 Rabbitmq 介面化關閉,在 第一部分 Step 4. 中,模擬編輯容器內的設定。
同以下語法:

echo management_agent.disable_metrics_collector = true > management_agent.disable_metrics_collector.con


Step 2:進入容器內

可以輸入以下指令進入 Container 容器中

docker exec -it 您的容器名稱 bash



Step 3:安裝 Pluging - Vim - 1

輸入以下指令先對此容器進行軟體包更新

apt-get update



Step 4:安裝 Pluging - Vim - 2

再接著安裝 Vim

apt-get install vim-tiny



Step 5:進入設定目錄

進入指定位置

cd /etc/rabbitmq/conf.d/


Step 6:Vim 編輯檔案

已經安裝完 Vim 後,就可以對容器內進行 Vim 的編輯,輸入以下

vi management_agent.disable_metrics_collector.conf



Step 7:編輯設定檔案

將 Flase 設定為 True 達成關閉介面的目的
最後 :wq! 保存離開

Step 8:驗證結果

可以確認已經關閉介面化