[英]How will a Docker application with ubuntu as base image work on Windows?
[英]running windows base application embedded in ubuntu or alpine based docker image
我们开发了基于 Windows 的应用程序,并尝试将其转换为在 Linux 基础环境中以 docker 运行。 不幸的是,第 3 方库之一无法转换为 Linux 环境。 我们构建了 docker 图像,即 ubuntu 16.04 + wine 4.0 + w.netricks,我们的应用程序可以在其上运行,但所有 3 个组件(ubuntu、wine + w.netrick)的重量都超过 3GB。 下面是我们用来构建 docker 图像的 Dockerfile 的一部分我们的应用程序是 64 位的,结合了 python 和 C++ 代码我们如何减少 docker 的大小? 还有另一种方法可以在 linux 环境中将 windows 基础应用程序作为 docker 容器运行吗?
FROM ubuntu:16.04
# reccomended to add 32bit arch for wine
RUN dpkg --add-architecture i386 \
# install things to help install wine
&& apt-get update \
&& apt-get install -y --allow-unauthenticated wget software-properties-common software-properties-common debconf-utils python-software-properties apt-transport-https cabextract telnet xvfb unzip build-essential \
# register repo and install winehq
&& wget -nc https://dl.winehq.org/wine-builds/Release.key \
&& apt-key add Release.key \
&& wget -nc https://dl.winehq.org/wine-builds/winehq.key \
&& apt-key add winehq.key \
&& apt-add-repository https://dl.winehq.org/wine-builds/ubuntu/ \
&& apt-get update \
&& apt-get install -y xvfb \
&& apt-get install --install-recommends -y --allow-unauthenticated winehq-stable
# setup vars for wine
ENV DISPLAY=":0.0"
ENV WINEARCH="win64"
ENV WINEPREFIX="/root/.wine64"
ENV WINESYSTEM32="/root/.wine64/drive_c/windows/system32"
ENV WINEDLLOVERRIDES="mscoree,mshtml="
ENV WINEDEBUG=-all
COPY scripts /root/scripts
# pull down winetricks, and install requirements
# vcrun2015 and vcrun2010 are Visual Studio C++ Redistributables
RUN set -e \
&& mkdir -p $WINEPREFIX \
&& cd $WINEPREFIX \
&& wget https://raw.githubusercontent.com/Winetricks/winetricks/20190615/src/winetricks \
&& chmod +x winetricks \
&& xvfb-run wine wineboot --init \
&& xvfb-run wineserver -w \
&& xvfb-run sh ./winetricks -q d3dx9 corefonts vcrun2015
RUN set -x \
&& pythonVersions='python3.7' \
&& apt-get update \
&& apt-get install -y --allow-unauthenticated --no-install-recommends software-properties-common \
&& apt-add-repository -y ppa:deadsnakes/ppa \
&& apt-get update \
&& apt-get install -y --allow-unauthenticated --no-install-recommends $pythonVersions \
&& rm -rf /var/lib/apt/lists/* \
...
我们开发了基于 Windows 的应用程序,并尝试将其转换为在 Linux 基础环境中作为 docker 运行。 不幸的是,第 3 方库之一无法转换为 Linux 环境。 我们构建了 docker 映像,即 ubuntu 16.04 + wine 4.0 + winetricks,我们的应用程序可以在其上运行,但所有 3 个组件(ubuntu、wine + winetrick)的重量超过 3GB。 Below is the part of Dockerfile which we use to build the docker image Our application is 64bit and combines python and C++ code How can we reduce docker size? 是否有另一种方法可以在 linux 环境中将 windows 基础应用程序作为 docker 容器运行?
FROM ubuntu:16.04
# reccomended to add 32bit arch for wine
RUN dpkg --add-architecture i386 \
# install things to help install wine
&& apt-get update \
&& apt-get install -y --allow-unauthenticated wget software-properties-common software-properties-common debconf-utils python-software-properties apt-transport-https cabextract telnet xvfb unzip build-essential \
# register repo and install winehq
&& wget -nc https://dl.winehq.org/wine-builds/Release.key \
&& apt-key add Release.key \
&& wget -nc https://dl.winehq.org/wine-builds/winehq.key \
&& apt-key add winehq.key \
&& apt-add-repository https://dl.winehq.org/wine-builds/ubuntu/ \
&& apt-get update \
&& apt-get install -y xvfb \
&& apt-get install --install-recommends -y --allow-unauthenticated winehq-stable
# setup vars for wine
ENV DISPLAY=":0.0"
ENV WINEARCH="win64"
ENV WINEPREFIX="/root/.wine64"
ENV WINESYSTEM32="/root/.wine64/drive_c/windows/system32"
ENV WINEDLLOVERRIDES="mscoree,mshtml="
ENV WINEDEBUG=-all
COPY scripts /root/scripts
# pull down winetricks, and install requirements
# vcrun2015 and vcrun2010 are Visual Studio C++ Redistributables
RUN set -e \
&& mkdir -p $WINEPREFIX \
&& cd $WINEPREFIX \
&& wget https://raw.githubusercontent.com/Winetricks/winetricks/20190615/src/winetricks \
&& chmod +x winetricks \
&& xvfb-run wine wineboot --init \
&& xvfb-run wineserver -w \
&& xvfb-run sh ./winetricks -q d3dx9 corefonts vcrun2015
RUN set -x \
&& pythonVersions='python3.7' \
&& apt-get update \
&& apt-get install -y --allow-unauthenticated --no-install-recommends software-properties-common \
&& apt-add-repository -y ppa:deadsnakes/ppa \
&& apt-get update \
&& apt-get install -y --allow-unauthenticated --no-install-recommends $pythonVersions \
&& rm -rf /var/lib/apt/lists/* \
...
你安装了很多不需要的包,你应该仔细阅读
https://www.dajobe.org/blog/2015/04/18/making-debian-docker-images-smaller/
这解释了为什么
您应该删除 xvfb(我猜您在安装和配置 wine 期间需要 xvfb,但之后不需要)和所有“推荐”包
也看看
https://github.com/wagoodman/dive
如果您需要查看 docker 图像的效率,这是一个很好的工具
也用
https://github.com/jwilder/docker-squash
它可以节省一些空间。
好狩猎
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.