將 IronPDF 加入現有的 Docker 容器
IronPDF for .NET Standard 現在完全支持 Docker,包括用於 Linux 和 Windows 的 Azure Docker 容器。
您想將IronPDF部署為單獨的Docker容器嗎? 進一步了解IronPDF 引擎教程指南.





為什麼在 Azure 上使用 Docker?
除了卓越的企業擴展性外,部署在 Azure 上的 Docker 容器比常規 WebApps 擁有更多的權限。
這允許渲染SVG字體,因為系統可以使用GDI+圖形。
IronPDF 與 Linux 入門
如果您對 Docker 與 .NET 不熟悉,我們推薦這篇出色的文章設置 Docker 調試和與 Visual Studio 專案的整合.
我們也強烈推薦您閱讀我們的IronPDF Linux 安裝和相容性指南
推薦的 Linux Docker 發行版
我們推薦以下最新的 64 位元 Linux 操作系統,以便於配置 IronPDF。
Ubuntu 22
Ubuntu 20
Ubuntu 18
Debian 11
Debian 10[目前的 Microsoft Azure 預設 Linux 作業系統分發版本]_
- CentOS 8
亞馬遜 AWS Linux 2閱讀 IronPDF AWS Lambda 安裝指南
我們推薦使用 Microsoft 的適用於 .NET 的官方 Docker 映像 . 其他 Linux 發行版部分支持,但可能需要使用 apt-get 手動配置。 請查看我們的 "Linux 手動設置"指南"
此文件中包含適用於 Ubuntu 和 Debian 的工作 Docker 文件:
IronPDF Linux Docker 安裝基本要素
使用針對 Linux 優化的 NuGet 套件
我们建议使用IronPdf.LinuxNuGet 套件而不是常規IronPDF節省磁碟空間並避免啟動 Docker 實例時下載資產的套件。 不用擔心,無論是在Windows或macOS上開發,它仍然有效 - 它只是針對Linux優化。
Install-Package IronPdf.Linux
另一個解決方案是簡單地添加IronPdf.Native.Chrome.Linux在一般情況之上IronPDFNuGet 套件。
Install-Package IronPdf.Native.Chrome.Linux
避免自動安裝依賴性
許多用戶報告,在將 LinuxAndDockerDependenciesAutoConfig
設置為 false 時,Linux 和 Docker 的效果會更好。 這是因為先決條件已經由 apt-get 風格的包管理器在您的 Docker 文件中安裝好了。
IronPdf.Installation.LinuxAndDockerDependenciesAutoConfig = false;
禁用 GPU 加速
Linux Docker 容器通常無法訪問 GPU。 GPU 加速預設為停用。 如果您已啟用 ChromeGpuModes.Enabled,我們強烈建議您在 Docker 部署中停用它:
IronPdf.Installation.ChromeGpuMode=IronPdf.Engines.Chrome.ChromeGpuModes.Disabled;
"提前" 初始化
您可以选择调用 IronPdf.Installation.Initialize
()` 方法以手動啟動 IronPDF。 首次使用 IronPDF 的 Docker 實例可能需要一些時間來下載先決條件。 我們可以在創建實例時調用此代碼以避免這種情況:
IronPdf.Installation.Initialize();
Ubuntu Linux DockerFiles
Ubuntu Linux DockerFiles


Ubuntu 22 與 .NET 8
# base image (Ubuntu 22) | |
FROM mcr.microsoft.com/dotnet/runtime:8.0-jammy | |
USER root | |
WORKDIR /app | |
# install necessary packages | |
RUN apt update \ | |
&& apt install -y sudo libxkbcommon-x11-0 libc6 libc6-dev libgtk2.0-0 libnss3 libatk-bridge2.0-0 libx11-xcb1 libxcb-dri3-0 libdrm-common libgbm1 libasound2 libxrender1 libfontconfig1 libxshmfence1 libgdiplus libva-dev | |
# restore NuGet packages | |
ARG BUILD_CONFIGURATION=Release | |
WORKDIR /src | |
COPY ["Example/Example.csproj", "Example/"] | |
RUN dotnet restore "./Example/./Example.csproj" | |
# build project | |
COPY . . | |
WORKDIR "/src/Example" | |
RUN dotnet build "./Example.csproj" -c $BUILD_CONFIGURATION -o /app/build | |
# publish project | |
RUN dotnet publish "./Example.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false | |
WORKDIR /app/publish | |
# run app | |
ENTRYPOINT ["dotnet", "Example.dll"] |
Ubuntu 22 搭配 .NET 7
# base image (Ubuntu 22) | |
FROM mcr.microsoft.com/dotnet/sdk:7.0-jammy | |
WORKDIR /src | |
# install necessary packages | |
RUN apt update \ | |
&& apt install -y sudo libc6 libc6-dev libgtk2.0-0 libnss3 libatk-bridge2.0-0 libx11-xcb1 libxcb-dri3-0 libdrm-common libgbm1 libasound2 libxrender1 libfontconfig1 libxshmfence1 libxkbcommon-dev libgdiplus | |
# restore NuGet packages | |
COPY ["Example/Example.csproj", "Example/"] | |
RUN dotnet restore "Example/Example.csproj" | |
# build project | |
COPY . . | |
WORKDIR "/src/Example" | |
RUN dotnet build "Example.csproj" -c Release -o /app/build | |
# publish project | |
RUN dotnet publish "Example.csproj" -c Release -o /app/publish | |
WORKDIR /app/publish | |
# update permissions | |
RUN chmod 775 /app/publish/runtimes/linux-x64/native/IronCefSubprocess | |
# run app | |
ENTRYPOINT ["dotnet", "Example.dll"] |
Ubuntu 20 與 .NET 6
# base image (Ubuntu 20) | |
FROM mcr.microsoft.com/dotnet/sdk:6.0-focal | |
WORKDIR /src | |
# install necessary packages | |
RUN apt update \ | |
&& apt install -y libc6 libc6-dev libgtk2.0-0 libnss3 libatk-bridge2.0-0 libx11-xcb1 libxcb-dri3-0 libdrm-common libgbm1 libasound2 libappindicator3-1 libxrender1 libfontconfig1 libxshmfence1 libgdiplus libva-dev | |
# restore NuGet packages | |
COPY ["Example/Example.csproj", "Example/"] | |
RUN dotnet restore "Example/Example.csproj" | |
# build project | |
COPY . . | |
WORKDIR "/src/Example" | |
RUN dotnet build "Example.csproj" -c Release -o /app/build | |
# publish project | |
RUN dotnet publish "Example.csproj" -c Release -o /app/publish | |
WORKDIR /app/publish | |
# update permissions | |
RUN chmod 775 /app/publish/runtimes/linux-x64/native/IronCefSubprocess | |
# run app | |
ENTRYPOINT ["dotnet", "Example.dll"] |
Ubuntu 20 搭配 .NET 5
# base image (Ubuntu 20) | |
FROM mcr.microsoft.com/dotnet/sdk:5.0-focal | |
WORKDIR /src | |
# install necessary packages | |
RUN apt update \ | |
&& apt install -y libc6 libc6-dev libgtk2.0-0 libnss3 libatk-bridge2.0-0 libx11-xcb1 libxcb-dri3-0 libdrm-common libgbm1 libasound2 libappindicator3-1 libxrender1 libfontconfig1 libxshmfence1 libgdiplus libva-dev | |
# restore NuGet packages | |
COPY ["Example/Example.csproj", "Example/"] | |
RUN dotnet restore "Example/Example.csproj" | |
# build project | |
COPY . . | |
WORKDIR "/src/Example" | |
RUN dotnet build "Example.csproj" -c Release -o /app/build | |
# publish project | |
RUN dotnet publish "Example.csproj" -c Release -o /app/publish | |
WORKDIR /app/publish | |
# update permissions | |
RUN chmod 775 /app/publish/runtimes/linux-x64/native/IronCefSubprocess | |
# run app | |
ENTRYPOINT ["dotnet", "Example.dll"] |
Ubuntu 20 搭配 .NET 3.1 LTS
# base image (Ubuntu 20) | |
FROM mcr.microsoft.com/dotnet/sdk:3.1-focal | |
WORKDIR /src | |
# install necessary packages | |
RUN apt update \ | |
&& apt install -y libc6 libc6-dev libgtk2.0-0 libnss3 libatk-bridge2.0-0 libx11-xcb1 libxcb-dri3-0 libdrm-common libgbm1 libasound2 libappindicator3-1 libxrender1 libfontconfig1 libxshmfence1 libgdiplus libva-dev | |
# restore NuGet packages | |
COPY ["Example/Example.csproj", "Example/"] | |
RUN dotnet restore "Example/Example.csproj" | |
# build project | |
COPY . . | |
WORKDIR "/src/Example" | |
RUN dotnet build "Example.csproj" -c Release -o /app/build | |
# publish project | |
RUN dotnet publish "Example.csproj" -c Release -o /app/publish | |
WORKDIR /app/publish | |
# update permissions | |
RUN chmod 775 /app/publish/runtimes/linux-x64/native/IronCefSubprocess | |
# run app | |
ENTRYPOINT ["dotnet", "Example.dll"] |
Ubuntu 18 與 .NET 3.1 LTS
# base image (Ubuntu 18) | |
FROM mcr.microsoft.com/dotnet/sdk:3.1-bionic | |
WORKDIR /src | |
# install necessary packages | |
RUN apt update \ | |
&& apt install -y libc6 libc6-dev libgtk2.0-0 libnss3 libatk-bridge2.0-0 libx11-xcb1 libxcb-dri3-0 libdrm-common libgbm1 libasound2 libappindicator3-1 libxrender1 libfontconfig1 libxshmfence-dev libgdiplus libva-dev | |
# restore NuGet packages | |
COPY ["Example/Example.csproj", "Example/"] | |
RUN dotnet restore "Example/Example.csproj" | |
# build project | |
COPY . . | |
WORKDIR "/src/Example" | |
RUN dotnet build "Example.csproj" -c Release -o /app/build | |
# publish project | |
RUN dotnet publish "Example.csproj" -c Release -o /app/publish | |
WORKDIR /app/publish | |
# update permissions | |
RUN chmod 775 /app/publish/runtimes/linux-x64/native/IronCefSubprocess | |
# run app | |
ENTRYPOINT ["dotnet", "Example.dll"] |
Debian Linux DockerFiles


Debian 12 與 .NET 8
# base image (Debian 12) | |
FROM mcr.microsoft.com/dotnet/sdk:8.0 | |
USER root | |
WORKDIR /app | |
# install necessary packages | |
RUN apt update \ | |
&& apt install -y sudo libxkbcommon-x11-0 libc6 libc6-dev libgtk2.0-0 libnss3 libatk-bridge2.0-0 libx11-xcb1 libxcb-dri3-0 libdrm-common libgbm1 libasound2 libxrender1 libfontconfig1 libxshmfence1 libgdiplus libva-dev | |
# restore NuGet packages | |
ARG BUILD_CONFIGURATION=Release | |
WORKDIR /src | |
COPY ["Example/Example.csproj", "Example/"] | |
RUN dotnet restore "./Example/./Example.csproj" | |
# build project | |
COPY . . | |
WORKDIR "/src/Example" | |
RUN dotnet build "./Example.csproj" -c $BUILD_CONFIGURATION -o /app/build | |
# publish project | |
RUN dotnet publish "./Example.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false | |
WORKDIR /app/publish | |
# run app | |
ENTRYPOINT ["dotnet", "Example.dll"] |
Debian 11 搭配 .NET 7
# base image (Debian 11) | |
FROM mcr.microsoft.com/dotnet/sdk:7.0 | |
WORKDIR /src | |
# install necessary packages | |
RUN apt update \ | |
&& apt install -y sudo libc6 libc6-dev libgtk2.0-0 libnss3 libatk-bridge2.0-0 libx11-xcb1 libdrm-common libgbm1 libasound2 libxrender1 libfontconfig1 libxshmfence1 libxkbcommon-dev libgdiplus libva-dev | |
# restore NuGet packages | |
COPY ["Example/Example.csproj", "Example/"] | |
RUN dotnet restore "Example/Example.csproj" | |
# build project | |
COPY . . | |
WORKDIR "/src/Example" | |
RUN dotnet build "Example.csproj" -c Release -o /app/build | |
# publish project | |
RUN dotnet publish "Example.csproj" -c Release -o /app/publish | |
WORKDIR /app/publish | |
# update permissions | |
RUN chmod 775 /app/publish/runtimes/linux-x64/native/IronCefSubprocess | |
# run app | |
ENTRYPOINT ["dotnet", "Example.dll"] |
Debian 11 與 .NET 6
# base image (Debian 11) | |
FROM mcr.microsoft.com/dotnet/sdk:6.0 | |
WORKDIR /src | |
# install necessary packages | |
RUN apt update \ | |
&& apt install -y sudo libxkbcommon-x11-0 libc6 libc6-dev libgtk2.0-0 libnss3 libatk-bridge2.0-0 libx11-xcb1 libxcb-dri3-0 libdrm-common libgbm1 libasound2 libxrender1 libfontconfig1 libxshmfence1 libgdiplus libva-dev | |
# restore NuGet packages | |
COPY ["Example/Example.csproj", "Example/"] | |
RUN dotnet restore "Example/Example.csproj" | |
# build project | |
COPY . . | |
WORKDIR "/src/Example" | |
RUN dotnet build "Example.csproj" -c Release -o /app/build | |
# publish project | |
RUN dotnet publish "Example.csproj" -c Release -o /app/publish | |
WORKDIR /app/publish | |
# update permissions | |
RUN chmod 775 /app/publish/runtimes/linux-x64/native/IronCefSubprocess | |
# run app | |
ENTRYPOINT ["dotnet", "Example.dll"] |
Debian 11 與 .NET 5
# base image (Debian 11) | |
FROM mcr.microsoft.com/dotnet/sdk:5.0-bullseye-slim | |
WORKDIR /src | |
# install necessary packages | |
RUN apt update \ | |
&& apt install -y sudo libxkbcommon-x11-0 libc6 libc6-dev libgtk2.0-0 libnss3 libatk-bridge2.0-0 libx11-xcb1 libxcb-dri3-0 libdrm-common libgbm1 libasound2 libxrender1 libfontconfig1 libxshmfence1 libgdiplus libva-dev | |
# restore NuGet packages | |
COPY ["Example/Example.csproj", "Example/"] | |
RUN dotnet restore "Example/Example.csproj" | |
# build project | |
COPY . . | |
WORKDIR "/src/Example" | |
RUN dotnet build "Example.csproj" -c Release -o /app/build | |
# publish project | |
RUN dotnet publish "Example.csproj" -c Release -o /app/publish | |
WORKDIR /app/publish | |
# update permissions | |
RUN chmod 775 /app/publish/runtimes/linux-x64/native/IronCefSubprocess | |
# run app | |
ENTRYPOINT ["dotnet", "Example.dll"] |
Debian 11 與 .NET 3.1 LTS
# base image (Debian 11) | |
FROM mcr.microsoft.com/dotnet/sdk:3.1-bullseye | |
WORKDIR /src | |
# install necessary packages | |
RUN apt update \ | |
&& apt install -y sudo libxkbcommon-x11-0 libc6 libc6-dev libgtk2.0-0 libnss3 libatk-bridge2.0-0 libx11-xcb1 libxcb-dri3-0 libdrm-common libgbm1 libasound2 libxrender1 libfontconfig1 libxshmfence1 libgdiplus libva-dev | |
# restore NuGet packages | |
COPY ["Example/Example.csproj", "Example/"] | |
RUN dotnet restore "Example/Example.csproj" | |
# build project | |
COPY . . | |
WORKDIR "/src/Example" | |
RUN dotnet build "Example.csproj" -c Release -o /app/build | |
# publish project | |
RUN dotnet publish "Example.csproj" -c Release -o /app/publish | |
WORKDIR /app/publish | |
# update permissions | |
RUN chmod 775 /app/publish/runtimes/linux-x64/native/IronCefSubprocess | |
# run app | |
ENTRYPOINT ["dotnet", "Example.dll"] |
Debian 10 與 .NET 5
# base image (Debian 10) | |
FROM mcr.microsoft.com/dotnet/sdk:5.0 | |
WORKDIR /src | |
# install necessary packages | |
RUN apt update \ | |
&& apt install -y libc6 libc6-dev libgtk2.0-0 libnss3 libatk-bridge2.0-0 libx11-xcb1 libxcb-dri3-0 libdrm-common libgbm1 libasound2 libappindicator3-1 libxrender1 libfontconfig1 libxshmfence1 libgdiplus libva-dev | |
# restore NuGet packages | |
COPY ["Example/Example.csproj", "Example/"] | |
RUN dotnet restore "Example/Example.csproj" | |
# build project | |
COPY . . | |
WORKDIR "/src/Example" | |
RUN dotnet build "Example.csproj" -c Release -o /app/build | |
# publish project | |
RUN dotnet publish "Example.csproj" -c Release -o /app/publish | |
WORKDIR /app/publish | |
# update permissions | |
RUN chmod 775 /app/publish/runtimes/linux-x64/native/IronCefSubprocess | |
# run app | |
ENTRYPOINT ["dotnet", "Example.dll"] |
Debian 10 搭配 .NET 3.1 LTS
# base image (Debian 10) | |
FROM mcr.microsoft.com/dotnet/sdk:3.1 | |
WORKDIR /src | |
# install necessary packages | |
RUN apt update \ | |
&& apt install -y libc6 libc6-dev libgtk2.0-0 libnss3 libatk-bridge2.0-0 libx11-xcb1 libxcb-dri3-0 libdrm-common libgbm1 libasound2 libappindicator3-1 libxrender1 libfontconfig1 libxshmfence1 libgdiplus libva-dev | |
# restore NuGet packages | |
COPY ["Example/Example.csproj", "Example/"] | |
RUN dotnet restore "Example/Example.csproj" | |
# build project | |
COPY . . | |
WORKDIR "/src/Example" | |
RUN dotnet build "Example.csproj" -c Release -o /app/build | |
# publish project | |
RUN dotnet publish "Example.csproj" -c Release -o /app/publish | |
WORKDIR /app/publish | |
# update permissions | |
RUN chmod 775 /app/publish/runtimes/linux-x64/native/IronCefSubprocess | |
# run app | |
ENTRYPOINT ["dotnet", "Example.dll"] |
Alpine Linux Docker檔案
IronPDF 在 Alpine Linux 上不支持運行。 我們希望我們能夠,但我們不能。 坦白說,我們喜歡Alpine,並希望這個項目能持續發展壯大。 截至2023年,Alpine仍然使用過時的“musl”C語言庫,這導致Chromium開發者尚無法完全支持此操作系統。
在 .NET 6 中將 Alpine Docker 與 IronPdfEngine 搭配使用
IronPdf提供一個包含所有IronPdf功能的容器映像。 這使運行在 Alpine 上的項目能夠通過連接到 IronPdfEngine 容器訪問 IronPdf 功能。
步驟1:拉取並運行 IronPdf Engine Docker 映像
在終端機中執行以下命令以拉取並運行 IronPdf Engine Docker 映像:
docker pull ironsoftwareofficial/ironpdfengine
docker run -d -p 33350:33350 ironsoftwareofficial/ironpdfengine
步驟 2:設定控制台應用程序
建立一個針對 .NET 6 的新控制台應用程式。
使用 NuGet 包管理器安裝 IronPdf.Slim NuGet 包。
IronPDF Windows Docker 容器


Windows Docker 容器在 Azure 上變得越來越受歡迎,因為它們提供更高的性能和可擴展性,並且讓開發者有更多配置實例的權限。
IronPDF 將在 Docker 容器內執行更吸引人的文字渲染。(Windows 或 Linux)在 Azure 上,由於能夠更高程度地訪問圖形庫和虛擬顯示卡。
The article 'Visual Studio 容器工具 for Docker' 是一本非常棒的入門指南。
這是一個用於 .NET Core 3.1 的範例 Windows 容器 Dockerfile
# escape=` | |
FROM mcr.microsoft.com/windows/servercore:ltsc2016 AS baseOS | |
RUN powershell -Command [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::Tls12; $ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue'; Invoke-WebRequest -UseBasicParsing -Uri https://dot.net/v1/dotnet-install.ps1 -OutFile dotnet-install.ps1; ./dotnet-install.ps1 -InstallDir '/Program Files/dotnet' -Channel 3.1 -Runtime dotnet; Remove-Item -Force dotnet-install.ps1 && setx /M PATH "%PATH%;C:\Program Files\dotnet" | |
COPY . . | |
FROM mcr.microsoft.com/dotnet/aspnet:3.1 AS base |
Windows Server 2019 .NET 6.0
預先配置的 Windows 容器,其中包含運行 IronPdf 所需的所有必要依賴項。
請注意
FROM mcr.microsoft.com/dotnet/sdk:6.0-windowsservercore-ltsc2019 AS build
WORKDIR /src
COPY ["nuget.config", "."]
COPY ["ConsoleApp/ConsoleApp.csproj", "ConsoleApp/"]
RUN dotnet restore "ConsoleApp/ConsoleApp.csproj"
COPY . .
WORKDIR "/src/ConsoleApp"
RUN dotnet build "ConsoleApp.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "ConsoleApp.csproj" -c Release -o /app/publish /p:UseAppHost=false
FROM ironsoftwareofficial/windows:2019-net60
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "ConsoleApp.dll"]
訪問IronSoftware 在 Docker Hub 上的 Docker 儲存庫探索更多預先配置的IronPDF運行映像。