Docker
????Docker 是一個開源的應(yīng)用容器引擎膛壹,基于 Go 語言 并遵從 Apache2.0 協(xié)議開源涡拘。Docker 可以讓開發(fā)者打包他們的應(yīng)用以及依賴包到一個輕量級、可移植的容器中嚼锄,然后發(fā)布到任何流行的 Linux 機器上减拭,也可以實現(xiàn)虛擬化。容器是完全使用沙箱機制区丑,相互之間不會有任何接口(類似 iPhone 的 app),更重要的是容器性能開銷極低拧粪。
打包過程
- pip freeze > requirements.txt
- 編寫dockerfile,需要注意的是這里安裝了一些c++庫文件供opencv使用,讓筆者在打包時吃了一些苦頭
# 將官方 Python 運行時用作父鏡像
FROM python:3.9-slim
# 將工作目錄設(shè)置為 當前目錄
WORKDIR .
# 將當前目錄內(nèi)容復(fù)制到容器中
ADD . .
RUN apt-get update
RUN apt install -y g++
RUN apt install -y cmake
RUN apt install -y make
RUN apt install -y wget unzip
RUN apt-get -y install build-essential libgtk2.0-dev libgtk-3-dev libavcodec-dev libavformat-dev libjpeg-dev libswscale-dev libtiff5-dev
# 安裝 requirements.txt 中指定的任何所需軟件包
RUN pip install -r requirements.txt
# 定義環(huán)境變量
#ENV NAME World
# 在容器啟動時運行 main.py
CMD ["python", "main.py"]
#CMD ["python","./apps/min.py","worker","-l","info"] ##faust程序worker啟動命令
#指令是聲明運行時容器提供服務(wù)端口,這只是一個聲明,在運行時并不會因為這個聲明應(yīng)用就會開啟這個端口的服務(wù)
EXPOSE 5005
- docker根據(jù)Dockerfile構(gòu)建鏡像
docker build -f Dockerfile -t qrdetect:1.1 .
- 根據(jù)名稱為qrdetect:1.1的鏡像運行名稱為qr的容器沧侥,暴露容器內(nèi)的端口5005為對外8081的端口
docker run --name qr -p 8081:5005 -d qrdetect:1.1
docker實用命令
由于經(jīng)驗問題可霎,我們可能會要經(jīng)常使用一些鏡像和容器命令
- 列出容器id
docker ps -a
- 列出id為xx容器的日志
+ docker logs id
- 列出鏡像id
docker image ls
- 刪除指定id鏡像
docker rmi id
- 刪除指定id容器
docker rm id
- 停止運行指定id容器
docker stop id
- 導(dǎo)出指定id鏡像
docker save -o qrdetect.tar 483128b19e21
- 加載指定id鏡像
docker load --input qrdetect2.tar
- 導(dǎo)入指定id容器
docker import qrdetect.tar qr:1.1
- 導(dǎo)出指定id容器
docker export bf2358939836 > qrdetect.tar
經(jīng)驗教訓
????最好不用wsl進行打包,問題比較多正什,還是直接linux環(huán)境打包比較好
參考資料:
https://dennislwm.netlify.app/posts/installing-minikube-on-ubuntu-with-wsl-backend/
https://zhuanlan.zhihu.com/p/272541376
https://answers.microsoft.com/zh-hans/windows/forum/all/win11%E5%A6%82%E4%BD%95%E5%85%B3%E9%97%ADhyper-v/25b2974d-80e5-44e6-9e78-6fbd8e3e519f
https://docs.docker.com/engine/install/ubuntu/
https://zhuanlan.zhihu.com/p/53707590
https://blog.csdn.net/foreverhot1019/article/details/102725793
https://blog.csdn.net/weixin_44796670/article/details/115900538