Docker 使用 Dockerfile 构建自己的镜像
可以使用Dockerfile的配置文件方式进行构建自己的镜像
下面利用docker构建一个Caddy web服务器
构建脚本
Dockerfile有自己的命令,下面使用了一些比较常用的命令,更多的Dockerfile命令,可查看以下博文:
Dockerfile命令详解(超全版本)
Dockerfile文件内容
# 基础镜像Ubuntu
FROM ubuntu:latest
# 镜像作者信息
MAINTAINER zhoutao "zhoutao825638@vip.qq.com"
#RUN 命令执行脚本
RUN mkdir -p /opt/soft/caddy
RUN mkdir -p /usr/www/html
RUN echo "<h1>Hello,World!</h1>" >> /usr/www/html/index.html
# COPY 执行本地拷贝命令
COPY ./caddy /opt/soft/caddy/
COPY ./Caddyfile /opt/soft/caddy/
# 启动执行命令
CMD ["/opt/soft/caddy/caddy", "-conf","/opt/soft/caddy/Caddyfile"]
# 暴露端口
EXPOSE 80
Caddyfile文件内容
其中Caddyfile配置文件内容如下:
:80 {
gzip
root /usr/www/html
}
caddy文件可从caddy官方下载
构建命令
首先确认下文件结构
$ tree
.
├── caddy
├── Caddyfile
└── Dockerfile
- caddy 是Caddy的运行文件
- Caddyfile 是caddy的配置文件
- Dockerfile是构建docker的配置文件
然后开始构建image(注意切换到和Dockerfile同级目录)
docker build -t caddy_image:0.1 .
- 构建结果
第一次构建需要拉取ubuntu基础镜像,然后才开始构建
Sending build context to Docker daemon 20.12MB
Step 1/9 : FROM ubuntu:latest
latest: Pulling from library/ubuntu
124c757242f8: Pull complete
9d866f8bde2a: Pull complete
fa3f2f277e67: Pull complete
398d32b153e8: Pull complete
afde35469481: Pull complete
Digest: sha256:de774a3145f7ca4f0bd144c7d4ffb2931e06634f11529653b23eba85aef8e378
Status: Downloaded newer image for ubuntu:latest
---> cd6d8154f1e1
Step 2/9 : MAINTAINER zhoutao "zhoutao825638@vip.qq.com"
---> Running in 976ccb6d9fd0
Removing intermediate container 976ccb6d9fd0
---> c41619ec0682
Step 3/9 : RUN mkdir -p /opt/soft/caddy
---> Running in fea53d5e3b98
Removing intermediate container fea53d5e3b98
---> 2b84b490ac72
Step 4/9 : RUN mkdir -p /usr/www/html
---> Running in 2b6d3ef30fb2
Removing intermediate container 2b6d3ef30fb2
---> eef4e4e0584a
Step 5/9 : RUN echo "<h1>Hello,World!</h1>" >> /usr/www/html/index.html
---> Running in 9784c9f94636
Removing intermediate container 9784c9f94636
---> e2b8568e77c5
Step 6/9 : COPY ./caddy /opt/soft/caddy/
---> 7f5e675846bb
Step 7/9 : COPY ./Caddyfile /opt/soft/caddy/
---> e8fbed1ae131
Step 8/9 : CMD ["/opt/soft/caddy/caddy", "-conf","/opt/soft/caddy/Caddyfile"]
---> Running in a71772181530
Removing intermediate container a71772181530
---> 66b878cddbf6
Step 9/9 : EXPOSE 80
---> Running in 39741df7c755
Removing intermediate container 39741df7c755
---> 51c30425c00e
Successfully built 51c30425c00e
Successfully tagged caddy_image:0.1
运行容器
# docker运行容器
$ docker run -p 9090:80 -d --name caddy_9090 caddy_image:0.1
575c7966b1021de5fe95212cb09723e3256ad1153a8cd04a836ab171d40860ed
# 查看docker所有的容器
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
575c7966b102 caddy_image:0.1 "/opt/soft/caddy/cad…" 5 seconds ago Up 4 seconds 0.0.0.0:9090->80/tcp caddy_9090
访问测试
可以看到,当我访问80端口的时候,他会到/usr/www/html目录下寻找数据,而index.html正是我们在Dockerfile文件中的RUN命令写入的RUN echo "<h1>Hello,World!</h1>" >> /usr/www/html/index.html
$ curl -X GET http://localhost:9090/index.html
<h1>Hello,World!</h1>
Docker 使用 Dockerfile 构建自己的镜像的更多相关文章
- docker通过dockerfile构建JDK最小镜像,Docker导出导入镜像
docker通过dockerfile构建JDK最小镜像,Docker导出导入镜像 一.docker通过dockerfile构建JDK最小镜像 1.1 下载JRE 1.2 解压JRE,删除相关不需要文件 ...
- Docker使用Dockerfile构建新的镜像
构建镜像步骤; 1.创建Dockerfile文件,该文件是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明. vim Dockerfile //每一个指令都会在镜像上创建一个新 ...
- docker:Dockerfile构建LNMP平台
docker:Dockerfile构建LNMP平台 1.dockerfile介绍 Dockerfile是Docker用来构建镜像的文本文件,包含自定义的指令和格式.可以通过docker buil ...
- Docker 使用Dockerfile构建redis镜像
Dockerfile实现: FROM centos: MAINTAINER hongdada "hongdaqi159505@gmail.com" WORKDIR /home RU ...
- Docker 使用Dockerfile构建tomcat镜像
Dockerfile概念: 镜像的定制实际上就是定制每一层所添加的配置.文件.如果我们可以把每一层修改.安装.构建.操作的命令都写入一个脚本,用这个脚本来构建.定制镜像,那么之前提及的无法重复的问题. ...
- 使用dockerfile构建自己的镜像
CentOS Linux release 7.2.1511 Docker version 17.03.1-ce 首先应该了解docker镜像的分层机制,这个网上文章很多,简单说就是对镜像的每次修改都是 ...
- docker使用Dockerfile构建ssh容器
一.使用Dockerfile构建centos 1.创建 Dockerfile mkdir centos # 创建一个目录存放之后的Dockerfile,目录名无所谓 cd centos # 进入目录 ...
- Docker —— 使用 Dockerfile 制作 Jdk + Tomcat 镜像
一.准备好Jdk和Tomcat apache-tomcat-8.5.50.tar.gz jdk-8u212-linux-x64.tar.gz 注意: Jdk 和 Tomcat 记得从官网下载,否则制作 ...
- Docker build Dockerfile 构建镜像 - 二
Dockerfile 制作镜像 https://hub.docker.com/ 搜索需要镜像: https://hub.docker.com/_/centos/ 官方示例: centos:6 1.这里 ...
随机推荐
- 安全性测试:OWASP ZAP使用入门指南
免责声明: 本文意在讨论使用工具来应对软件研发领域中,日益增长的安全性质量测试需求.本文涉及到的工具不可被用于攻击目的. 1. 安全性测试 前些天,一则12306用户账号泄露的新闻迅速发酵,引起了购票 ...
- Synchronized锁在Spring事务管理下,为啥还线程不安全?
前言 只有光头才能变强. 文本已收录至我的GitHub仓库,欢迎Star:https://github.com/ZhongFuCheng3y/3y 大年初二,朋友问了我一个技术的问题(朋友实在是好学, ...
- synchronized关键字简介 多线程中篇(十一)
前面说过,Java对象都有与之关联的一个内部锁和监视器 内部锁是一种排它锁,能够保障原子性.可见性.有序性 从Java语言层面上说,内部锁使用synchronized关键字实现 synchronize ...
- 如何在ASP.NET Core中自定义Azure Storage File Provider
文章标题:如何在ASP.NET Core中自定义Azure Storage File Provider 作者:Lamond Lu 地址:https://www.cnblogs.com/lwqlun/p ...
- 判空、判等、转码的StringUtil
目录 StringUtil类 StringUtil类 import java.io.UnsupportedEncodingException; /** * 字符串工具 */ public class ...
- 安装windows 10到固态硬盘实践记录
1.前提 由于之前一直用的机械硬盘,电脑用了几年是越来越慢,所以打算买个SSD,装个新系统,其他的机械硬盘都当从盘用 2.准备工作 SSD :256G 3星的 WIN10正版光盘一张 外置光驱一个 3 ...
- windows server 2008 R2 Enterprise 系统安全配置
window 安全配置规则 一.开启防火墙 二.允许远程网络进行远程桌面连接 如果使用默认的远程端口的话,按照下图,允许远程桌面通过防火墙就行了: 如果你的远程端口号不是默认的,则需要按照(四)中新建 ...
- Could not load file or assembly……
今天在运行一个ASP.NET Core项目的时候发现这样的错误: 我一开始觉得这是个很简单的问题,很明显,出错的原因是项目中某些地方还保留了对Njt.MvcAuthLib这个库的引用,而现在我不需要了 ...
- python接口自动化(十一)--发送post【data】(详解)
简介 前面登录博客园的是传 json 参数,由于其登录机制的改变没办法演示,然而在工作中有些登录不是传 json 的,如 jenkins 的登录,这里小编就以jenkins 登录为案例,传 data ...
- Spring Boot 中的静态资源到底要放在哪里?
当我们使用 SpringMVC 框架时,静态资源会被拦截,需要添加额外配置,之前老有小伙伴在微信上问松哥Spring Boot 中的静态资源加载问题:"松哥,我的HTML页面好像没有样式?& ...