国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

小白入門(mén):如何在docker中運(yùn)行python程序

這篇具有很好參考價(jià)值的文章主要介紹了小白入門(mén):如何在docker中運(yùn)行python程序。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

目錄

摘要:

1,編寫(xiě)Dockerfile制作鏡像

?2,使用鏡像創(chuàng)建容器

3,交互式運(yùn)行容器/鏡像修改

3.1 編輯

3.2保存

4,將鏡像上傳至DockerHub

?5,從DockerHub拉取鏡像


摘要:

? ? ? ?本文僅涉及docker的基礎(chǔ)使用。主要介紹如何在docker容器內(nèi)運(yùn)行python程序,以及一些相關(guān)問(wèn)題及解決方法,例如:如何讓容器啟動(dòng)后自動(dòng)運(yùn)行程序?如何二次修改鏡像,如何進(jìn)行文件掛載?如何將鏡像上傳至dockerhub?......? ? ? ??

? ? ? 本文涉及到與DockerHub/DockerDesktop相關(guān)的一些操作需要搭梯子。。。

1,編寫(xiě)Dockerfile制作鏡像

? ? ? ?為了在docker容器中運(yùn)行python程序,首先要編寫(xiě)Dockerfile.txt文件,并以此來(lái)制作鏡像。一般的我們將Dockerfile文件放置在python項(xiàng)目根目錄下,如下圖所示:

docker python,Docker技術(shù),docker,python

一個(gè)簡(jiǎn)單的Dockerfile文件內(nèi)容是這樣的:

FROM python:3.7-slim

WORKDIR /work

COPY . /work

RUN pip install --no-cache-dir -r requirements.txt

# 如果不能自動(dòng)運(yùn)行請(qǐng)嘗試加上:RUN chmod +x main.py

CMD ["python", "main.py"]

第一行表示使用python:3.7-slim為基礎(chǔ)鏡像(可以在dockerhub中找到,dockerhub是一個(gè)存放鏡像的云倉(cāng)庫(kù),類(lèi)似于github)。

第二行表示在docker容器根目錄下創(chuàng)建一個(gè)名為work的工作目錄。

第三行表示將本機(jī)當(dāng)前目錄下的內(nèi)容復(fù)制到容器工作目錄。

第四行使得創(chuàng)建容器時(shí)自動(dòng)安裝項(xiàng)目依賴,本例中我們安裝numpy。

? ? ? ? ? ? ? ? ? ? ? ? ? ? ?docker python,Docker技術(shù),docker,python

第五行使得容器啟動(dòng)后自動(dòng)運(yùn)行main.py。另外如果加了這句指令仍不能自動(dòng)運(yùn)行,請(qǐng)嘗試加上我注釋的代碼RUN chmod +x main.py授予權(quán)限。

? ? ? ?編寫(xiě)好Dockerfile后開(kāi)始制作鏡像。首先運(yùn)行DockerDesktop程序(請(qǐng)事先安裝),之后在終端打開(kāi)項(xiàng)目文件。

docker python,Docker技術(shù),docker,python

?可以看到python項(xiàng)目?jī)?nèi)容以及我們編寫(xiě)的Dockerfile正在此目錄內(nèi)。使用如下指令構(gòu)建鏡像:

docker build -t <鏡像名稱(chēng)> . -f Dockerfile.txt

docker python,Docker技術(shù),docker,python

可以使用docker images指令查看存在鏡像的信息,可以看到我們新創(chuàng)建的鏡像

docker python,Docker技術(shù),docker,python

?2,使用鏡像創(chuàng)建容器

? ? ? ? 如果需要進(jìn)行數(shù)據(jù)卷掛載,需在這里進(jìn)行。通俗的講,數(shù)據(jù)卷掛載就是將容器中的一個(gè)文件(夾)和本機(jī)中的一個(gè)文件(夾)關(guān)聯(lián)起來(lái)。例如容器中有一個(gè)文件夾A,本機(jī)中有一個(gè)文件夾B。那么B中內(nèi)容同步在A中,容器內(nèi)可見(jiàn);容器中對(duì)A文件夾的內(nèi)容進(jìn)行修改也會(huì)同步在B文件夾,在本機(jī)可見(jiàn)。我們以掛載兩個(gè)文件夾(input,output)分別用作程序輸入輸出為例。

使用如下指令構(gòu)建容器(方括號(hào)指令可選)

docker run [--rm] [--name <容器名稱(chēng)>] [-v <本機(jī)文件夾路徑>:<容器文件夾路徑>] <鏡像名稱(chēng)>

--rm 使得容器為一次性容器,程序運(yùn)行結(jié)束后容器退出并銷(xiāo)毀。如果需要容器后仍存在,請(qǐng)刪除。

--name <容器名稱(chēng)> 是給容器命名,不添加系統(tǒng)會(huì)自動(dòng)生成名稱(chēng)。

-v 進(jìn)行數(shù)據(jù)卷掛載

當(dāng)然還有很多其他的參數(shù)可選,如有需要請(qǐng)查閱官方文檔。

容器啟動(dòng)后自動(dòng)運(yùn)行main.py,相應(yīng)的本機(jī)掛載的文件夾中出現(xiàn)輸出結(jié)果。

#main.py內(nèi)容
import os
import numpy as np
print('hello docker')
print(np.zeros((3,3)))
files=os.listdir('/input')
with open('/output/temp.txt','w',encoding='utf-8') as f:
    for i in files:
        f.writelines([i+'\n'])

docker python,Docker技術(shù),docker,python

docker python,Docker技術(shù),docker,python

? ? ? ?可以看到容器啟動(dòng)后確實(shí)自動(dòng)運(yùn)行了main.py腳本。由于使用了--rm,所以程序運(yùn)行結(jié)束后容器退出并銷(xiāo)毀!

3,交互式運(yùn)行容器/鏡像修改

? ? ? ?如果需要修改一個(gè)已有鏡像,需要用該鏡像創(chuàng)建一個(gè)容器并在該容器中進(jìn)行修改,最后將該容器保存為一個(gè)新鏡像。

3.1 編輯

用如下指令交互式啟動(dòng)容器(啟動(dòng)容器運(yùn)行bash終端):

docker run -it <鏡像名稱(chēng)> /bin/bash

docker python,Docker技術(shù),docker,python

注意,這里一定不能使用--rm,因?yàn)槲覀冃枰褂迷撊萜鲃?chuàng)建新鏡像。

? ? ? ?啟動(dòng)容器并進(jìn)入bash終端后的過(guò)程就像是操作Linux命令行(docker容器就像是丐版Linux)。初始位于我們創(chuàng)建的工作目錄下。

可以退到根目錄看到整個(gè)文件系統(tǒng)全貌,其中就有我們創(chuàng)建的work工作目錄。

docker python,Docker技術(shù),docker,python

如果需要查看/修改某一文件我們需要借助nano工具,用如下指令下載(也可使用apt-get):

apt update       #更新軟件源
apt install nano #安裝

例如我想要查看main.py,那么進(jìn)入所在目錄后使用nano main.py即可。

docker python,Docker技術(shù),docker,python

在如上界面可進(jìn)行文件內(nèi)容的編輯。

在容器中可以使用Linux指令進(jìn)行各種操作,包括下載其他三方包,編輯文件(如上)等。

? ? ? ?哦對(duì)了,有時(shí)可能需要上傳新文件(夾)至容器,這需要在容器外操作。先使用exit退出容器,然后使用如下指令復(fù)制文件(夾)到容器內(nèi)。

docker cp <需上傳的文件本機(jī)路徑> <容器ID/容器名>:<文件上傳位置(容器中路徑)>

docker python,Docker技術(shù),docker,python

? ? ? ?哦,補(bǔ)充一下,這里的路徑格式和前面的不太一樣,前面是Linux格式的,無(wú)所謂啦,直接復(fù)制文件路徑粘貼即可。我之前好像是用Windows格式遇到過(guò)錯(cuò)才改為L(zhǎng)inux格式,不過(guò)這次試又好了。。。

? ? ? ?其中容器ID或容器名可通過(guò)docker ps -a(查看所有容器)查看,或借助DockerDesktop提供的圖形界面。上圖中的docker start gracious_antonelli重新啟動(dòng)了容器,gracious_antonelli是容器名,docker exec -it?gracious_antonelli交互式進(jìn)入容器。

3.2保存

在容器中修改好鏡像后使用exit退出容器,使用如下指令將該容器保存為一個(gè)新鏡像:

docker commit <容器名> <新鏡像名>

? ? ? ?使用新鏡像啟動(dòng)容器發(fā)現(xiàn)程序不能自動(dòng)運(yùn)行了!這是因?yàn)榍懊娼换ナ絾?dòng)容器時(shí)設(shè)置成了容器啟動(dòng)后運(yùn)行bash終端。我是這樣解決的:以該鏡像為基礎(chǔ)鏡像創(chuàng)建新鏡像(編寫(xiě)新dockerfile并創(chuàng)建鏡像)。

FROM docker_test
CMD ["python", "main.py"]
 docker build -t <新鏡像名> . -f <Dockerfile.txt本機(jī)地址>

4,將鏡像上傳至DockerHub

首先要在DockerHub創(chuàng)建一個(gè)倉(cāng)庫(kù):

docker python,Docker技術(shù),docker,python

?docker python,Docker技術(shù),docker,python

?docker python,Docker技術(shù),docker,python

之后使用如下指令上傳鏡像,請(qǐng)確保你的DockerDesktop處于登錄狀態(tài):

docker tag <待上傳鏡像名> <DockerHub倉(cāng)庫(kù)名>:<tag版本名>
docker push <DockerHub倉(cāng)庫(kù)名>:<tag版本名>

docker python,Docker技術(shù),docker,python

docker python,Docker技術(shù),docker,python

?5,從DockerHub拉取鏡像

?使用如下指令拉取鏡像:

docker pull <DockerHub倉(cāng)庫(kù)名>:<tag版本名>

docker python,Docker技術(shù),docker,python

docker python,Docker技術(shù),docker,python

可以按此方法拉取DockerHub上公開(kāi)的其他鏡像進(jìn)行使用。

? ? ? ?Docker功能非常豐富,還有很多高級(jí)用法,本文只介紹了最最最基礎(chǔ)的一部分,更深入的學(xué)習(xí)請(qǐng)參考官方文檔。

最后啰嗦一嘴,小心你的C盤(pán),哈哈哈。。。

?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-715325.html

到了這里,關(guān)于小白入門(mén):如何在docker中運(yùn)行python程序的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 《Docker快速入門(mén)(基礎(chǔ)篇)》在Docker中運(yùn)行Nginx

    《Docker快速入門(mén)(基礎(chǔ)篇)》在Docker中運(yùn)行Nginx

    前面5篇文章,對(duì)Docker的基礎(chǔ)知識(shí)做了較充分介紹,這里對(duì)基礎(chǔ)篇做收尾,本篇介紹Nginx。 此時(shí),訪問(wèn)http://localhost:8888,發(fā)現(xiàn)訪問(wèn)失敗。 失敗原因: 容器啟動(dòng)失敗,數(shù)據(jù)卷中少了nginx.conf配置文件。 解決辦法: 重新創(chuàng)建一個(gè)Nginx容器,使用9000端口,容器命名為nginx1 將nginx1里面

    2024年02月09日
    瀏覽(19)
  • Docker入門(mén)之運(yùn)行Nginx案例

    如果你直接安裝會(huì)比較慢, 建議參照附錄內(nèi)容配置鏡像之后再執(zhí)行 命令解釋 docker run 啟動(dòng)一個(gè)容器 -d 把容器鏡像中需要執(zhí)行的命令以daemon(守護(hù)進(jìn)程)的方式運(yùn)行 nginx 應(yīng)用容器鏡像的名稱(chēng),通常表示該鏡像為某一個(gè)軟件 latest 表示上述容器鏡像的版本,表示最新版本,用戶可

    2024年02月14日
    瀏覽(17)
  • 【工具分享】如何在 PyCharm 中,運(yùn)行Python 程序的時(shí)候,查看運(yùn)行所需的時(shí)間 ?| 區(qū)塊鏈 面試題:區(qū)塊鏈技術(shù)中,鏈上數(shù)據(jù)存儲(chǔ)有哪些方案?

    【工具分享】如何在 PyCharm 中,運(yùn)行Python 程序的時(shí)候,查看運(yùn)行所需的時(shí)間 ?| 區(qū)塊鏈 面試題:區(qū)塊鏈技術(shù)中,鏈上數(shù)據(jù)存儲(chǔ)有哪些方案?

    ? “痛苦和恐懼不是死亡,還有挽回的余地?!?? ? ??作者主頁(yè): 追光者♂?? ???????? ??個(gè)人簡(jiǎn)介: ? ??[1] 計(jì)算機(jī)專(zhuān)業(yè)碩士研究生?? ? ??[2] 2023年城市之星領(lǐng)跑者TOP1(哈爾濱)?? ? ??[3] 2022年度博客之星人工智能領(lǐng)域TOP4?? ? ??[4] 阿里云社區(qū)特邀專(zhuān)家博主?? ?

    2024年02月08日
    瀏覽(19)
  • 在Docker中運(yùn)行Jenkins容器:從入門(mén)到實(shí)踐

    Jenkins作為一個(gè)流行的持續(xù)集成和持續(xù)交付(CI/CD)工具,其強(qiáng)大的功能和廣泛的插件支持使其成為自動(dòng)化軟件開(kāi)發(fā)流程的首選。結(jié)合Docker容器化技術(shù),可以輕松地在任何支持Docker的平臺(tái)上部署和運(yùn)行Jenkins,實(shí)現(xiàn)環(huán)境一致性、快速部署和易于管理的CI/CD環(huán)境。本文將詳細(xì)介紹如何

    2024年04月29日
    瀏覽(23)
  • docker(四)運(yùn)行java程序

    docker(四)運(yùn)行java程序

    1、準(zhǔn)備一個(gè)簡(jiǎn)單的java web程序,打成jar包之后上傳到服務(wù)器上。 2、創(chuàng)建Dockerfile文件 以上命令涉及到宿主機(jī)的目錄或者文件是相對(duì)dockerfile文件相對(duì)路徑。 3、生成鏡像 將jar包和Dockerfile文件上傳到宿主機(jī)上,如下圖: 執(zhí)行以下命令,生成鏡像。 其中demo-test代碼鏡像名稱(chēng),.代

    2024年02月02日
    瀏覽(13)
  • 輕松上手Docker:學(xué)習(xí)如何創(chuàng)建和運(yùn)行自己的Docker容器

    輕松上手Docker:學(xué)習(xí)如何創(chuàng)建和運(yùn)行自己的Docker容器

    容器化技術(shù),它是一種虛擬化技術(shù),用于在計(jì)算機(jī)系統(tǒng)中隔離和運(yùn)行應(yīng)用程序。容器將應(yīng)用程序及其所有依賴項(xiàng)打包到一個(gè)獨(dú)立的、可移植的環(huán)境中,使其能夠在不同的計(jì)算機(jī)或操作系統(tǒng)上運(yùn)行。 容器的特點(diǎn) :隔離性、輕量級(jí)、可移植性、彈性伸縮、生態(tài)系統(tǒng)。 目前最流行

    2024年02月04日
    瀏覽(24)
  • 【Docker】Linux中Docker技術(shù)入門(mén)與實(shí)戰(zhàn)及實(shí)用的常規(guī)命令

    【Docker】Linux中Docker技術(shù)入門(mén)與實(shí)戰(zhàn)及實(shí)用的常規(guī)命令

    目錄 一、引言 1. 說(shuō)明: 2. Linux介紹 3. Docker簡(jiǎn)介 二、Docker三要素 1. 鏡像(Image) 2.?容器(Container) 3.?倉(cāng)庫(kù)(Repository) 三、實(shí)現(xiàn)案例 1. 創(chuàng)建 2. 設(shè)置鏡像 3. 開(kāi)啟設(shè)置 4. Docker安裝 5. Docker使用及命令 每篇一獲 Linux 是開(kāi)源的,因此是免費(fèi)的。 Web 主機(jī)僅需要支付技術(shù)支持即可安

    2024年02月01日
    瀏覽(18)
  • 入門(mén)Docker1: 容器技術(shù)的基礎(chǔ)

    入門(mén)Docker1: 容器技術(shù)的基礎(chǔ)

    目錄 服務(wù)器選型 虛擬機(jī) 基于主機(jī)(物理機(jī)或虛機(jī))的多服務(wù)實(shí)例 基于容器的服務(wù)實(shí)例 Docker Docker三要素 Docker安裝 Docker基本使用 基本操作 倉(cāng)庫(kù)+鏡像 容器 在選擇服務(wù)器操作系統(tǒng)時(shí), Windows 附帶了許多您需要付費(fèi)的功能。 Linux 是開(kāi)放源代碼,可讓用戶免費(fèi)使用。 對(duì)比 Linux 是開(kāi)

    2024年01月16日
    瀏覽(37)
  • Docker入門(mén)指南: 創(chuàng)新的容器化技術(shù)

    Docker,一種創(chuàng)新的容器化技術(shù),其主要目標(biāo)是實(shí)現(xiàn)\\\"一次開(kāi)發(fā),到處運(yùn)行\(zhòng)\\"。通過(guò)使用Docker,開(kāi)發(fā)者可以在標(biāo)準(zhǔn)化的環(huán)境中進(jìn)行工作,確保應(yīng)用運(yùn)行的一致性。 Docker是一個(gè)能夠把開(kāi)發(fā)的應(yīng)用程序與它們所需要的環(huán)境進(jìn)行打包,形成一個(gè)獨(dú)立的、可移植的容器(Container)。然后,開(kāi)

    2024年03月11日
    瀏覽(25)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包