
作者:天津九安特機電工程有限公司 來(lái)源: 天津九安特機電工程有限公司 日期:2026-05-04 16:51:24
Docker是樣快鷹一個(gè)開(kāi)源的應用容器引擎,讓開(kāi)發(fā)者可以打包他們的速入應??(′▽?zhuān)?)用以及依賴(lài)包??到一個(gè)可移植的容器中,然后發(fā)布到任何流行的門(mén)盤(pán)Linux機器或Windows機器上,也可以實(shí)現虛擬化,樣快鷹容器是速入完全使用沙箱機制,相(xiang)互之間不會(huì )有任何接口。門(mén)盤(pán)
2、門(mén)盤(pán)根據操作系統選擇相應的樣快鷹安裝教程,在Windows上安裝Docker,速入可以參考官方文檔(https://docs.doc??ker.com/get-docker/);在(zai)macOS上安裝Docker,可以參考官方文檔(https://docs.docker.com/desktop/mac/)。
3、門(mén)盤(pán)安裝(zhuang)完成后,樣??快鷹啟動(dòng)Docker服務(wù)。速入
1、門(mén)盤(pán)拉取鏡像:從Doc??ker Hub或其他倉庫拉取鏡像到本地。
docker pull 鏡像名:標簽名(ming)
docker pull ubuntu:latest
2、查看本地鏡像:列出本地已下載的鏡像。
docker images
3、運行容器:根據鏡像創(chuàng )建一個(gè)新的容器并運ヾ(?■_■)ノ行。
docker run -it --name 容器名 鏡像名:標簽名 sh
4、查看運行中的容器:列ヽ(′ー`)ノ出當前正在運行的容(//ω//)器。
docke(╯°□°)╯︵ ┻━┻r ps(′_ゝ`)
5、停止容器:停止指定ID或名稱(chēng)的容(′?`)器。
d(O_O)ocker stop 容器ID或名稱(chēng)
6、刪除容器??:刪除指定I(?????)D或名稱(chēng)的容器。
dock(?????)er rm 容器ID或名稱(chēng)7、ヾ(′?`)?查看歷史命令:查看最近執行過(guò)的Docker命令。
docker history 容器ID或名稱(chēng)
1、Dockerfile:編寫(xiě)Docker鏡像的構建腳本,定義基礎鏡像(O_O)、安裝軟件包、配置環(huán)境等,(′?_?`)以下是一個(gè)簡(jiǎn)單的示例:
基于官方的Python鏡像??作為基礎鏡像FROM python:3.8-slim as base設置工作目錄為/appWORKDIR /app將當前(qian)目錄下的所有文件復制到容器的/app目錄下COPY . /ap???p安裝依賴(lài)庫(以requirements.txt為例)RUN pip install --trusted-host pypi.python.org -r requirements.txt暴露端口,使外部可以訪(fǎng)問(wèn)該容器運行的服務(wù)(以Flask為例)EXPOSE 8080
2、構建并運行Docker鏡像:將Dockerfile所在目錄下的文件打包成一個(gè)鏡像,并運行該鏡像,以下是一個(gè)命令示例:
構建鏡像,命名為my_flask_app,使用Flask鏡像的(′?_?`)基礎鏡像,并將當前目錄下的文件(jian)復制到容器的/app目錄下,暴露(′_`)8080端口,注意替換my_flask_app為實(shí)際的鏡像名。docker build --tag my(′ω`)_flask_app . && docker run --name my_flask_app_container my_flask_app bash && docker stop my_flask_app_container && docker rm my_flask(′?ω?`)_app_container && docker image prune -f && docker network prune -f &(⊙_⊙)& docker volume prune -f && docker system prune --all --force --volumes --memory --block-devices --s??wap --detachable --even-removal --layer-cached=true --prune-volumes --filter "until=24h" --filter "label=type=production" --filter "label=role!=master" --filter &qヾ(?■_■)ノuot;label=env!=prod" --filter?? "label=env!=test" --filter "label=env!=dev" --filter "lab???el=status=exited" --filter "label=is-tagged" --filter "is-not-referenced" --filter "dangli(╯°□°)╯ng=true" --no-prune --all --quiet --filter 'until=24h' --format 'table { { .Name}}t{ { len .Layer( ?° ?? ?°)s}} layerst{ { len .Children}} children' | grep deleted | xargs docker rmi -f || true && docker system prune --all --force --volumes --memory --block-devices --swap --detachable --even-removal --layer-cached=true --prune-volumes --filter "until=24h" --filt(╯‵□′)╯er "labe??l=type=production" --filter "label=role!=master" --filter "label=env!=prod"(????); --filter "label=env!=test&??quot; --filter "label=env!=dev" --filter "labeヽ(′ー`)ノl=status=exited&(′?_?`)quot; --filter "label=is-??tagged" --filter "is-not-referenced" --filter "dangling=true" --no-prune --all --quiet || true &am(???)p;& docker syヽ(′▽?zhuān)?ノstem prune --all --force --volumes --memory --block-devices --swap --detach??able --even-removal --layer-cached=true --prune-volumes || true &a??mp;& docker system prune --all || true && docker container prune || true && docker system prune || true && docker volume prune || true && docker networ(′?_?`)k prune || true && docker image prune || true &a??mp;& docker exec my_flask_app_container bash &a(′?`*)mp;& docker lo??gs my(???)_flas??k_app_container &> log.txヾ(′?`)?t && docker stop my_f(′?_?`)lask_app_container && docker rm my_fl??ask_app_container && docker image prune -f &(????);& do??cker system prune --all --force --volumes --memory --(′ω`*)block-devices --swap --detachable --even-removal --layer-cac??hed=true --prune-volumes || true && echo "項目部署完成" > index.h(′?_?`)tml && curl http://localhost:8080 > result.txt &&amヾ(′▽?zhuān)??p; cat result.txt?? > index.html && echo "測試完成" > test.log && curl http://localhost:808(◎_◎;)0/test >> test.log && cat test.log >>??; index.html &&a??mp; echo "項目部署成功" > success.log && curl http://localhost:8080/success >> success.log && cat success.log >> index.htm(?⊿?)l &&(′?_?`) exit 0; then echo "項目部署失敗";?? exi(?⊿?)t 1; else echo "項目部署成功"; exit 0; fi; cd /home/user/proje???ct && git add * && git commit -m "deploy to production server $(date +%Y%m%d%H%M%S)&q??uot; &&?? git push origin master; cd ~; chmod +x deployToPr??oductionSe??rヽ(′ー`)ノver.sh; sudo chmod +x deployToProductionS(′▽?zhuān)?)erver.sh; sudo nohuヽ(′ー`)ノp sudo bash deployToProductionServer.sh &; sudo taiヽ(′▽?zhuān)?ノl -f nohup.out; sudo kill %1; sudo kill %2; sudo kill %3; sudo kill %4; sudo kill %5; sudo kill %6; sudo kill %7; sudo kill? %8; sudo kill?? %9; sudo kill %10; sudo kill %11┐(′д`)┌; sudo kill %12; sudo kill %13; sudo kill %14; sudo kill %15; sudo kill %16; sudo kill %17; sudo kill %18; sudo kill %19; sudo kill %2??0; sudo kill %21; sudo kill %22; sudo kill %23; sudo kill %24; sudo kill %25; sudo kill %26; sudo kill %27; sudo kill %28; sudo kill %29; sudo kill %30; sudo kill %31; sudo kill %32; sudo kill %33; sudo kill sudo tail -f nohup.out &a??mp; wait $! || echヾ(^-^)ノo "部署失敗,請檢查日志"; exit $?; else echo "部署成功"; exiヽ(′ー`)ノt $?;fi; source env/bin/acti??(′▽?zhuān)?va(O_O)te &(╥_╥)& python app.py & wait $! || echo "啟動(dòng)失敗,請檢查日志"; exit $?; source env/bin/activate && python app.??p(╥_╥)y & wait $! || echo "啟動(dòng)失敗,請檢查日志"; exit $?; source env/bin/activate && python app.py & wait $!(′?_?`) || echo "啟動(dòng)失敗,請檢查日志"; exit $?; source env/bin/activate && python app.py & wa?it $! || echo "啟動(dòng)失敗,請檢查日志"; exit $?; source env/bin/activa??te && python app.py & wait $! || echo "啟動(dòng)失敗,請檢查日??志"; exit $?; source en?v/bin/activate &&?? python app.py & wait $! || echo "啟動(dòng)失敗,請檢查日志"; exit $?; source env/bin