加載鏡像:docker load -i ubuntu.tar
導出鏡像:docker save -o ubuntu1.tar ubuntu
運行:
docker run -it --name mu ubuntu /bin/bash
ocker run -dit --name mmus docker.1ms.run/library/ubuntu /bin/bash
進入容器:docker exec -it mmus /bin/bash
docker exec -it ubun bash
docker exec -it <container_name> /root/start_flask.sh
停止:docker stop mmus
將容器打包成一個新的鏡像資源:
docker commit mu(容器名) ubuntusss(資源名)
強制刪除:?docker rmi -f paddlex
構建鏡像:docker build -t 名稱 .
有GPU的運行:
docker run -it --gpus all nvidia/cuda:11.8.0-base-ubuntu22.04 bash
docker run -it --gpus all --name ubun nvidia/cuda:11.8.0-cudnn8-devel-ubuntu22.04 /bin/bash
?docker run -it --gpus all --network my_custom_network -p 27000:27000 --shm-size=32g --name ubuntu2 -v my_volume:/root/Code -v /home2/aitp:/root/aitp --user root ubuntu_conda tail -f /dev/null /bin/bash
docker拷貝文件:docker cp Anaconda3-2023.03-Linux-x86_64.sh ubun(容器名):/
重啟容器:docker restart?
端口映射:docker run -dit -p --name my111 ngnix
自啟動:
是的,使用 rc.local
可以在 Docker 容器啟動時自動運行 Flask 服務并激活 Anaconda 虛擬環境。具體來說,您需要在 rc.local
文件中啟動 Docker 容器后,進入該容器并執行啟動 Flask 服務的命令,同時確保激活正確的 Anaconda 虛擬環境。
下面是一個詳細的步驟來實現這一目標:
1. 在 Docker 容器中啟動 Flask 服務并激活 Anaconda 環境
首先,確保您在容器內可以正常啟動 Flask 服務并激活虛擬環境。以下是容器內的步驟:
1.1. 創建啟動腳本
你需要創建一個啟動腳本來激活 Anaconda 環境并啟動 Flask 服務。假設虛擬環境的名稱為 paddlex_env
,Flask 服務的啟動腳本是 /root/Code/PaddleX/paddlex_restful/command.py
。
-
創建啟動腳本
start_flask.sh
(可以放在容器中的某個目錄,或直接放在/root/
目錄下):bash
#!/bin/bash # 激活 Anaconda 環境 source /root/anaconda3/bin/activate paddlex_env# 啟動 Flask 服務 python /root/Code/PaddleX/paddlex_restful/command.py
-
給這個腳本賦予可執行權限:
bash
chmod +x /root/start_flask.sh
1.2. 測試容器內的腳本
確保可以在容器內運行這個腳本,激活虛擬環境并啟動 Flask 服務:
bash
docker exec -it <container_name> /root/start_flask.sh
如果一切正常,Flask 服務應當能夠成功啟動。
2. 配置 rc.local
來自動啟動容器和服務
接下來,配置 rc.local
來確保在啟動時自動啟動容器,并執行啟動腳本來啟動 Flask 服務。
2.1. 編輯 rc.local
文件
-
打開
rc.local
文件:bash
sudo nano /etc/rc.local
-
在
rc.local
文件中添加命令:- 假設容器名為?
paddlex_container
,你需要在?rc.local
?中加入以下命令:
bash
#!/bin/bash # 啟動 Docker 容器 docker start paddlex_container || docker run -d --name paddlex_container <image_name># 在容器內運行 start_flask.sh 腳本啟動 Flask 服務 docker exec -d paddlex_container /root/start_flask.shexit 0
docker start paddlex_container
:嘗試啟動現有的容器。docker run -d --name paddlex_container <image_name>
:如果容器不存在,則創建并啟動新容器。docker exec -d paddlex_container /root/start_flask.sh
:在容器中執行啟動 Flask 服務的腳本。
記得替換
<image_name>
為你的 Docker 鏡像名稱。 - 假設容器名為?
2.2. 設置 rc.local
可執行權限
確保 rc.local
文件具有執行權限:
bash
sudo chmod +x /etc/rc.local
2.3. 啟用并啟動 rc.local
服務
-
啟用
rc.local
服務(如果你的系統使用systemd
):bash
sudo systemctl daemon-reload sudo systemctl enable rc-local sudo systemctl start rc-local
-
檢查
rc-local
服務狀態:bash
sudo systemctl status rc-local
3. 測試和調試
-
重啟系統,檢查容器是否能自動啟動并運行 Flask 服務:
bash
sudo reboot
-
檢查容器狀態,確保容器啟動并正常運行 Flask 服務:
bash
docker ps
-
如果有任何問題,可以通過以下命令檢查容器日志:
bash
docker logs paddlex_container
4. 優化
-
日志記錄:為了便于調試,建議將啟動腳本的輸出記錄到日志文件中,例如:
bash
#!/bin/bash # 激活 Anaconda 環境并啟動 Flask 服務,將日志輸出到文件 source /root/anaconda3/bin/activate paddlex_env python /root/Code/PaddleX/paddlex_restful/command.py >> /root/flask_service.log 2>&1
-
容器自啟動:如果希望容器在系統重啟時自動啟動,可以在 Docker 容器運行時使用
--restart
選項,例如:bash
docker run -d --restart=unless-stopped --name paddlex_container <image_name>
總結:
- 使用?
rc.local
?可以實現 Docker 容器自啟動,并且在啟動時自動激活 Anaconda 環境和運行 Flask 服務。 - 配置?
rc.local
?啟動 Docker 容器并在容器內運行啟動腳本來啟動 Flask 服務。 - 測試和調試啟動過程,確保服務在系統重啟后能夠正確運行。
如果在配置過程中遇到任何問題,可以隨時提問!