- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我正在尝试在运行 Go 二进制文件的 Docker 容器中进行 HTTPS 调用。这给了我以下错误:
x509: failed to load system roots and no roots provided
查了一下,问题似乎是 BusyBox docker 镜像没有根 CA 证书。从 StackOverflow 上的其他答案看来,最好的方法是将 CA 根目录挂载到 /etc/ssl/certs
容器目录中。
要在本地进行测试,挂载主机的根 CA 证书是有意义的。在生产中运行时(我使用 Google Container Engine),我不确定如何指定根 CA 证书。我需要自己创建一个吗?或者 GKE 中是否有我可以重复使用的现有证书?
最佳答案
您可以有多种选择
从主机共享证书
正如您所指出的,您可以从主机共享 /etc/ssl/certs
。
使用带有证书的busybox
您可以使用像 odise/busybox-curl
这样已经安装了证书的图像。
为此使用 docker-compose 和共享卷
这是一种更好的方法,因为它不需要您依赖主机
version: '2'
services:
busybox:
image: busybox
command: sleep 1000
volumes:
- certificates:/etc/ssl/certs:ro
certifcate_installer:
image: alpine
command: sh -c 'apk update && apk add ca-certificates'
volumes:
- certificates:/etc/ssl/certs
volumes:
certificates:
使用多阶段 Dockerfile 构建它
FROM alpine as certs
RUN apk update && apk add ca-certificates
FROM busybox
COPY --from=certs /etc/ssl/certs /etc/ssl/certs
然后像普通文件一样构建它
vagrant@vagrant:~/certs$ docker build -t busyboxcerts .
Sending build context to Docker daemon 49.66kB
Step 1/4 : FROM alpine as certs
---> 4a415e366388
Step 2/4 : RUN apk update && apk add ca-certificates
---> Running in 0059f93b5fc5
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
v3.5.2-131-g833fa41a4d [http://dl-cdn.alpinelinux.org/alpine/v3.5/main]
v3.5.2-125-g9cb91a548a [http://dl-cdn.alpinelinux.org/alpine/v3.5/community]
OK: 7966 distinct packages available
(1/1) Installing ca-certificates (20161130-r1)
Executing busybox-1.25.1-r0.trigger
Executing ca-certificates-20161130-r1.trigger
OK: 5 MiB in 12 packages
---> 1a84422237e4
Removing intermediate container 0059f93b5fc5
Step 3/4 : FROM busybox
---> efe10ee6727f
Step 4/4 : COPY --from=certs /etc/ssl/certs /etc/ssl/certs
---> af9936f55fc4
Removing intermediate container 1af54c34a5b5
Successfully built af9936f55fc4
Successfully tagged busyboxcerts:latest
vagrant@vagrant:~/certs$ docker run busyboxcerts:latest ls /etc/ssl/certs
02265526.0
024dc131.0
03179a64.0
有关多阶段构建的更多详细信息,请参阅 https://docs.docker.com/engine/userguide/eng-image/multistage-build/#before-multi-stage-builds
所有方法都有各自的优缺点。我个人更喜欢最后一个或倒数第二个方法
关于ssl - 如何在运行 Go 的 Busybox Docker 容器中进行 HTTPS 调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45388934/
我正在尝试将“join”命令安装到我的 yocto 镜像中。我已经安装了 busybox,它没有 join 功能,但有 coreutils 的子集。 Coreutils 确实具有 join 功能,因此
我已经为我的嵌入式 Linux 剥离了 busy box。目前 busy box 仅支持 ps -w 选项。 我需要对应用程序的 CPU 和内存使用情况进行采样,并且采样应该至少每秒 5 个。 Top
我想在 BusyBox 服务器上启用 SSH 服务(目前我只能通过 Telnet 连接),所以我想,我需要编译 SSH 服务器,并将它发送到 BusyBox 路由器。所以我的问题是 - 如何创建 SS
buildroot 支持从 git repo 下载包。但是我的 git repo 包含子模块。 如何命令 buildroot 下载带有子模块的包? 最佳答案 自~ July 2016您可以为包启用子模
我正在使用 MobaXterm 便携版。 我发现了一个奇怪的设置,总结在这里。 /bin 中的外部命令工作正常。例如,使用 /bin/ssh.exe我可以 ssh好的。 内部命令是 “重定向”到bus
我是Docker的新手 我已经运行了 sudo docker run --interactive --tty --link web:web --name web_test busybox:lates
我在Kubernetes中创建了一个命名空间,并尝试使用以下命令创建一个容器: kubectl run busybox -it ----image=busybox -- sh 但是现在,每次我使用ku
我尝试在带有 PowerPc 的嵌入式系统上安装 BusyBox 1.20.2。起初我想尝试使用默认配置。所以这是命令 make defconfig make 这是结果: ma-bash-3.2# m
busybox 是否以共享库形式提供?我想以编程方式使用单个应用程序,而不是使用 system()。我听说过 libbusybox 和 libbb,但找不到任何文档。 最佳答案 存在名为 libbus
最近,我尝试按照“Pro Linux Embedded Systems”一书中提供的步骤为 MIPS 架构构建 busybox。事先,我已经成功安装和配置了 crosstool-ng 以使用 MIPS
我在/etc/inittab 中运行 BusyBox ::sysinit:/etc/init.d/rcS rcS 脚本在启动时调用/etc/rc.d/中的所有启动脚本。 如何可能通过在调用 BusyB
我想知道如何知道Busybox的版本。搜索互联网我发现这段代码: public void busybox()throws IOException { /* *
我正在开发一些在 Linux/BSD/Mac/Windows 上运行的 bash 脚本。我想将它们移植到 busybox 环境,让它们在 android 终端模拟器(如 termux)中运行。 获得
在构建 busybox 时,我发现一些源文件包含 linux 内核头文件。我添加了#define __KERNEL__ 来选择头文件行的某些部分。我还在内核头文件中添加了 #define _BUSYB
Busybox 不包含传统的 Linux"file"命令。有没有其他方法可以检测文件是二进制还是ascii?谢谢 最佳答案 你可以尝试使用grep。该线程包含使用 grep 命令的一些变体:https
我遇到了看起来有点奇怪的情况。 基础机器是 Ubuntu 18.04。我正在尝试创建一个自定义 initramfs + init 脚本,以与与 qemu 实例一起使用的自定义编译内核一起使用。 从我用
嵌入式 Linux 上的 Busybox,SSH 命令。 rm 命令只删除当前目录中的文件,还是也删除子目录中的文件?这是目录结构: ls -la total 5 drwxr-xr-x 3 r
我需要我的 docker 容器中的用户。我的构建来自缺少 groupadd 的 busybox 图像,我尝试使用 apt-get 添加它,但它也丢失了。我需要将什么添加到我的 Dockerfile 才
我在我的嵌入式 linux 板上安装了 busybox 作为“入门”包,我还需要使用 iptables 来配置一些防火墙规则。 有没有办法从 busybox shell 访问 iptables? 否则
我正在使用 Busybox 测试和嵌入 linux CPE; BusyBox v1.00 (2012.07.10-03:48+0000) multi-call binary 我想尝试使用盒子上所有可用
我是一名优秀的程序员,十分优秀!