我有一个CentOS 7.0主机Docker版本19.03.4,已安装版本9013bf583a。我正在尝试创建一个简单的Docker映像
我有一个以下Docker文件。
FROM alpine:edge
MAINTAINER javaonfly
RUN apk update && apk add --no-cache openjdk8
(请注意,我已根据下面的LinPy给出的答案将RUN命令更新为具有“更新”) 在上面的docker文件中,我只是使用alpine:edge作为基本docker容器,然后使用openjdk8更新它。然后执行以下命令
sudo docker build --network=host --file=docker.txt --tag=myrep/image1 --rm=true .
我看到以下输出
Sending build context to Docker daemon 87.04MB
Step 1/3 : FROM alpine:edge
---> 7eacb6761fa1
Step 2/3 : MAINTAINER javaonfly
---> Using cache
---> 77818d634212
Step 3/3 : RUN apk update && add --no-cache openjdk8
---> Running in d438f2522d6a
fetch http://dl-cdn.alpinelinux.org/alpine/edge/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/edge/community/x86_64/APKINDEX.tar.gz
ERROR: http://dl-cdn.alpinelinux.org/alpine/edge/main: network error (check Internet connection and firewall)
WARNING: Ignoring APKINDEX.066df28d.tar.gz: No such file or directory
ERROR: http://dl-cdn.alpinelinux.org/alpine/edge/community: network error (check Internet connection and firewall)
WARNING: Ignoring APKINDEX.b53994b4.tar.gz: No such file or directory
2 errors; 14 distinct packages available
The command '/bin/sh -c apk update && add --no-cache openjdk8' returned a non-zero code: 2
在主机上,我可以成功运行命令docker run hello-world。我也可以从主机ping到www.google.com。但是,看来alpine:edge容器无法连接到Internet。
我还使用此命令将shell装进了alpine:edge容器中,并在外壳程序内执行了命令ping www.google.com,但是ping被卡住了,没有结果。
sudo docker run -it --rm alpine:edge
以下是alpine:edge shell中的 ifconfig 命令的结果
eth0 Link encap:Ethernet HWaddr 02:42:C0:A8:DC:01
inet addr:192.168.220.1 Bcast:192.168.220.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:9 errors:0 dropped:0 overruns:0 frame:0
TX packets:7 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:698 (698.0 B) TX bytes:630 (630.0 B)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
以下是主机上 ip addr show 命令的结果。
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:50:56:bf:b9:c6 brd ff:ff:ff:ff:ff:ff
inet 10.211.164.24/32 brd 10.211.164.24 scope global noprefixroute ens33
valid_lft forever preferred_lft forever
inet6 fe80::250:56ff:febf:b9c6/64 scope link noprefixroute
valid_lft forever preferred_lft forever
16: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
link/ether 02:42:6f:8a:2e:79 brd ff:ff:ff:ff:ff:ff
inet 192.168.220.2/24 brd 192.168.220.255 scope global docker0
valid_lft forever preferred_lft forever
inet6 fe80::42:6fff:fe8a:2e79/64 scope link
valid_lft forever preferred_lft forever
我在SO中遇到了许多与此问题相关的问题,但没有一个问题解决了我的问题。
答案 0 :(得分:3)
同样的问题。
CentOS主机上的Docker版本19.03.8。
从容器内部:
sudo ln -s /usr/bin/python3 /usr/bin/python
Dockerfile-jdk8:
docker build --network=host --file=Dockerfile-jdk8 --tag=alpine-jdk:base --rm=true .
答案 1 :(得分:0)
尝试先update
:
FROM alpine:edge
MAINTAINER javaonfly
RUN rm -rf /var/cache/apk/* && rm -rf /tmp/*
RUN apk update && apk add --no-cache openjdk8
答案 2 :(得分:0)
我已经解决了这个问题。我的主机在代理服务器后面。似乎docker build命令还需要提及代理服务器。我执行了以下命令,解决了我的问题。
sudo docker build --build-arg http_proxy=http://proxyserver:8080 --build-arg https_proxy=https://proxyserver:8080 --file=dockerfile.txt --tag=myrep/image1 --rm=true .