【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-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构建容器镜像并发布相关推荐
- Docker使用Dockerfile构建简单镜像
Docker使用Dockerfile构建简单镜像 首先确保系统已经安装docker 构建镜像 安装基础镜像 sudo docker pull ubuntu 查看镜像是否已经拉取成功 REPOSITOR ...
- Dockerfile构建容器镜像 - 运维笔记
在Docker的运用中,从下载镜像,启动容器,在容器中输入命令来运行程序,这些命令都是手工一条条往里输入的,无法重复利用,而且效率很低.所以就需要一 种文件或脚本,我们把想执行的操作以命令的方式写入其 ...
- Docker 使用Dockerfile构建tomcat镜像
Dockerfile概念: 镜像的定制实际上就是定制每一层所添加的配置.文件.如果我们可以把每一层修改.安装.构建.操作的命令都写入一个脚本,用这个脚本来构建.定制镜像,那么之前提及的无法重复的问题. ...
- Docker 使用Dockerfile 构建Hadoop镜像与集群实例
文章转自:https://cloud.tencent.com/developer/article/1084166 目录 获取centos7镜像 安装SSH 设置固定IP 构建Hadoop镜像 配置Ha ...
- docker使用DockerFile构建php镜像
使用docker pull下来的php-fpm容器如果直接使用会提示缺少某些扩展 在容器内安装扩展后如果不小心删除掉容器重新打开run一次镜像又要再重新安装 所以最好是用 dockerfile 一次性 ...
- GCP发布Kaniko:在非特权容器和Kubernetes中构建容器镜像的工具
\ 看新闻很累?看技术新闻更累?试试下载InfoQ手机客户端,每天上下班路上听新闻,有趣还有料! \ \\ Google发布了"Kaniko",一种用于在未授权容器或Kuberne ...
- kaniko-在k8s集群中构建容器镜像
微信公众号搜索 DevOps和k8s全栈技术 ,即可关注公众号,也可扫描文章最后的二维码关注公众号,每天会分享技术文章供大家阅读参考哈~ 前言 通常情况下,我们在使用dockerfile构建镜像的时候 ...
- 用Dockerfile构建MySQL镜像并实现容器启动过程中MySQL数据库系统的初始化
前一段时间就在研究用Dockerfile构建MySQL镜像并实现容器启动过程中MySQL数据库系统的初始化,但被一些无关紧要的事儿给耽误了,经过查阅<dockerfile最佳实践>及MyS ...
- Docker 从Dockerfile 构建镜像 :build 命令的用法
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. Dockerfile 创建完成后,可以使用 docker build 命令根据 Dockerfile ...
最新文章
- Flume-NG一些注意事项(转)
- HDU-6599 I Love Palindrome String(回文自动机+字符串hash)
- 【整理】使用云计算服务面临的几个安全问题
- android 系统gpu 调试_【资讯】高通公布首批可OTA更新GPU驱动手机:谷歌Pixel 4/三星S10在列...
- Docker查看应用的实际内存
- NS 2.35 柯志亨书-实验9笔记-队列管理机制
- (原)SCOR模型在化工行业的应用
- Lena.jpg 与图像处理的渊源
- 【工科数学分析】2021-10-01-工科数学分析叒复习(二)
- three.js 05-05 之 SphereGeometry 几何体
- 【Shawn-LeetCode】Two Sum
- 岁月让人从批判走向了建设
- ubuntu rar解压缩
- 达梦数据库dm7同构数据库的双向同步
- 初二因式分解奥数竞赛题_初中数学因式分解(含答案)竞赛题精选.doc
- 十字路口倒计时交通灯
- Android Intents Kotlin 教程
- Java 基础学习之类集框架 十 (SortedMap 接口)
- 一个字符导致oracle安装出现ora-12154
- Vue组件通讯的多种方式(个人记录)