在docker容器中安装包

时间:2017-10-27 17:22:42

标签: docker jenkins

我想知道如何在docker容器中安装软件包。我的用例是,我有一个jenkins服务器,其中包含几种代理,包括docker代理模板,如果不需要虚拟机环境,则会导致创建docker容器并在默认情况下使用没有标签的每个构建。问题是,如果可能的话,如何在这样的docker容器中构建之前安装依赖项?我不认为对于具有不同需求的不同项目而言每个都有很多图像是一个好主意,并且每次某个项目需要依赖项时修改单个图像可能会使该图像膨胀,以防我需要其中许多图像。但通常,出于安全原因,容器内部没有root访问权限。如何应对这种情况/有哪些可能的选择?

1 个答案:

答案 0 :(得分:1)

Jenkins允许您指定将在其中创建代理的docker镜像。

示例:

$('#option1').data('clicked', false);

$('#option1').click(function () {
    if ($('#option1').data('clicked')) {
        $('#option1').data('clicked', false);
    } else {
        $('#option1').data('clicked', true);
    }

    if ($('#option1').data('clicked')) {
        alert('yes');
    } else {
        alert('no');
    }
});

如果您在dockerhub上找不到包含必要依赖项的公共映像,则需要创建自定义映像。这样做的方法是创建一个Dockerfile并在其中安装dependecies。

agent {
    docker {
        image 'maven:3-alpine'
        label 'my-defined-label'
        args  '-v /tmp:/tmp'
    }
}

然后,您可以使用此Dockerfile构建代理,或者构建映像并将其放在jenkins主机上,并使用上面的管道语法来配置代理。

您可以直接使用Dockerfile:

FROM base-image
RUN apt-get update && apt-get install ...