在Docker上安装Crystal:如何在Docker文件中把Crystal资源库添加到Docker上
Dockerfile (摘录)
ENV APT_KEY_DONT_WARN_ON_DANGEROUSAGE=DontWarn
RUN apt-get update && apt-get install -y\.
software-perties-common (软件属性)。
build-essential(重要的)。
libevent-dev
libssl-dev
libxml2-dev
libyaml-dev
libgmp-dev
libreadline-dev
apt-transport-https
iputils-ping
git\
aptitude (能力)。
nano (纳米)。
openssh-server (开放服务器)。
&& apt-key adv -keyserver keys.gnupg.net -recv-keys 09617FD37CC06B54\a
&& add-apt-repository 'deb https://dist.crystal-lang.org/apt crystal main' (水晶主)。
&& apt-get update \
&& apt-get install -y crystal \
&& rm -rf /var/lib/apt/lists/* \ rm -rf
&& mkdir /root/.ssh
ǞǞǞ env apt_key_dont_warn_on_dangerouse_usage 是 需要 为使apt-key adv不因不是从终端运行而窒息。
要添加Crystal资源库,需要安装密钥
W: GPG错误。 https://dist.crystal-lang.org/apt crystal InRelease:以下签名无法被验证,因为公钥不可用。no_pubkey 09617fd37cc06b54
E: 储存库的'https://dist.crystal-lang.org/apt crystal InRelease'没有签名。
当你使用Dockerfile添加密钥时,你可能会得到以下错误信息。
正在执行。/tmp/apt-key-gpghome.daecBAEPSJ/gpg.1.sh -keyserver keys.gnupg.net -recv-keys 09617FD37CC06B54
gpg: 密钥服务器接收失败。无法分配请求的地址
这是由于 gpg 无法与 IPv6 地址绑定。因此,你必须
在你的主机上为Docker启用IPv6支持。
编辑/创建 /etc/docker/daemon.json
{ "ipv6": true, "fixed-cidr-v6":"2001:db8:1::/64" }
并重新启动docker服务。
Service docker restart
固定的cidr-v6是 不 可选为 https://docs.docker.com/config/daemon/ipv6/ 可能导致你相信。
测试对IPv6的支持。
docker run -it alpine ash -c "ip -6 addr show dev eth0; ip -6 route show"
如果它没有返回任何信息,那么ipv6就没有启用。
启用IPv6时的输出示例:
max@morpheus:~/docker$ docker run -it alpine ash -c "ip -6 addr show dev eth0; ip -6 route show"
163: eth0@if164: mtu 1500 状态 UP
inet6 2001:db8:1::242:ac11:2/64 scope global flags 02
永远的有效期限首选期限
inet6 fe80::42:acff:fe11:2/64 范围链接暂定
永远的有效期限首选期限
2001:db8:1::/64 dev eth0 metric 256
fe80::/64 dev eth0 metric 256
默认通过 2001:db8:1::1 dev eth0 metric 1024
ff00::/8 dev eth0 metric 256
启动Docker应用容器引擎失败。
tail -n 50 /var/log/syslog
Jan 11 21:39:35 morpheus dockerd[697]: time="2019-01-11T21:39:35.770500563+01:00″ level=warning msg="Your kernel does not support swap memory limit"
Jan 11 21:39:35 morpheus dockerd[697]: time="2019-01-11T21:39:35.770617796+01:00″ level=warning msg="Your kernel does not support cgroup rt period"
Jan 11 21:39:35 morpheus dockerd[697]: time="2019-01-11T21:39:35.770656361+01:00″ level=warning msg="Your kernel does not support cgroup rt runtime"
Jan 11 21:39:40 morpheus dockerd[697]: time="2019-01-11T21:39:40.800355314+01:00″ level=info msg="默认桥(docker0)被分配了一个IP地址172.17.0.0/16。守护者选项-bip可以用来设置一个首选的IP地址"
Jan 11 21:39:40 morpheus dockerd[697]。启动守护进程出错。初始化网络控制器错误。 创建默认 "桥接 "网络出错:在默认值中找不到可用的、不重叠的IPv6地址池来分配给网络。
如果docker守护进程没有启动,请查看/var/log/syslog来寻找原因。
在这里,它可能意味着 你没有添加 fixed-cidr-v6 正如我在上面指出的那样!Docker,从几个版本开始,似乎需要这个。在GitHub上有一个关于它的问题。
而这一切是为了......。
参考文献
https://github.com/inversepath/usbarmory-debian-base_image/issues/9
https://docs.docker.com/v17.09/engine/userguide/networking/default_network/ipv6/