我在企业互联网上。我们只能使用某些端口/通过代理连接。
我正在尝试运行以下简单的 docker 命令:
docker build -t MY_USERNAME/myfirstapp .
我的码头工人文件包含这个:
# our base image
FROM alpine:3.5
# Install python and pip
**RUN apk add --update py2-pip**
# install Python modules needed by the Python app
COPY requirements.txt /usr/src/app/
RUN pip install --no-cache-dir -r /usr/src/app/requirements.txt
# copy files required for the app to run
COPY app.py /usr/src/app/
COPY templates/index.html /usr/src/app/templates/
# tell the port number the container should expose
EXPOSE 5000
# run the application
CMD ["python", "/usr/src/app/app.py"]
它在RUN apk add --update py2-pip
失败并显示错误
fetch http://dl-cdn.alpinelinux.org/alpine/v3.5/main/x86_64/APKINDEX.tar.gz
ERROR: http://dl-cdn.alpinelinux.org/alpine/v3.5/main: temporary error (try again later)
WARNING: Ignoring APKINDEX.c51f8f92.tar.gz: No such file or directory
我可以通过卷曲此地址看出它有效,因此这一定是代理/端口问题。
如何使此执行符合我的端口/代理限制?
多谢。
docker build --network=host -t MY_USERNAME/myfirstapp .
作品:)。
您可以使用代理设置,例如
docker build --build-arg http_proxy=http://x.x.x.x:y --build-arg https_proxy=http://x.x.x.x:y -t MY_USERNAME/myfirstapp .
我总是建议使用 docker-compose,因为这是定义构建参数或运行容器、映射卷、端口等的标准化方法。 在docker-compose.yaml中,代理定义如下所示:
version: '3'
services:
main:
build:
context: .
args:
- http_proxy
- https_proxy
- no_proxy
image: MY_USERNAME/myfirstapp
使用此配置,您将传递主机系统上定义的三个代理设置的定义。 调用 docker-compose 很容易,只需在 docker-compose.yaml 所在的目录中docker-compose build
即可。