有一个应用是这样安装的,以root身份登陆vps(debian11):
#编译准备 apt install git cvs zlib1g-dev make gcc -y #编译安装libowfat cvs -d :pserver:cvs@cvs.fefe.de:/cvs -z9 co libowfat cd libowfat make make install #编译安装opentracker git clone git://erdgeist.org/opentracker cd ../opentracker make make install #将opentracker设置成一个service, 端口设置为6881 mv opentracker /usr/bin cd .. cat <<EOF >/etc/systemd/system/opentracker.service [Unit] Description=opentracker server [Service] User=root ExecStart=/usr/bin/opentracker -p 6881 -P 681 Restart=on-abort LimitCORE=infinity LimitNOFILE=infinity LimitNPROC=infinity [Install] WantedBy=multi-user.target EOF #为端口6881打开防火墙 apt install ufw ufw allow 6881 #启动service systemctl enable /etc/systemd/system/opentracker.service systemctl start opentracker
我可否为这个应用制作一个docker镜像呢?用docker run来达到我上面那些代码的目的?
报错了
sudo docker build . -t opentracker:v1 [+] Building 44.7s (3/3) FINISHED docker:default => [internal] load .dockerignore 3.0s => => transferring context: 2B 0.1s => [internal] load build definition from dockerfile 3.5s => => transferring dockerfile: 445B 0.0s => ERROR [internal] load metadata for docker.io/library/debian:11 39.3s ------ > [internal] load metadata for docker.io/library/debian:11: ------ dockerfile:8 -------------------- 6 | RUN cd opentracker && make 7 | 8 | >>> FROM debian:11 9 | COPY --from=builder /opentracker/opentracker /opt 10 | EXPOSE 6881 -------------------- ERROR: failed to solve: debian:11: failed to do request: Head "https://docker.m.daocloud.io/v2/library/debian/manifests/11?ns=docker.io": socks connect tcp 127.0.0.1:8080->docker.m.daocloud.io:443: EOF
我的镜像源
cat /etc/docker/daemon.json { "registry-mirrors": [ "https://docker.m.daocloud.io", "https://dockerproxy.com", "https://docker.mirrors.ustc.edu.cn", "https://docker.nju.edu.cn", "http://hub-mirror.c.163.com" ] }
我的本地代理可以使用
curl --socks5-hostname 127.0.0.1:10800 -s -w "%{http_code}\n" -o /dev/null www.baidu.com 200
在构建镜像时,使用代理
sudo docker build . -t opentracker:v1 --build-arg https_proxy=socks5://127.0.0.1:10800 [+] Building 51.4s (3/3) FINISHED docker:default => [internal] load .dockerignore 0.8s => => transferring context: 2B 0.0s => [internal] load build definition from dockerfile 0.5s => => transferring dockerfile: 445B 0.0s => ERROR [internal] load metadata for docker.io/library/debian:11 49.0s ------ > [internal] load metadata for docker.io/library/debian:11: ------ dockerfile:8 -------------------- 6 | RUN cd opentracker && make 7 | 8 | >>> FROM debian:11 9 | COPY --from=builder /opentracker/opentracker /opt 10 | EXPOSE 6881 -------------------- ERROR: failed to solve: debian:11: failed to do request: Head "https://docker.m.daocloud.io/v2/library/debian/manifests/11?ns=docker.io": socks connect tcp 127.0.0.1:8080->docker.m.daocloud.io:443: EOF
还是报错
可以,我按照你的脚本写了下面这个Dockerfile,如下:
# 这是一个多阶段构建的Dockerfile,这一部分是安装编译环境,和进行编译。 FROM debian:11 as builder RUN apt update && apt install -y git cvs zlib1g-dev make gcc RUN cvs -d :pserver:cvs@cvs.fefe.de:/cvs -z9 co libowfat RUN cd libowfat && make && make install RUN git clone git://erdgeist.org/opentracker RUN cd opentracker && make # 这个阶段是打包镜像,将上一个阶段编译出来的二进制文件拷贝到一个新的镜像中,目的是为了降低镜像的大小。 FROM debian:11 COPY --from=builder /opentracker/opentracker /opt EXPOSE 6881 ENTRYPOINT [ "/opt/opentracker" ] CMD [ "-p", "6881", "-P", "681" ]
复制上面的内容,重命名为Dockerfile,放到任意一个空目录,然后在这个目录下执行
docker build . -t opentracker:v1
完成之后会生成一个名为opentracker:v1的镜像