标签: alpine-linux

如何在 Alpine 中安装特定的软件包版本?

我需要Dockerfile构建一个基于 Alpine Linux 的 Docker 镜像。现在我需要安装一个包作为这个的一部分Dockerfile

目前我有:

RUN apk update && \
    apk upgrade && \
    apk add git
Run Code Online (Sandbox Code Playgroud)

显然这是一个坏主意,因为结果是不确定的。相反,它取决于我构建映像的时间点,以及git正在安装的版本。

这样做的正确方法是什么?

我想我必须告诉updatedupgrade以及add使用哪些版本,但我该怎么做?

我已经看到apk支持固定存储库,但这不是我想要的(至少我是这么认为的),因为我不想固定存储库,而是一个包。

换句话说:如果git可以通过安装npm,我将能够运行:

npm install git@1.9.2
Run Code Online (Sandbox Code Playgroud)

(或我想要的任何版本)。对于 Alpine Linux,这相当于什么?

package-management docker alpine-linux

145
推荐指数
4
解决办法
24万
查看次数

如何在 alpine linux 中安装 npm

所以我无法在 alpine linux 中安装 npm。我想也许我可以只做一个apk add npm但显然apk search npm什么都不返回,即使在apk update. 我正在从 nginx:alpine docker 图像中尝试所有这些,即docker run -it nginx:alpine /bin/sh

编辑 1:我可以看到nodejs:alpine dockerfile 是如何构建的node,但我不明白它是如何构建的npm

编辑 2:现在我知道 npm 在 alpine 上与 nodejs 一起安装,只是为了澄清起见,起初这对我来说并不明显的原因是在 ubuntu 14.04 上 asudo apt-get install nodejs仍然需要一个sudo apt-get install npm(例如安装开发包gcc

linux alpine-linux

128
推荐指数
5
解决办法
19万
查看次数

为什么 Alpine Docker 镜像比 Ubuntu 镜像慢 50% 以上?

我注意到我的 Python 应用程序在运行时比在 Ubuntu 上不使用 Docker时运行慢得多python:2-alpine3.6。我想出了两个小的基准测试命令,当我在 Ubuntu 服务器上运行它们时,以及当我在 Mac 上使用 Docker 时,两种操作系统之间都存在明显的差异。

$ BENCHMARK="import timeit; print(timeit.timeit('import json; json.dumps(list(range(10000)))', number=5000))"
$ docker run python:2-alpine3.6 python -c $BENCHMARK
7.6094589233
$ docker run python:2-slim python -c $BENCHMARK
4.3410820961
$ docker run python:3-alpine3.6 python -c $BENCHMARK
7.0276606959
$ docker run python:3-slim python -c $BENCHMARK
5.6621271420
Run Code Online (Sandbox Code Playgroud)

我还尝试了以下不使用 Python 的“基准”:

$ docker run -ti ubuntu bash
root@6b633e9197cc:/# time $(i=0; while (( i < 9999999 )); do (( i ++
)); done)

real …
Run Code Online (Sandbox Code Playgroud)

performance ubuntu docker alpine-linux

50
推荐指数
1
解决办法
3万
查看次数

如何检查 alpine 邮件客户端的版本?

如何在 Unix 服务器上检查安装了哪个版本的 Alpine 邮件客户端?

如果需要,我有 root 访问权限。

unix version alpine-linux

36
推荐指数
2
解决办法
3万
查看次数

存在时没有这样的文件

这怎么可能?

bash: /usr/local/phantomjs/bin/phantomjs: No such file or directory
bash-4.3# cd /usr/local/phantomjs/bin
bash-4.3# ls
phantomjs
bash-4.3#
Run Code Online (Sandbox Code Playgroud)

内容/usr/local/phantomjs/binphantomjs文件,但是当我尝试执行它时,它看起来不存在。

仅供参考,我使用的是 Alpine linux 3.3

更新1

bash-4.3# ls -lF /usr/local/phantomjs/bin/phantomjs
-rwxr-xr-x    1 root     root      67932064 Jan 25  2016 /usr/local/phantomjs/bin/phantomjs*
bash-4.3# lf -lF /usr/local/phantomjs/bin
bash: lf: command not found
bash-4.3# ls -lF /usr/local/phantomjs/bin
total 66340
-rwxr-xr-x    1 root     root      67932064 Jan 25  2016 phantomjs*
Run Code Online (Sandbox Code Playgroud)

更新2

bash-4.3# file /usr/local/phantomjs/bin/phantomjs
bash: file: command not found
bash-4.3# head -n1 /usr/local/phantomjs/bin/phantomjs
ELF>xvA@`?
Q?t/lib64/ld-linux-x86-64.so.2GNUGNU????!?`?L`?L^|????????h?TT@T@DD`??`?L`?P?tddB?dB?dB??g
Run Code Online (Sandbox Code Playgroud)

更新3

bash-4.3# echo …
Run Code Online (Sandbox Code Playgroud)

alpine-linux

16
推荐指数
1
解决办法
1万
查看次数

相当于 Alpine Linux 的 usermod

我正在构建一个 Docker 容器,我需要将我的用户添加到一个组中。usermod默认情况下在 Alpine Linux 中不可用。显然,您可以添加shadowfromapk到 install usermod,但我不希望安装其他软件包。

是否有其他方法可以将用户添加到组中,或usermod在 Alpine 中使用等效工具?

user-accounts user-groups alpine-linux

16
推荐指数
1
解决办法
3万
查看次数

无法在 alpine linux (docker) 中运行 nginx

好吧,我已经设置了一个带有 nginx 的 alpine linux docker 容器

( apk add nginx)

现在我正在尝试运行 nginx。使用简单命令nginx返回以下错误:

nginx: [emerg] open() "/run/nginx/nginx.pid" failed (2: No such file or directory)
Run Code Online (Sandbox Code Playgroud)

这是什么原因造成的?- 即使作为 root 我也没有打开的权限,/run/所以我无法真正检查出来。我的 nginx.conf 是:

#
events {
    worker_connections 768;
    # multi_accept on;
}

http {

    ##
    # Basic Settings
    ##

    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    types_hash_max_size 2048;
    # server_tokens off;

    # server_names_hash_bucket_size 64;
    # server_name_in_redirect off;

    #include /etc/nginx/mime.types;
    #default_type application/octet-stream;

    ##
    # SSL Settings
    ##

    ssl_protocols …
Run Code Online (Sandbox Code Playgroud)

nginx docker alpine-linux

13
推荐指数
1
解决办法
2万
查看次数

在 alpine linux 上安装 whereis 命令

我正在尝试在 alpine linux 3.5 上安装 whereis 命令

实际上我正在运行以下命令:

apk add --update whereis
Run Code Online (Sandbox Code Playgroud)

但它不起作用,因为我收到此错误:

fetch http://dl-cdn.alpinelinux.org/alpine/v3.5/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.5/community/x86_64/APKINDEX.tar.gz
ERROR: unsatisfiable constraints:
  whereis (missing):
    required by: world[whereis]
Run Code Online (Sandbox Code Playgroud)

似乎没有包 whereis,我肯定错过了什么。我应该怎么做才能获得 whereis 命令?

command-line packages alpine-linux

10
推荐指数
1
解决办法
1万
查看次数

以易于解析的格式打印已安装的 Alpine 软件包列表及其版本

我正在尝试获取已安装软件包的列表,其版本采用易于处理的格式,以便自动化工具进行解析。

我可以得到这个输出:

/ # apk list -i
WARNING: Ignoring APKINDEX.00740ba1.tar.gz: No such file or directory
WARNING: Ignoring APKINDEX.d8b2a6f4.tar.gz: No such file or directory
musl-1.1.22-r2 x86_64 {musl} (MIT) [installed]
zlib-1.2.11-r1 x86_64 {zlib} (zlib) [installed]
apk-tools-2.10.4-r2 x86_64 {apk-tools} (GPL2) [installed]
musl-utils-1.1.22-r2 x86_64 {musl} (MIT BSD GPL2+) [installed]
libssl1.1-1.1.1c-r0 x86_64 {openssl} (OpenSSL) [installed]
alpine-baselayout-3.1.2-r0 x86_64 {alpine-baselayout} (GPL-2.0-only) [installed]
alpine-keys-2.1-r2 x86_64 {alpine-keys} (MIT) [installed]
busybox-1.30.1-r2 x86_64 {busybox} (GPL-2.0) [installed]
scanelf-1.2.3-r0 x86_64 {pax-utils} (GPL-2.0) [installed]
libc-utils-0.7.1-r0 x86_64 {libc-dev} (BSD) [installed]
libtls-standalone-2.9.1-r0 x86_64 {libtls-standalone} (ISC) [installed] …
Run Code Online (Sandbox Code Playgroud)

linux alpine-linux

10
推荐指数
1
解决办法
1万
查看次数

在 alpine linux 上使用 npm 安装最新的 nodejs 的最佳方法是什么

我正在尝试基于 alpine linux 构建我自己的 docker 容器,我需要在该容器中添加多个服务(是的,不建议将其作为最佳实践,但目前我的 org devops 有点落后,需要一个 dockerfile 用于我的自定义图像)。

我正在查看这篇文章以找到在 alpine linux 上使用 npm 安装最新版本的 nodejs 的方法。但是apk add nodejs@6,本次讨论中似乎没有提供或提供类似的内容。

此外,似乎 alpine linux 在此处的存储库中没有最新版本的 nodejs (v 8.X) 。

那么我几乎必须从源代码安装 nodejs 吗?但是与仅从 alpine repo 安装相比,该选项非常慢。

编辑:

在 dockerfile 中添加 nodejs-current 会带来另一个问题

步骤 ... : RUN apk update && apk add nodejs-current

---> 在 e430b4d279e5 中运行获取http://dl-cdn.alpinelinux.org/alpine/v3.4/main/x86_64/APKINDEX.tar.gz 获取 http://dl-cdn.alpinelinux.org/alpine/ v3.4/community/x86_64/APKINDEX.tar.gz 获取 http://nl.alpinelinux.org/alpine/edge/testing/x86_64/APKINDEX.tar.gz v3.4.6-213-gb6db4bd [ http://dl -cdn.alpinelinux.org/alpine/v3.4/main] v3.4.6-160-g14ad2a3 [ http://dl-cdn.alpinelinux.org/alpine/v3.4/community] v3.6.0-3765-g46dd4472f4 [ http://nl.alpinelinux.org/alpine/edge/testing] OK:8679 个不同的包可用错误:无法满足的约束:nodejs-current(缺失):需要:world[nodejs-current]

packages node.js alpine-linux

9
推荐指数
1
解决办法
3万
查看次数