如何将给定的Docker create命令转换为Dockerfile?求技术协助
将docker create命令转换为Dockerfile的实现方案
先给出对应转换后的Dockerfile内容,再逐一解释各部分对应原命令的逻辑:
# 基于原命令中的基础镜像构建 FROM <dockerInstance> # 设置环境变量PUID和PGID,对应原命令中的-e参数 ENV PUID=1001 ENV PGID=1001 # 暴露容器内的端口,对应原命令中的-p参数里的容器侧端口 EXPOSE <PORT> # 声明容器内的持久化挂载点,对应原命令中-v参数的容器侧路径 VOLUME ["/config", "/mnt/My_Vol_1", "/mnt/My_Vol_2", "/downloads"]
注意事项(原命令中无法通过Dockerfile定义的参数)
--name=<NAME>:容器名称属于运行时配置,启动容器时通过docker run --name=<NAME>指定即可--restart=always:重启策略是运行时参数,启动时添加--restart=always参数-p <PORT>:<PORT>:Dockerfile的EXPOSE仅声明容器内端口,主机侧端口映射需在运行时通过-p <PORT>:<PORT>指定-v /dev/rtc:/dev/rtc:ro:设备挂载属于运行时配置,启动时需手动添加该参数- 主机侧目录挂载(如
/var/lib/<dockerInstance>:/config等):Dockerfile仅定义容器内的挂载点,主机侧路径需要在运行时通过-v参数指定,原命令中的这类映射都要在启动时手动添加
最终启动命令示例
构建镜像后,整合所有运行时参数的启动命令如下:
docker run -d \ --name=<NAME> \ --restart=always \ -p <PORT>:<PORT> \ -v /dev/rtc:/dev/rtc:ro \ -v /var/lib/<dockerInstance>:/config \ -v /mnt/<My_Vol_1>:/mnt/<My_Vol_1> \ -v /mnt/<My_Vol_2>:/mnt/<My_Vol_2> \ -v /mnt/<My_Vol_3>:/mnt/<My_Vol_1> \ -v /mnt/<My_Vol_4>:/downloads \ <构建后的镜像名称>
内容的提问来源于stack exchange,提问作者Takuhii
相关产品推荐
相关产品推荐

