标签: alpine-linux

如何使用基于Alpine的docker图像的bash?

我从openjdk创建了一个docker镜像:8-jdk-alpine但是当我尝试执行简单的命令时,我得到以下错误:

RUN bash
/bin/sh: bash: not found

RUN ./gradlew build
env: can't execute 'bash': No such file or directory
Run Code Online (Sandbox Code Playgroud)

bash docker dockerfile alpine-linux

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

在Docker Alpine容器中启动shell

要为Ubuntu映像启动交互式shell,我们可以运行:

ole@T:~$ docker run -it --rm ubuntu
root@1a6721e1fb64:/# ls
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
Run Code Online (Sandbox Code Playgroud)

但是当为Alpine Docker镜像运行时,会产生以下结果:

ole@T:~$ docker run -it --rm alpine
Error response from daemon: No command specified
Run Code Online (Sandbox Code Playgroud)

在Alpine基础容器中启动交互式shell的命令是什么?

linux containers docker alpine-linux

131
推荐指数
4
解决办法
11万
查看次数

为什么Java 11基础Docker镜像如此之大?(的openjdk:11-JRE-苗条)

Java 11被宣布为最新的LTS版本.因此,我们正在尝试基于此Java版本启动新服务.

但是,Java 11的基本Docker镜像远大于Java 8的等效镜像:

(我只考虑每个Java版本的官方OpenJDK最轻量级的图像.)

更深入的挖掘发现了以下"事物":

  • openjdk:11-jre-slim图像使用基本图像debian:sid-slim.这带来了两个问题:

    • 这比60 MB大 alpine:3.8

    • Debian的sid版本是不稳定

  • openjdk-11-jre-headless安装在映像中的包比(运行Docker容器内部)大3倍openjdk8-jre:

所以,现在问题来了:

  • 为什么alpine不再使用Java 11 slim图像的基本映像?

  • 为什么不稳定的sid版本用于LTS Java图像?

  • 为什么OpenJDK 11的纤薄/无头/ JRE封装与类似的OpenJDK 8封装相比如此之大?

    • 什么是在OpenJDK 11中带来135 …

java docker alpine-linux java-11

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

在Alpine Linux上安装Pillow时,没有这样的文件或目录"limits.h"

我在Raspberry Pi 2上运行alpine-linux.我试图通过这个命令安装Pillow:

pip install pillow
Run Code Online (Sandbox Code Playgroud)

这是命令的输出:

Installing collected packages: pillow
Running setup.py install for pillow
    Complete output from command /usr/bin/python -c "import setuptools, tokenize;__file__='/tmp/pip-build-gNq0WA/pillow/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-nDKwei-record/install-record.txt --single-version-externally-managed --compile:
    running install
    running build
    running build_py
    creating build
    creating build/lib.linux-armv7l-2.7
    creating build/lib.linux-armv7l-2.7/PIL
    copying PIL/XVThumbImagePlugin.py -> build/lib.linux-armv7l-2.7/PIL
    copying PIL/XpmImagePlugin.py -> build/lib.linux-armv7l-2.7/PIL
    copying PIL/XbmImagePlugin.py -> build/lib.linux-armv7l-2.7/PIL
    copying PIL/WmfImagePlugin.py -> build/lib.linux-armv7l-2.7/PIL
    copying PIL/WebPImagePlugin.py -> build/lib.linux-armv7l-2.7/PIL
    copying PIL/WalImageFile.py -> build/lib.linux-armv7l-2.7/PIL
    copying PIL/TiffTags.py -> build/lib.linux-armv7l-2.7/PIL
    copying PIL/TiffImagePlugin.py -> build/lib.linux-armv7l-2.7/PIL
    copying …
Run Code Online (Sandbox Code Playgroud)

python linux python-2.7 alpine-linux

103
推荐指数
4
解决办法
5万
查看次数

什么是.build-deps for apk add --virtual command?

什么是.build-deps在下面的命令?我无法在Alpine文档中找到解释.这是一个预定义的文件吗?在许多Dockerfiles中都会看到这个引用.

RUN apk add --no-cache --virtual .build-deps \
gcc \
freetype-dev \
musl-dev

RUN pip install --no-cache-dir <packages_that_require_gcc...> \

RUN apk del .build-deps
Run Code Online (Sandbox Code Playgroud)

apk docker dockerfile alpine-linux

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

如何将受信任的根 CA 添加到 Docker alpine

假设我所在的网络有 MITM SSL 交换防火墙(google.com 不是由 Google 颁发的,而是由自定义 CA 根权限重新颁发的),这里有更多详细信息https://security.stackexchange.com/questions/107542/is- it-common-practice-for-companies-to-mitm-https-traffic

我有简单的 Dockerfile:

FROM alpine:latest
RUN apk --no-cache add curl
Run Code Online (Sandbox Code Playgroud)

它因 SSL 错误而严重失败

 => ERROR [2/2] RUN apk --no-cache add curl                                                                                                                                    1.0s
------
 > [2/2] RUN apk --no-cache add curl:
#5 0.265 fetch https://dl-cdn.alpinelinux.org/alpine/v3.13/main/x86_64/APKINDEX.tar.gz
#5 0.647 140037857143624:error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed:ssl/statem/statem_clnt.c:1913:
#5 0.649 WARNING: Ignoring https://dl-cdn.alpinelinux.org/alpine/v3.13/main: Permission denied
#5 0.649 fetch https://dl-cdn.alpinelinux.org/alpine/v3.13/community/x86_64/APKINDEX.tar.gz
#5 0.938 140037857143624:error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed:ssl/statem/statem_clnt.c:1913:
#5 0.940 WARNING: Ignoring https://dl-cdn.alpinelinux.org/alpine/v3.13/community: Permission denied
#5 0.941 ERROR: unable to …
Run Code Online (Sandbox Code Playgroud)

ssl certificate man-in-the-middle docker alpine-linux

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

为什么在Alpine Linux上安装Pandas需要很长时间

我注意到使用基本操作系统Alpine与CentOS或Debian在Docker容器中安装Pandas和Numpy(它的依赖关系)需要更长的时间.我在下面创建了一个小测试来演示时差.除了Alpine更新和下载构建依赖项以安装Pandas和Numpy的几秒钟之外,为什么setup.py需要比Debian安装多70倍的时间?

有没有办法加速使用Alpine作为基本图像的安装,或者是否有另一个与Alpine相当的基本图像,最好用于像Pandas和Numpy这样的软件包?

Dockerfile.debian

FROM python:3.6.4-slim-jessie

RUN pip install pandas
Run Code Online (Sandbox Code Playgroud)

使用Pandas&Numpy构建Debian映像:

[PandasDockerTest] time docker build -t debian-pandas -f Dockerfile.debian . --no-cache
    Sending build context to Docker daemon  3.072kB
    Step 1/2 : FROM python:3.6.4-slim-jessie
     ---> 43431c5410f3
    Step 2/2 : RUN pip install pandas
     ---> Running in 2e4c030f8051
    Collecting pandas
      Downloading pandas-0.22.0-cp36-cp36m-manylinux1_x86_64.whl (26.2MB)
    Collecting numpy>=1.9.0 (from pandas)
      Downloading numpy-1.14.1-cp36-cp36m-manylinux1_x86_64.whl (12.2MB)
    Collecting pytz>=2011k (from pandas)
      Downloading pytz-2018.3-py2.py3-none-any.whl (509kB)
    Collecting python-dateutil>=2 (from pandas)
      Downloading python_dateutil-2.6.1-py2.py3-none-any.whl (194kB)
    Collecting six>=1.5 (from python-dateutil>=2->pandas)
      Downloading six-1.11.0-py2.py3-none-any.whl
    Installing collected packages: …
Run Code Online (Sandbox Code Playgroud)

numpy pandas docker alpine-linux

66
推荐指数
6
解决办法
2万
查看次数

当我使用Alpine作为基本图像时,如何添加用户?

我正在使用alpine(或基于Alpine的图像)作为我的Dockerfile中的基本图像.我需要添加哪些说明来创建用户?

最终我将使用此用户运行我将放入容器的应用程序,以便root用户不会.

docker alpine-linux

63
推荐指数
3
解决办法
5万
查看次数

在Alpine Docker容器上安装OpenSSH

第一次运行alpine docker容器并尝试openssh安装时,会发生以下情况:

ole@T:~$ docker run -it --rm alpine /bin/ash
/ # apk add openssh
WARNING: Ignoring APKINDEX.d3812b7e.tar.gz: No such file or directory
WARNING: Ignoring APKINDEX.bb2c5760.tar.gz: No such file or directory
ERROR: unsatisfiable constraints:
  openssh (missing):
    required by: world[openssh]
Run Code Online (Sandbox Code Playgroud)

应该如何安装openssh?

linux install docker alpine-linux

54
推荐指数
3
解决办法
5万
查看次数

Go编译的二进制文件不会在Ubuntu主机上的alpine docker容器中运行

给定一个二进制文件,使用Go编译GOOS=linux并基于此GOARCH=amd64部署到docker容器alpine:3.3,如果docker引擎主机是Ubuntu(15.10),二进制文件将不会运行:

sh: /bin/artisan: not found
Run Code Online (Sandbox Code Playgroud)

如果在Mac OS X上的VirtualBox VM中部署了docker引擎主机(它是基础),那么相同的二进制文件(针对相同的OS和arch编译)将运行得很好.busyboxalpine

如果容器基于Ubuntu映像之一,那么同样的二进制文件也将完美运行.

知道这个二进制文件丢失了吗?

这是我为重现而做的(在OS X上的VirtualBox/busybox中成功运行未显示):

构建(即使拱匹配,也使用标记显式构建):

?  artisan git:(master) ? GOOS=linux GOARCH=amd64 go build
Run Code Online (Sandbox Code Playgroud)

检查它是否可以在主机上运行:

?  artisan git:(master) ? ./artisan 
10:14:04.925 [ERROR] artisan: need a command, one of server, provision or build 
Run Code Online (Sandbox Code Playgroud)

复制到docker目录,构建,运行:

?  artisan git:(master) ? cp artisan docker/build/bin/        
?  artisan git:(master) ? cd docker 
?  docker git:(master) ? cat Dockerfile 
FROM docker:1.10
COPY build/ /
?  docker git:(master) …
Run Code Online (Sandbox Code Playgroud)

go busybox docker alpine-linux

54
推荐指数
4
解决办法
2万
查看次数