0 前言

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

1 项目原址

准备工作:在github上下载一个zip压缩包
网址:恋爱倒计时静态网页

2 从0开始

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

root@master:/home/hqc# cd docker_learning/
root@master:/home/hqc/docker_learning# mkdir love-web
root@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@qq.com>" # 非必要,写的是作者联系方式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@qq.com>"---> 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       CREATED          SIZElove-web     v1.0      e0be19d59ea5   56 seconds ago   141MBnginx        latest    ea335eea17ab   47 hours ago     141MB

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构建容器镜像并发布相关推荐

  1. Docker使用Dockerfile构建简单镜像

    Docker使用Dockerfile构建简单镜像 首先确保系统已经安装docker 构建镜像 安装基础镜像 sudo docker pull ubuntu 查看镜像是否已经拉取成功 REPOSITOR ...

  2. Dockerfile构建容器镜像 - 运维笔记

    在Docker的运用中,从下载镜像,启动容器,在容器中输入命令来运行程序,这些命令都是手工一条条往里输入的,无法重复利用,而且效率很低.所以就需要一 种文件或脚本,我们把想执行的操作以命令的方式写入其 ...

  3. Docker 使用Dockerfile构建tomcat镜像

    Dockerfile概念: 镜像的定制实际上就是定制每一层所添加的配置.文件.如果我们可以把每一层修改.安装.构建.操作的命令都写入一个脚本,用这个脚本来构建.定制镜像,那么之前提及的无法重复的问题. ...

  4. Docker 使用Dockerfile 构建Hadoop镜像与集群实例

    文章转自:https://cloud.tencent.com/developer/article/1084166 目录 获取centos7镜像 安装SSH 设置固定IP 构建Hadoop镜像 配置Ha ...

  5. docker使用DockerFile构建php镜像

    使用docker pull下来的php-fpm容器如果直接使用会提示缺少某些扩展 在容器内安装扩展后如果不小心删除掉容器重新打开run一次镜像又要再重新安装 所以最好是用 dockerfile 一次性 ...

  6. GCP发布Kaniko:在非特权容器和Kubernetes中构建容器镜像的工具

    \ 看新闻很累?看技术新闻更累?试试下载InfoQ手机客户端,每天上下班路上听新闻,有趣还有料! \ \\ Google发布了"Kaniko",一种用于在未授权容器或Kuberne ...

  7. kaniko-在k8s集群中构建容器镜像

    微信公众号搜索 DevOps和k8s全栈技术 ,即可关注公众号,也可扫描文章最后的二维码关注公众号,每天会分享技术文章供大家阅读参考哈~ 前言 通常情况下,我们在使用dockerfile构建镜像的时候 ...

  8. 用Dockerfile构建MySQL镜像并实现容器启动过程中MySQL数据库系统的初始化

    前一段时间就在研究用Dockerfile构建MySQL镜像并实现容器启动过程中MySQL数据库系统的初始化,但被一些无关紧要的事儿给耽误了,经过查阅<dockerfile最佳实践>及MyS ...

  9. Docker 从Dockerfile 构建镜像 :build 命令的用法

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. Dockerfile 创建完成后,可以使用 docker build 命令根据 Dockerfile ...

最新文章

  1. Flume-NG一些注意事项(转)
  2. HDU-6599 I Love Palindrome String(回文自动机+字符串hash)
  3. 【整理】使用云计算服务面临的几个安全问题
  4. android 系统gpu 调试_【资讯】高通公布首批可OTA更新GPU驱动手机:谷歌Pixel 4/三星S10在列...
  5. Docker查看应用的实际内存
  6. NS 2.35 柯志亨书-实验9笔记-队列管理机制
  7. (原)SCOR模型在化工行业的应用
  8. Lena.jpg 与图像处理的渊源
  9. 【工科数学分析】2021-10-01-工科数学分析叒复习(二)
  10. three.js 05-05 之 SphereGeometry 几何体
  11. 【Shawn-LeetCode】Two Sum
  12. 岁月让人从批判走向了建设
  13. ubuntu rar解压缩
  14. 达梦数据库dm7同构数据库的双向同步
  15. 初二因式分解奥数竞赛题_初中数学因式分解(含答案)竞赛题精选.doc
  16. 十字路口倒计时交通灯
  17. Android Intents Kotlin 教程
  18. Java 基础学习之类集框架 十 (SortedMap 接口)
  19. 一个字符导致oracle安装出现ora-12154
  20. Vue组件通讯的多种方式(个人记录)

热门文章

  1. 使用Profiler进行性能分析
  2. 「镁客·请讲」小不点刘筱璇:新制造时代,用3D打印让世界个性起来
  3. Rockchip_Developer_Guide_USB_FFS usb测试demo
  4. 【转载】浅析金庸武侠小说中的哲理意蕴
  5. windows--花里胡哨的文件图标
  6. MySQL系列教程(五)
  7. CTF之做题总结(一)
  8. 别人在直播怎么录下来
  9. 国考省考申论:归纳概括题,审题,找点,加工,书写,概括举措的案例
  10. 东北林业大学计算机教师,我校教师马超感动众网友