docker 镜像 alpine 无法联网

alpine docker 镜像无法联网出现如下错误:

ERROR: https://mirrors.ustc.edu.cn/alpine/v3.15/main: temporary error (try again later) WARNING: Ignoring https://mirrors.ustc.edu.cn/alpine/v3.15/main: No such file or directory 3069277072:error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed:ssl/statem/statem_clnt.c:1914:

基础的 docker 镜像是~ python:3.6-alpine ~

stack overflow 上看到一个解答

docker can't build because of alpine error - Stack Overflow

  1. 使用~ ~docker build . --network local 进行构建--错误仍在
  2. 添加~ 8.8.8.8 ~到文件 /etc/resolv.conf 并重启 docker--错误仍在

思路:启动一个基础 docker 容器,并进入查找错误原因

  1. 启动并进入容器
    docker run -it python:3.6-alpine /bin/sh 
  2. 执行 Dockerfile 文件里的命令
    apk 安装及更新时出错
    使用~ ping 命令测试网络连通性,出错 ping: clock_gettime(MONOTONIC) failed 
    使用
     nc ~命令连接外部服务器,可以连接 ip,不能连接域名
    猜想应该是域名解析的问题

对 alpine 不熟,换一个其他的基础容器

使用镜像~ python:3.6 ~,启动镜像后使用 pip 时报错

Fatal Python error: Py_Initialize: can't initialize time PermissionError: [Errno 1] Operation not permitted Current thread 0xb6fda010 (most recent call first): Aborted (core dumped) # pip Fatal Python error: Py_Initialize: can't initialize time PermissionError: [Errno 1] Operation not permitted Current thread 0xb6f12010 (most recent call first): Aborted (core dumped)

比较了一下两个 python 镜像的大小

python 3.6 a3bba401d788 2 weeks ago 696MB python 3.6-alpine dc8c4f7b64b7 2 weeks ago 34.8MB

还是用~ alpine ~版本的吧

域名解析问题

搜到这里,说要将~ /etc/resolv.conf 文件中的 ndots ~注释掉

进入容器查看~ /etc/resolv.conf 文件,并没有字符 ndots ~

搜索 ping 的错误~ ping: clock_gettime(MONOTONIC) failed ~

找到了这里,有三种解决方法

  1. 安装一个软件包
    wget http://ftp.us.debian.org/debian/pool/main/libs/libseccomp/libseccomp2_2.4.4-1~bpo10+1_armhf.deb && sudo dpkg -i libseccomp2_2.4.4-1~bpo10+1_armhf.deb
    下载时发现 2.4.4 版本已经没了,于是下载 2.5.1 版本
    安装后仍然时间还不对,安装前是 1970 年,安装后变成了 2071 年
  2. 第二个方法一样,不过是添加源安装软件
  3. 方法三要更新树莓派的系统

方法 2 和方法 3 需要添加源或更新系统,不想搞太多源,也懒得重新安装

又搜了一下,看到这里,有人提示添加~ --security-opt seccomp=unconfined ~

测试一下

❯ docker run -it --rm --security-opt seccomp=unconfined python:3.6-alpine ping baidu.com PING baidu.com (220.181.38.148): 56 data bytes 64 bytes from 220.181.38.148: seq=0 ttl=48 time=45.827 ms 64 bytes from 220.181.38.148: seq=1 ttl=48 time=47.090 ms

网络可以 ping 通了,应该可行

但是使用~ docker build ~时,出现了问题

❯ docker build . --security-opt seccomp=unconfined Error response from daemon: The daemon on this platform does not support setting security options on build

系统无法使用此选项

从其它系统构建镜像后导出

docker 镜像保存:

docker save 0d33 > proxy_pool.tar ~

docker 镜像导入:

docker load < proxy_pool.tar ~

两个机器架构不同

按照这里进行跨平台构建即可