HOST: 192.168.16.240 Date: 2025-8-12
建立一個完整 Ubuntu 24 Docker 環境,並運行 Python Web UI + MySQL 的所有正確步驟總結:
- 建立 Dockerfile 創建一個名為 Dockerfile 的檔案,內容如下。這個檔案將會: 使用 Ubuntu 24.04 作為基礎映像。 安裝 Python、pip、MySQL、OpenSSH 等必要套件。 安全地設定 SSH 和 MySQL 的 root 密碼。 安裝 Flask 和 MySQL 連接器的 Python 套件。
[Dockerfile]
- 建立 Python Web UI 程式 在與 Dockerfile 相同的目錄下,創建一個名為 app.py 的檔案,內容如下:
[app.py]
- 建置 Docker 映像 在包含 Dockerfile 和 app.py 的目錄中,執行以下指令來建置 Docker 映像:
docker build -t nads-docker .
- 啟動 Docker 容器 建置成功後,啟動容器並將 Port 轉發到主機:
docker run -d -p 2222:22 -p 5000:5000 --name my-ubuntu-server nads-docker
- 登入容器並設定資料庫 SSH 登入:
ssh root@localhost -p 2222 password: xa......
mysql -u root -p
- 執行並測試 Web UI 執行應用程式: 在容器終端機中,執行 Python 應用程式。 python3 app.py
瀏覽器測試: 在您的本機電腦上,開啟瀏覽器並訪問 http://localhost:5000。您應該會看到成功的網頁訊息。
其他指令
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'xara5463';
FLUSH PRIVILEGES;
docker 操作 sudo docker stop my-ubuntu-server sudo docker rm my-ubuntu-server
啟動新容器 sudo docker run -d -p 2222:22 -p 5000:5000 --name my-ubuntu-server nads-docker
使用不同的容器名稱 sudo docker run -d -p 2222:22 -p 5000:5000 --name my-ubuntu-server-2 nads-docker
透過 SSH 登入您的 Docker 容器 ssh root@localhost -p 2222
檢查 Port 2222 是否被其他服務佔用 如果舊容器不存在,但錯誤仍然出現,那代表有其他應用程式佔用了 2222 Port。您可以使用 netstat 或 lsof 指令來檢查。
使用 netstat 檢查:
Bash
sudo netstat -tulpn | grep 2222 如果指令有任何輸出,就表示有程序正在使用這個 Port。
使用 lsof 檢查:
Bash
sudo lsof -i :2222
列出所有正在執行的容器: sudo docker ps
列出所有容器(包括已停止的): sudo docker ps -a 如果 docker ps 沒有顯示,它可能已經停止了。使用 -a 參數可以查看所有容器。
sudo docker stop my-ubuntu-server
sudo docker rm my-ubuntu-server
#檢查 Port 2222 是否被其他服務佔用 如果舊容器不存在,但錯誤仍然出現,那代表有其他應用程式佔用了 2222 Port。您可以使用 netstat 或 lsof 指令來檢查。
使用 netstat 檢查: sudo netstat -tulpn | grep 2222 如果指令有任何輸出,就表示有程序正在使用這個 Port。
使用 lsof 檢查: sudo lsof -i :2222 這會顯示佔用該 Port 的程式名稱和 PID (Process ID)。
- 重新啟動 Docker 容器 在確認 Port 2222 沒有被佔用後,您可以再次執行啟動指令: sudo docker run -d -p 2222:22 -p 5000:5000 --name my-ubuntu-server nads-docker 這次,Docker 應該能夠成功啟動容器,並將 Port 2222 和 5000 正確地轉發到容器內部。