2016-05-29 67 views
2

我有一個應用程序需要主機上的一些二進制文件才能使基於Docker的應用程序正常工作。我可以使用碼頭註冊表發送圖像,但是如何將這些二進制文件發送到主機?創造deb/rpm似乎是一種選擇,但這將違背碼頭平臺獨立哲學。如何使用Docker鏡像打包文件

+0

但是基於碼頭的應用程序應該在其容器中是自治的,不是嗎?如果沒有,你可以考慮一個docker運行的包裝器,它首先使docker cp? (如http://stackoverflow.com/a/22050116/6309) – VonC

回答

0

如果您的映像基於包管理器的映像,您可以使用包管理器安裝所需的二進制文件,例如,

RUN apt-get update && apt-get install -y required-package 

或者,您可以從互聯網上下載靜態鏈接的二進制文件並提取它們,例如,

RUN curl -s -L https://example.com/some-bin.tar.gz | tar -C /opt -zx 

如果二進制文件作爲構建過程中創建的,你會希望將其複製過來

COPY build/target/bin/* /usr/local/bin/ 
0

如果你需要他們的泊塢窗圖像之外的主機上你可以做什麼這是。

它們添加到您的DockerfileADDCOPY

也有一個安裝腳本它調用cp -f src dest 然後結合從主機安裝的安裝目錄容器到dest。

類似於以下示例:

例如, Dockerfile

FROM ubuntu:16.04 

COPY file1 /src 
COPY file2 /src 
COPY install /src 
CMD install 

構建:

docker build -t installer .

安裝腳本:

#/bin/bash 
cp -f /src /dist 

安裝:

docker run -v /opt/bin:/dist 

會導致文件1 & file2以主機上的/ opt/bin結尾。

相關問題