失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 【Docker】自定义dockerfile构建容器镜像并发布

【Docker】自定义dockerfile构建容器镜像并发布

时间:2024-08-21 01:02:16

相关推荐

【Docker】自定义dockerfile构建容器镜像并发布

0 前言

此篇博客参考此b站视频完成,是一个有趣的小实践。

1 项目原址

准备工作:在github上下载一个zip压缩包

网址:恋爱倒计时静态网页

2 从0开始

2.1 创建项目文件夹并解压源项目等操作

root@master:/home/hqc# cd docker_learning/root@master:/home/hqc/docker_learning# mkdir love-webroot@master:/home/hqc/docker_learning# lsDockerfile基础教程.pdf lesserror-lovestory.zip love-webroot@master:/home/hqc/docker_learning# unzip lesserror-lovestory.zip Archive: lesserror-lovestory.zip850065d4f6577417c539d2d1bd5f4a8512a8379ccreating: lesserror-lovestory/inflating: lesserror-lovestory/README.md inflating: lesserror-lovestory/lovestory.html # 解压文件包root@master:/home/hqc/docker_learning# lsDockerfile基础教程.pdf lesserror-lovestory lesserror-lovestory.zip love-webroot@master:/home/hqc/docker_learning# mv lesserror-lovestory love# 将lesserror-lovestory 重命名为love方便操作root@master:/home/hqc/docker_learning# lsDockerfile基础教程.pdf lesserror-lovestory.zip love love-webroot@master:/home/hqc/docker_learning# mv love love-web/# 将源码文件夹移入项目文件夹root@master:/home/hqc/docker_learning# lsDockerfile基础教程.pdf lesserror-lovestory.zip love-webroot@master:/home/hqc/docker_learning# cd love-web/# 进入项目文件夹

2.2 编写Dockerfile文件

每句均加以详细说明

root@master:/home/hqc/docker_learning/love-web# vim DockerfileFROM nginx # 基于nginx最新版镜像进行制作,若之前未拉取过会进行拉取LABEL maintainer="hqc mail:2790051454@>" # 非必要,写的是作者联系方式RUN mkdir -p /love-web \&& rm /etc/nginx/conf.d/default.conf # 应该是删除nginx中的配置文件(这两句指令都是在nginx中进行操作)copy ./love/* /love-web/ # 将源码文件夹中的所有文件复制到项目文件夹(./代表在当前目录下)copy love-ui.conf /etc/nginx/conf.d/default.conf # 将前端ui配置文件作为默认配置文件供前端访问expose 80 # 暴露80端口(nginx一般端口都是80)RUN /bin/bash -c 'echo init ok' # 运行,并打印自定义信息

2.3 编写网页UI配置文件

root@master:/home/hqc/docker_learning/love-web# vim love-ui.confserver {listen 80;# 监听80端口location / {# 匹配文件路径root /love-web/;# 源码文件存放于root目录下的/love-web文件家路径下index lovestory.html; # 源码文件}}root@master:/home/hqc/docker_learning/love-web# lsDockerfile love love-ui.conf

2.4 创建镜像

注意打好标签版本等信息

root@master:/home/hqc/docker_learning/love-web# docker build -t love-web:v1.0 .# 一定注意这条命令最后的.号Sending build context to Docker daemon 9.216kBStep 1/7 : FROM nginx---> ea335eea17abStep 2/7 : LABEL maintainer="hqc mail:2790051454@>"---> Running in b52a15fe34f9Removing intermediate container b52a15fe34f9---> 64209cf11e63Step 3/7 : RUN mkdir -p /love-web&& rm /etc/nginx/conf.d/default.conf---> Running in d8f6e2135546Removing intermediate container d8f6e2135546---> 7f76ec448b61Step 4/7 : copy ./love/* /love-web/---> 57aacfd07403Step 5/7 : copy love-ui.conf /etc/nginx/conf.d/default.conf---> 322838767e27Step 6/7 : expose 80---> Running in c0b8f67f130bRemoving intermediate container c0b8f67f130b---> c8fb4c2f3a95Step 7/7 : RUN /bin/bash -c 'echo init ok'---> Running in 9dfe7d092059init okRemoving intermediate container 9dfe7d092059---> e0be19d59ea5Successfully built e0be19d59ea5 # 最终容器IDSuccessfully tagged love-web:v1.0root@master:/home/hqc/docker_learning/love-web# docker imagesREPOSITORY TAG IMAGE ID CREATEDSIZElove-webv1.0e0be19d59ea5 56 seconds ago 141MBnginx latest ea335eea17ab 47 hours ago141MB

2.5 运行镜像

注意映射的端口不得重复,或者将之前映射的端口关闭即可再次使用

root@master:/home/hqc/docker_learning/love-web# docker run -d -p 0408:80 love-web:v1.0ab910a423e8fdd40067edb8833195e5aaf701330c36f318e6b6859c70408fb67docker: Error response from daemon: driver failed programming external connectivity on endpoint amazing_swartz (00fb05f60e378bafab2d918e75c6d7e8f328b667afb4407b955be8843c2a1223): Bind for 0.0.0.0:408 failed: port is already allocated.# 这里报错是因为前面验证nginx时已经将0408端口映射过了,因此无法重复映射root@master:/home/hqc/docker_learning/love-web# docker run -d -p 1008:80 love-web:v1.0689f30cb167fbd52435bcb0972b3f92ef5865e3d063ccfb6c66e2e5011e24fe7# 更换端口号之后便成功了!

3 访问验证

ifconfig查询该网络的IP地址,并加上映射的端口号便可以访问了。

成功!!!

如果觉得《【Docker】自定义dockerfile构建容器镜像并发布》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。