我正在尝试运行一个与 kafka 通信的简单 python 应用程序。我正在寻找一个高山容器。这是我当前的 dockerfile(它不是最佳的......只是想让事情暂时正常工作)。
FROM python:3.6-alpine
MAINTAINER Ashic Mahtab (ashic@live.com)
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
RUN echo "http://dl-cdn.alpinelinux.org/alpine/edge/community" >> /etc/apk/repositories
RUN apk update && apk --no-cache add librdkafka
COPY requirements.txt /usr/src/app/
RUN pip install --no-cache-dir -r requirements.txt
COPY api /usr/src/app/api
COPY static /usr/src/app/static
CMD ["python", "api/index.py"]
Run Code Online (Sandbox Code Playgroud)
需求文件中有 confluence-kafka 。构建失败
OK: 8784 distinct packages available
fetch http://dl-cdn.alpinelinux.org/alpine/v3.4/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.4/community/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/edge/community/x86_64/APKINDEX.tar.gz
ERROR: unsatisfiable constraints:
so:libcrypto.so.41 (missing):
required by:
librdkafka-0.9.4-r1[so:libcrypto.so.41]
librdkafka-0.9.4-r1[so:libcrypto.so.41]
librdkafka-0.9.4-r1[so:libcrypto.so.41]
so:libssl.so.43 (missing):
required by:
librdkafka-0.9.4-r1[so:libssl.so.43]
librdkafka-0.9.4-r1[so:libssl.so.43]
librdkafka-0.9.4-r1[so:libssl.so.43] …Run Code Online (Sandbox Code Playgroud) apache-kafka docker kafka-python alpine-linux confluent-platform
我正在尝试像这样导入和使用 python 枕头库:
from urllib.request import urlopen
import PIL
from PIL import Image, ImageFont, ImageDraw
import re
image = Image.open(urlopen("http://randomurl.com/randomimage.jpg"))
draw = ImageDraw.Draw(image)
font = ImageFont.truetype("sans-serif.ttf", 16)
draw.text((0, 0),"This is the future liberals want",(255,255,255),font=font)
image.save('sample-out.jpg')
Run Code Online (Sandbox Code Playgroud)
但是,我收到以下错误:
/opt/bot/app # python cli.py
Retrieving column Image ID on worksheet History
Traceback (most recent call last):
File "cli.py", line 38, in <module>
font = ImageFont.truetype("sans-serif.ttf", 16)
File "/usr/local/lib/python3.7/site-packages/PIL/ImageFont.py", line 260, in truetype
return FreeTypeFont(font, size, index, encoding, layout_engine)
File "/usr/local/lib/python3.7/site-packages/PIL/ImageFont.py", line 135, in __init__ …Run Code Online (Sandbox Code Playgroud) python python-imaging-library python-3.x docker alpine-linux
我正在尝试在运行 Alpine 的 Docker 映像上编译一些代码。然而,gcc 由于fatal error: sys/cdefs.h: No such file or directory. Google 上的人说要做
apt install libc6-dev-i386 gcc-multilib
我翻译成apk add libc6-dev-i386 gcc-multilib. 但是,然后我就得到了错误。ERROR: unsatisfiable constraints:对于这两个库。
我的 Dockerfile 如下:
FROM alpine
ADD . .
RUN apk update && apk add gcc make openssl libressl-dev musl-dev && make
ENTRYPOINT ./restrictions-crack "$hash" "$salt"
Run Code Online (Sandbox Code Playgroud) 我没有找到基于alpine 的示例 docker 镜像,它会自动安装 acl 包并在主挂载点上启用它/
我找到了 Ubuntu 的手动程序: https: //help.ubuntu.com/community/FilePermissionsACLs ,我想它也适用于 alpine,但没有 acl-ready alpine docker 镜像。
你能帮我解决这个问题吗?
更新:我发现这个链接指定使用 --storage-driver=devicemapper 选项: How to use setfacl inside a Docker container? 我得检查一下缺点
谢谢和问候,克里斯托夫
我必须用于我的应用程序的一个 API 仅支持用于 TLS 连接的 ECDHE 密码。
PORT STATE SERVICE
443/tcp open https
| ssl-enum-ciphers:
| TLSv1.2:
| ciphers:
| TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (rsa 2048) - A
| TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 (rsa 2048) - A
| TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (rsa 2048) - A
| TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 (rsa 2048) - A
| TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 (rsa 2048) - A
| compressors:
| NULL
| cipher preference: server
|_ least strength: A
Run Code Online (Sandbox Code Playgroud)
Nmap 完成:15.16 秒内扫描 1 个 IP 地址(1 个主机启动)
看起来我的应用程序不支持这些,我得到:
javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
Run Code Online (Sandbox Code Playgroud)
这是我可以在日志中看到的密码列表:
"ClientHello": {
"client version" …Run Code Online (Sandbox Code Playgroud) 我正在尝试运行一个 Node 12.13.0 Alpine Docker 容器,该容器每 15 分钟运行一次脚本。根据Alpine 的 wiki cron 部分,我应该能够在 Dockerfile 中添加一个 RUN 任务来通过以下方式将 crond 作为服务运行:
rc-service crond start && rc-update add crond
Run Code Online (Sandbox Code Playgroud)
然而,这会返回一个错误:
rc-service: service `crond' does not exist
Run Code Online (Sandbox Code Playgroud)
运行一个单独的 Docker 容器只是为了针对这个 Docker 容器运行 cron 任务不是一种选择。这个容器已经非常轻量级了,并没有做太多事情。
这是我的 Dockerfile:
FROM node:12.13.0-alpine
RUN apk add --no-cache tini openrc
WORKDIR /opt/app
COPY script.sh /etc/periodic/15min/
RUN chmod a+x /etc/periodic/15min/script.sh
RUN rc-service crond start && rc-update add crond
COPY . .
RUN chmod a+x startup.sh
ENTRYPOINT ["/sbin/tini", "--"] …Run Code Online (Sandbox Code Playgroud) 我浏览通过OpenJDK的发布最新图片:https://hub.docker.com/layers/openjdk/library/openjdk/8u252-jre-slim-buster/images/sha256-01dfdeac537b9d9adcb2399028fba063733a77186c5264e6b059987002c0e48c?context=explore个个switchedt
所有新的 Java 8 镜像都使用基于 Debian 的,是否有任何官方声明表明 OpenJDK 从 Alpine 迁移到 Debian,为什么?
为什么 OpenJDK 发布的新 Java 8 镜像不再基于 Alpine,而是基于 Debian 10(Buster)?
我用的是安卓手机。我编写python程序并在Termux中运行该程序。但是有一些lib不能在Android手机中安装或使用,例如sklearn和tensorflow。所以我决定尝试在我的编程环境中使用 docker 容器。我创建了一个 docker 镜像并将其更新到 docker-hub:zwdnet/mypython。然后我在 Termux 中安装了 qemu?并在 Termux 中安装了 Alpine Linux(alpine-virt-3.10.1-x86_64)。我按照这个页面的方法(是中文博客,不是英文):https : //stageguard.top/2019/08/15/run-docker-on-qemu-alpine/#1-Docker 之后,我使用命令
qemu-system-x86_64 -hda python.img -boot c -m 4096 -netdev user,id=nde1,hostfwd=tcp::2222-:22 -device e1000,netdev=nde1,id=d-net1 -nographic &
Run Code Online (Sandbox Code Playgroud)
在后面启动 alpine linux 并
ssh root@localhost -p 2222
Run Code Online (Sandbox Code Playgroud)
登录。(然后我安装了docker并运行容器成功,这是另一个问题。)现在我想不输入密码登录Apline linux。首先我使用
ssh-keygen -t rsa
Run Code Online (Sandbox Code Playgroud)
生成密钥,并使用
ssh-copy-id -i ./mykey.pub root@localhost -P 2222
Run Code Online (Sandbox Code Playgroud)
将 pub 密钥发送到 Apline linux 并更改 /etc/ssh/sshd_config 文件。最后我重新启动了 sshd 服务并注销。但是当我再次登录时,它要求我再次输入密码。我想可能是因为我用 root 登录。所以我登录并创建一个新用户名,并重复前面的操作符。但我失败了。ssh 要求我再次输入密码。这是我的 ~/.ssh 模型和密钥文件。
$ssh zym@localhost -p 2222 "ls -la"
zym@localhost's password:
total 20
drwxr-sr-x 3 1000 zym 4096 …Run Code Online (Sandbox Code Playgroud) 这打印空白:
docker run --rm --env HELLO="world" ubuntu:18.04 bash -c "echo $HELLO"
Run Code Online (Sandbox Code Playgroud)
但是这有效:
docker run --rm -it --env HELLO="world" ubuntu:18.04 bash
# in the container
echo $HELLO
Run Code Online (Sandbox Code Playgroud)
HELLO 不过似乎传递给了容器:
docker run --rm --env HELLO="world" ubuntu:18.04 env
Run Code Online (Sandbox Code Playgroud)
为什么第一个命令没有看到HELLO?我错过了什么?
所以最近(9 月 5 日)Alpine Linux 包 repo 更新为 postgresql-client 12.4
我在我的 Dockerfile ( apk add postgresql-client=~12.3) 中引用了 12.3 版。现在不能安装那个版本吗?
我想更新我的时间和条款,为什么我现在要被迫更新?我可以添加另一个存储库以使用旧版本吗?
谢谢
alpine-linux ×10
docker ×7
java ×2
acl ×1
apache-kafka ×1
bash ×1
cron ×1
gcc ×1
kafka-python ×1
linux ×1
passwords ×1
python ×1
python-3.x ×1
ssh ×1
termux ×1
tls1.2 ×1
ubuntu ×1