最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

淺析Docker如何創(chuàng)建自定義容器(附通用Python 3.12模板)

 更新時(shí)間:2025年11月04日 09:00:11   作者:ayaya_mana  
這篇文章主要為大家詳細(xì)介紹了Docker如何創(chuàng)建自定義容器,并附上通用Python 3.12模板,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解下

一、 準(zhǔn)備工作

在開(kāi)始我們的 Docker 之旅前,唯一需要準(zhǔn)備的“利器”就是 Docker 本身。

核心依賴:Docker Engine

這是 Docker 的核心組件,負(fù)責(zé)構(gòu)建和運(yùn)行容器。請(qǐng)根據(jù)你的操作系統(tǒng),訪問(wèn) Docker 官方文檔進(jìn)行安裝:

強(qiáng)烈推薦:Docker Compose

雖然不是強(qiáng)制性的,但 Docker Compose 是一個(gè)能極大提升我們開(kāi)發(fā)體驗(yàn)的工具。它允許我們通過(guò)一個(gè)簡(jiǎn)單的 yaml 文件來(lái)定義和配置多容器應(yīng)用,一條命令即可啟動(dòng)所有服務(wù)。通常,安裝 Docker Desktop 時(shí)會(huì)自帶 Docker Compose。

安裝完成后,打開(kāi)終端(或 PowerShell/CMD),輸入以下命令驗(yàn)證安裝是否成功:

docker --version
docker-compose --version

如果能看到版本號(hào),恭喜你,準(zhǔn)備工作已完成!

二、 核心步驟

創(chuàng)建自定義容器的核心在于編寫一個(gè)名為 Dockerfile 的文本文件。它就像是容器的“建筑設(shè)計(jì)圖”,詳細(xì)描述了容器應(yīng)該如何構(gòu)建。

步驟 1:編寫Dockerfile

讓我們先從一個(gè)最基礎(chǔ)的通用模板開(kāi)始理解它的結(jié)構(gòu)。

# 1. 指定基礎(chǔ)鏡像
# 所有構(gòu)建都從這個(gè)“地基”開(kāi)始
FROM <基礎(chǔ)鏡像名>:<標(biāo)簽>

# 2. 設(shè)置維護(hù)者信息(可選)
LABEL maintainer="your-email@example.com"

# 3. 設(shè)置工作目錄
# 之后的所有命令都會(huì)在這個(gè)目錄下執(zhí)行
WORKDIR /app

# 4. 復(fù)制文件
# 將本地的項(xiàng)目文件復(fù)制到容器的指定目錄
COPY . .

# 5. 執(zhí)行命令
# 在鏡像構(gòu)建過(guò)程中執(zhí)行任何命令,如安裝依賴
RUN <你的安裝命令>

# 6. 指定容器啟動(dòng)時(shí)執(zhí)行的命令
CMD ["<可執(zhí)行文件>", "參數(shù)1", "參數(shù)2"]

指令解析:

  • FROM: 必須是第一條指令,指定你的鏡像基于哪個(gè)鏡像構(gòu)建。例如 ubuntu:latestpython:3.12
  • WORKDIR: 相當(dāng)于 cd 命令,為后續(xù)操作設(shè)置一個(gè)工作目錄。
  • COPY: 將宿主機(jī)(你的電腦)的文件或目錄復(fù)制到鏡像中。格式為 COPY <宿主機(jī)路徑> <容器路徑>。
  • RUN: 在鏡像構(gòu)建時(shí)執(zhí)行的命令,常用于安裝軟件包。例如 RUN apt-get update && apt-get install -y git。
  • CMD: 容器啟動(dòng)后默認(rèn)執(zhí)行的命令。一個(gè) Dockerfile 中只有最后一個(gè) CMD 會(huì)生效。

步驟 2:構(gòu)建鏡像

編寫好 Dockerfile 后,在它所在的目錄下打開(kāi)終端,運(yùn)行 docker build 命令來(lái)創(chuàng)建鏡像。

docker build -t my-custom-app:v1.0 .
  • -t my-custom-app:v1.0: -t 參數(shù)用于給鏡像打上一個(gè)標(biāo)簽(tag),格式為 名稱:版本號(hào),方便管理。
  • .: 這個(gè)點(diǎn)號(hào)非常重要,它表示構(gòu)建上下文(context)的路徑,通常就是當(dāng)前目錄。Docker 會(huì)在這個(gè)目錄下尋找 Dockerfile 和相關(guān)文件。

步驟 3:運(yùn)行容器

鏡像構(gòu)建成功后,就可以用它來(lái)創(chuàng)建和運(yùn)行容器了。

docker run -d -p 8080:80 --name my-running-app my-custom-app:v1.0
  • -d: 表示“分離模式”,容器會(huì)在后臺(tái)運(yùn)行。
  • -p 8080:80: 端口映射。將宿主機(jī)的 8080 端口映射到容器的 80 端口。這樣你就可以通過(guò)訪問(wèn) localhost:8080 來(lái)訪問(wèn)容器內(nèi)的服務(wù)。
  • --name my-running-app: 給容器起一個(gè)容易記住的名字。
  • my-custom-app:v1.0: 你要使用的鏡像名稱和標(biāo)簽。

三、 與容器交互

容器運(yùn)行起來(lái)后,我們經(jīng)常需要進(jìn)入其內(nèi)部進(jìn)行調(diào)試或配置。

如何進(jìn)入容器環(huán)境

最常用、最安全的方式是使用 docker exec 命令:

docker exec -it my-running-app /bin/bash
  • exec: 在一個(gè)運(yùn)行中的容器里執(zhí)行新命令。
  • -it: 這是 -i(交互式)和 -t(分配一個(gè)偽終端)的縮寫,組合起來(lái)讓我們能像操作普通終端一樣操作容器。
  • /bin/bash: 你想在容器內(nèi)啟動(dòng)的 Shell 程序。如果基礎(chǔ)鏡像非常精簡(jiǎn),可能沒(méi)有 bash,可以嘗試 /bin/sh

執(zhí)行后,你就會(huì)看到命令行提示符變了,這表示你已經(jīng)成功進(jìn)入了容器的內(nèi)部環(huán)境。

如何配置容器

最佳實(shí)踐:配置優(yōu)先在 Dockerfile 中完成。

任何你希望在容器中永久存在的軟件、配置或環(huán)境變量,都應(yīng)該通過(guò) RUNCOPY、ENV 等指令寫入 Dockerfile。然后重新構(gòu)建鏡像,這樣才能保證環(huán)境的一致性和可復(fù)現(xiàn)性。

臨時(shí)調(diào)試:在容器內(nèi)手動(dòng)配置。

進(jìn)入容器后,你可以像在普通 Linux 環(huán)境中一樣安裝軟件、修改文件。但請(qǐng)記住,這些修改是臨時(shí)的!一旦容器被刪除,所有修改都會(huì)丟失。這種方式僅用于快速調(diào)試和驗(yàn)證。

四、 通用模板

理論說(shuō)再多,不如一個(gè)實(shí)用的模板。下面提供兩個(gè)模板,你可以直接復(fù)制使用,稍作修改即可滿足你的需求。

1. 通用自定義模板

這個(gè)模板適用于大多數(shù)基于 Debian/Ubuntu 的應(yīng)用。

Dockerfile

# 使用一個(gè)輕量級(jí)的 Debian 版本作為基礎(chǔ)
FROM debian:bullseye-slim

# 設(shè)置環(huán)境變量,避免交互式安裝
ENV DEBIAN_FRONTEND=noninteractive

# 設(shè)置工作目錄
WORKDIR /workspace

# 更新包列表并安裝基礎(chǔ)工具(根據(jù)需要增刪)
RUN apt-get update && apt-get install -y \
    curl \
    vim \
    git \
    && rm -rf /var/lib/apt/lists/*

# 復(fù)制你的項(xiàng)目代碼到工作目錄
COPY . .

# 定義容器啟動(dòng)后執(zhí)行的默認(rèn)命令
# 例如,啟動(dòng)一個(gè)簡(jiǎn)單的 Web 服務(wù)器或你的應(yīng)用
CMD ["echo", "Hello from my custom container!"]

docker-compose.yml (配套使用,強(qiáng)烈推薦)

version: '3.8'

services:
  app:
    build: . # 在當(dāng)前目錄下構(gòu)建 Dockerfile
    container_name: my-generic-app
    ports:
      - "8080:8080" # 將主機(jī)的 8080 端口映射到容器的 8080 端口
    volumes:
      - .:/workspace # 將當(dāng)前目錄掛載到容器的 /workspace,實(shí)現(xiàn)代碼實(shí)時(shí)同步
    stdin_open: true # 保持標(biāo)準(zhǔn)輸入開(kāi)放
    tty: true        # 分配一個(gè)偽終端

使用方法:將以上兩個(gè)文件放在你的項(xiàng)目根目錄,然后運(yùn)行 docker-compose up -d 即可。

2. Python 3.12 開(kāi)發(fā)環(huán)境專屬模板

這個(gè)模板專為 Python 3.12 開(kāi)發(fā)優(yōu)化,包含了依賴管理和緩存優(yōu)化等最佳實(shí)踐。

項(xiàng)目結(jié)構(gòu):

my-python-project/
├── Dockerfile
├── docker-compose.yml
├── requirements.txt
└── main.py

requirements.txt

flask==3.0.0
requests==2.31.0
# 在這里添加你需要的所有 Python 包

main.py

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello_world():
    return "<h1>Hello, Docker with Python 3.12!</h1>"

if __name__ == '__main__':
    # 監(jiān)聽(tīng)所有網(wǎng)絡(luò)接口,端口 5000
    app.run(host='0.0.0.0', port=5000)

Dockerfile

# 1. 使用官方 Python 3.12 slim 版本作為基礎(chǔ)鏡像
FROM python:3.12-slim

# 2. 設(shè)置環(huán)境變量,優(yōu)化 Python 行為
ENV PYTHONDONTWRITEBYTECODE=1  # 不生成 .pyc 文件
ENV PYTHONUNBUFFERED=1        # 確保 Python 輸出直接發(fā)送到終端

# 3. 設(shè)置工作目錄
WORKDIR /app

# 4. 【緩存優(yōu)化】先復(fù)制依賴文件并安裝依賴
# 這樣做的好處是,當(dāng)代碼變化時(shí),只要 requirements.txt 不變,
# Docker 就會(huì)使用緩存,無(wú)需重新安裝依賴,大大加快構(gòu)建速度。
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

# 5. 復(fù)制項(xiàng)目代碼
COPY . .

# 6. 暴露應(yīng)用端口(可選,但推薦)
EXPOSE 5000

# 7. 定義容器啟動(dòng)時(shí)執(zhí)行的命令
CMD ["python", "main.py"]

docker-compose.yml

version: '3.8'

services:
  python-app:
    build: .
    container_name: my-python312-app
    ports:
      - "5000:5000" # 將主機(jī)的 5000 端口映射到容器的 5000 端口
    volumes:
      - .:/app # 掛載代碼目錄,實(shí)現(xiàn)熱重載(部分框架支持)
    restart: unless-stopped # 除非手動(dòng)停止,否則容器會(huì)在退出后自動(dòng)重啟

使用方法:

  • 創(chuàng)建以上文件和目錄。
  • my-python-project 目錄下運(yùn)行 docker-compose up -d --build。
  • 打開(kāi)瀏覽器訪問(wèn) http://localhost:5000,你就能看到 “Hello, Docker with Python 3.12!” 了。

五、 保存與遷移

當(dāng)你辛辛苦苦配置好一個(gè)完美的環(huán)境后,如何將它保存并遷移到另一臺(tái)機(jī)器上呢?

方法一:推送到鏡像倉(cāng)庫(kù)(推薦)

這是最專業(yè)、最常用的方式,尤其適合團(tuán)隊(duì)協(xié)作。

登錄 Docker Hub(或其他私有倉(cāng)庫(kù)):

docker login

給鏡像打上遠(yuǎn)程倉(cāng)庫(kù)標(biāo)簽:

# 格式:docker tag <本地鏡像名> <你的DockerHub用戶名>/<鏡像名>:<標(biāo)簽>
docker tag my-custom-app:v1.0 your-dockerhub-username/my-custom-app:v1.0

推送鏡像:

docker push your-dockerhub-username/my-custom-app:v1.0

在另一臺(tái)機(jī)器上,只需 docker pull your-dockerhub-username/my-custom-app:v1.0 即可獲取該鏡像。

方法二:導(dǎo)出/導(dǎo)入鏡像文件

適用于離線環(huán)境或一次性遷移。

導(dǎo)出鏡像為 .tar 文件:

docker save -o my-custom-app.tar my-custom-app:v1.0

my-custom-app.tar 文件拷貝到目標(biāo)機(jī)器。

在目標(biāo)機(jī)器上導(dǎo)入鏡像:

docker load -i my-custom-app.tar

到此這篇關(guān)于淺析Docker如何創(chuàng)建自定義容器(附通用Python 3.12模板)的文章就介紹到這了,更多相關(guān)Docker創(chuàng)建自定義容器內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 在Docker構(gòu)建的容器中實(shí)現(xiàn)安裝ping工具

    在Docker構(gòu)建的容器中實(shí)現(xiàn)安裝ping工具

    這篇文章主要介紹了在Docker構(gòu)建的容器中實(shí)現(xiàn)安裝ping工具,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-11-11
  • prometheus監(jiān)控節(jié)點(diǎn)程序的安裝及卸載命令

    prometheus監(jiān)控節(jié)點(diǎn)程序的安裝及卸載命令

    這篇文章主要為大家介紹了prometheus監(jiān)控節(jié)點(diǎn)程序的安裝及卸載命令,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • Docker發(fā)布鏡像到DockerHub與阿里云容器

    Docker發(fā)布鏡像到DockerHub與阿里云容器

    本文主要介紹了Docker發(fā)布鏡像到DockerHub與阿里云容器,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • docker存儲(chǔ)目錄遷移示例教程

    docker存儲(chǔ)目錄遷移示例教程

    隨著docker的使用時(shí)間越來(lái)越長(zhǎng),導(dǎo)致鏡像和容器越來(lái)越多,占滿了系統(tǒng)盤空間,這時(shí),我們需要給它們搬個(gè)家了,這篇文章主要介紹了docker存儲(chǔ)目錄遷移教程,需要的朋友可以參考下
    2023-06-06
  • Docker容器監(jiān)控及日志管理實(shí)現(xiàn)過(guò)程解析

    Docker容器監(jiān)控及日志管理實(shí)現(xiàn)過(guò)程解析

    這篇文章主要介紹了Docker容器監(jiān)控及日志管理實(shí)現(xiàn)過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • 使用docker搭建嵌入式Linux開(kāi)發(fā)環(huán)境

    使用docker搭建嵌入式Linux開(kāi)發(fā)環(huán)境

    本文主要介紹了使用docker搭建嵌入式Linux開(kāi)發(fā)環(huán)境,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-08-08
  • 詳解為 Docker 設(shè)置代理

    詳解為 Docker 設(shè)置代理

    本篇文章主要介紹了為 Docker 設(shè)置代理,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-03-03
  • docker環(huán)境部署Hadoop集群教程

    docker環(huán)境部署Hadoop集群教程

    文章介紹了在Docker環(huán)境下部署Hadoop集群的步驟,包括ocker-compose.yml配置文件創(chuàng)建、Docker容器啟動(dòng)集群驗(yàn)證集群狀態(tài)數(shù)據(jù)持久化測(cè)試NamenodeDatanatannode數(shù)據(jù)持久化測(cè)試容器故障場(chǎng)景驗(yàn)證持久化效果
    2026-05-05
  • k3d入門指南之在Docker中運(yùn)行K3s的詳細(xì)教程

    k3d入門指南之在Docker中運(yùn)行K3s的詳細(xì)教程

    在本文中,我們將簡(jiǎn)單了解k3d,這是一款可讓您在安裝了Docker的任何地方運(yùn)行一次性Kubernetes集群的工具,此外在本文中我們還將探討在使用k3d中可能會(huì)出現(xiàn)的一切問(wèn)題,感興趣的朋友跟隨小編一起看看吧
    2021-05-05
  • 使用docker部署hadoop集群的詳細(xì)教程

    使用docker部署hadoop集群的詳細(xì)教程

    這篇文章主要介紹了使用docker部署hadoop集群的詳細(xì)教程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值需要的朋友可以參考下
    2020-09-09

最新評(píng)論

吐鲁番市| 浦东新区| 南漳县| 舞钢市| 弋阳县| 乾安县| 唐海县| 大关县| 望奎县| 墨玉县| 施甸县| 徐州市| 灵川县| 东丽区| 南靖县| 普安县| 景东| 房山区| 永新县| 恩平市| 宁蒗| 天津市| 天峨县| 林州市| 开鲁县| 新巴尔虎右旗| 古丈县| 乐山市| 临颍县| 金寨县| 偏关县| 尼勒克县| 荔浦县| 博爱县| 嫩江县| 元朗区| 阿拉善左旗| 托克逊县| 新巴尔虎右旗| 余江县| 聂荣县|