kizumi_header_banner_img
文章导读

DockerFile


avatar
Mortis-AveMuj1ca 2026年4月28日 76

https://www.zhihu.com/question/2032224626982564124/answer/2032385112063652329
背景:昨天买了一台8h8g服务器,打算开个mc服务器,综合考虑选择了目前基岩版-actions&stuff-只用考虑这一个组件即可,足够新鲜,好玩,简单。
但是minecraft基岩版只提供debian系列的包,不支持redhat系列。

我打算趁此次机会学学dockerfile,我删掉了你(AI)给我的注释,我试着自己解释这些,在解释时我一定会遇到模糊点,然后我向你提问。

#pull一个基础镜像,Ubuntu是Debian最好的孩子,而22.04是Ubuntu最好的版本之一,所以ubuntu22.04是最符合本次搭建的黄金版本。
FROM docker.xuanyuan.me/library/ubuntu:22.04

#设置环境变量
ENV DEBIAN_FRONTEND=noninteractive

#执行命令 建设完成后,由于换行,所以有 && \
RUN apt-get update && \
apt-get install -y wget unzip && \
rm -rf /var/lib/apt/lists/*

#不确定这个是什么。猜测:是设置工作路径,具体作用类似cd。但和cd不完全一样。
WORKDIR /bedrock-server

#添加一个源 还是类似wget? 能不能用RUN URL… /tmp/a.zip代替
ADD https://www.minecraft.net/bedrockdedicatedserver/bin-linux/bedrock-server-1.21.70.05.zip /tmp/bedrock-server.zip

#执行命令 解压
RUN unzip /tmp/bedrock-server.zip -d /bedrock-server && \
rm /tmp/bedrock-server.zip

#设置环境变量,刚才为什么不一下子全设置好?
ENV LD_LIBRARY_PATH=/bedrock-server

#暴漏端口,这个是udp的?你确定吗。我记得mc不是tcp吗?
EXPOSE 19132/udp

#执行命令?为什么这里不用RUN而是用CMD?
CMD [“./bedrock_server”]


验证我的模糊点理解是否到位:
WORKDIR 和 cd 的区别:
1,cd切换目录,这个改变只在那条指令内有效,退出后就会失效。
2,WORKDIR 会持续生效,确保后续所有命令都在同一个目录下执行,这能让你的构建过程更可靠、更清晰

ADD 和 COPY / wget 的区别:
ADD 更像一个“增强版 COPY”。它能通过 URL 下载文件,还能自动解压(但仅限本地压缩包)
完全可以用 RUN + wget/curl + rm 的组合代替 ADD。

CMD 和 RUN 的区别:
RUN 是死的。
CMD 是“默认开机任务”,如果你在docker run定义了任务,这个CMD就覆盖了。

EXPOSE 19132/udp 暴露端口,是基岩版(BE)正是基于 UDP 协议运行。而JE 使用 TCP 25565 端口。




评论(1)

查看评论列表
评论头像
218.11.110.151 2026年04月28日
1,v2rayA-Linux-ProxyTool:解决国内服务器不能认证基岩版。;2,炎火云70块钱8H8G服务器,咸鱼有,夯爆了。;3,微软-基岩-纯净版-服务器103.236.97.248:19132。

发表评论

表情 颜文字
插入代码