#独家
如何包装成一个docker镜像?

2023-07-22 0 3,861

有一个应用是这样安装的,以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的镜像

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

1. JK下载官网所有资源来源于开发团队,加入会员即可下载使用!如有问题请联系右下角在线客服!
2. JK下载官方保障所有软件都通过人工亲测,为每位会员用户提供安全可靠的应用软件、游戏资源下载及程序开发服务。
3. JK开发团队针对会员诉求,历经多年拥有现今开发成果, 每款应用程序上线前都经过人工测试无误后提供安装使用,只为会员提供安全原创的应用。
4. PC/移动端应用下载后如遇安装使用问题请联系右下角在线客服或提交工单,一对一指导解决疑难。

JK软件下载官网 技术分享 如何包装成一个docker镜像? https://www.jkxiazai.com/2179.html

JK软件应用商店是经过官方安全认证,保障正版软件平台

相关资源

官方客服团队

为您解决烦忧 - 24小时在线 专业服务