20-Docker镜像制作
查看镜像构建的历史
docker image history 26a5 #查看镜像26a5的构建历史
使用commit命令构建镜像
使用commit命令可以将容器构建成镜像。
- 将容器webserver制作为镜像nginx:v2
docker commit \
--author "Tao Wang <twang2218@gmail.com>" \ #指定镜像作者
--message "修改了默认网页" \ #指定镜像的描述信息。
webserver \ #容器名
nginx:v2 #新镜像名
实验
docker container run -d -p 8080:80 --name "webserver" nginx
docker exec -it webserver bash
cd /usr/share/nginx/html
echo "hello" > index.html #修改主页文件index.html
exit #退出容器
docker commit webserver nginx:v2 #将容器webserver构建成镜像nginx:v2
docker container run -d -p 8090:80 --name "webserver2" nginx:v2 #根据新构建的镜像启动容器
#测试:curl 127.0.0.1:8090,会返回hello
commit命令的弊端
镜像是分层的,如上例中的nginx:v2比nginx多了一层(将webserver的可写层制作成了镜像)
当我们多次使用commit制作镜像,镜像就会变得很臃肿,拥有很多层,这导致镜像的管理,传输等过程中效率低下。
如,我们将nginx中的index.html修改为123,下一次又修改为456,修改了很多次,最后又变成了123。那么中间的镜像就是多余了。
使用Dockerfile可以解决这个问题。
使用Dockerfile制作镜像
Dcokerfile是一个文件,里面说明了镜像如何制作。
- 用一个例子来入门
vim Dockerfile
FROM centos:7
MAINTAINER flight
CMD [ "sh", "-c", "echo $HOME" ]
docker build -t centos:v1 .
docker run centos:v1 #输出家目录后退出
docker run centos:v1 echo hello #输出hello之后退出
#Dockerfile文件解释:
#FROM centos:7 #指定base镜像(根据bash镜像制作新的镜像)
#MAINTAINER flight #维护者(作者)
#CMD [ "sh", "-c", "echo $HOME" ] #启动镜像后运行此命令(使用docker run时可以在命令最后添加新的命令将CMD替换)
通常会使用centos、ubuntu等base镜像进行制作。
Dockerfile的参数
FROM centos #指定base镜像
MAINTAINER flight #指定作者
ENV WELCOME "hello" #设置环境变量,ENV a=123 b="456 789"
ARG WELCOME[=hello] #设置环境变量,但容器中不存在这些变量。可以用--build-arg WELCOME=hi来覆盖
EXPOSE 8080 8888 #指定容器监听端口
VOLUME /data #定义匿名卷(/var/lib/docker/volumes下)
WORKDIR /testdir #设置当前工作目录
RUN touch 1.txt #运行命令(一条RUN指令建立一层镜像,可使用&&将命令串起来)
COPY ./src dst #将文件从本机复制到镜像中(目标路径不存在则自动创建)
ADD ./src dst #与COPY类似,但可以复制压缩文件(会自动解压)
CMD [ "sh", "-c", "echo $HOME" ] #默认执行命令(启动镜像时就会执行),docker run最后使用新的命令替换CMD
ENTRYPOINT [ "sh", "-c", "echo $HOME" ] #docker run之后得参数作为参数传递给ENTRYPOINT
docker build -t ryan/nginx:v3 .
-t #指定新镜像name和tag
-f #可以指定Dockerfile文件名(默认文件名为Dockerfile)
20-Docker镜像制作的更多相关文章
- MySQL、MongoDB、Redis数据库Docker镜像制作
MySQL.MongoDB.Redis数据库Docker镜像制作 在多台主机上进行数据库部署时,如果使用传统的MySQL的交互式的安装方式将会重复很多遍.如果做成镜像,那么我们只需要make once ...
- docker研究-4 docker镜像制作
这次实验以centos镜像为基础镜像进行相关docker镜像制作. 1. 下载centos镜像 [root@localhost ~]# docker pull centosUsing default ...
- 《Docekr入门学习篇》——Docker镜像制作
Docker镜像制作 Docker镜像的构建分为两种,一种是手动构建,一种是dockerfile(自动构建) 手动构建 基于centos镜像进行构建制作Nginx镜像 [root@rbtnode1 ~ ...
- Docker 镜像制作教程:针对不同语言的精简策略
本系列文章将分为三个部分: 第一部分着重介绍多阶段构建(multi-stage builds),因为这是镜像精简之路至关重要的一环.在这部分内容中,我会解释静态链接和动态链接的区别,它们对镜像带来的影 ...
- Nginx+PHP7.3.9 Docker镜像制作
最近因项目需要制作了多个版本的php docker镜像,制作过程可谓是一波三折,因基于yum的方式安装php的方式在安装扩展插件时很不方便,不容易找到插件对应的yum源,所以PHP在docker镜像中 ...
- doris 0.9.0版本docker镜像制作与使用
1. 安装docker 详情请参见本人博客 2. 编译doris 详情请参见doris官网文档 3. 在编译好的doris output文件夹下编写两个Dockerfile 3.1 Dockerfi ...
- presto-gateway 试用以及docker 镜像制作
presto-gateway 是 lyft 团队开源 的prestodb 的工具.以下是一个简单的试用,以及碰到问题的解决 还有就是docker 镜像的制作 Dockerfile 很简单,本地构建然后 ...
- 实战【docker 镜像制作与使用】
一.制作docker 镜像 使用spring boot 构建一个简单的web 项目,返回 “Hello,World ”字符串,使用 Maven 打成 jar 包,使用的Linux 环境是 Centos ...
- docker镜像制作及发布
以centos为例. 主要内容:安装docker,制作镜像,发布镜像. 安装docker 1. 安装docker yum install -y docker 等待一会,安装成功,查看安装列表 2. 启 ...
- docker镜像制作Dockerfile
使用 Dockerfile 定制镜像 从刚才的 docker commit 的学习中,我们可以了解到,镜像的定制实际上就是 定制每一层所添加的配置.文件.如果我们可以把每一层修改.安装.构建.操作 的 ...
随机推荐
- dotnet 7 WPF 破坏性改动 按下 F3 让 DataGrid 自动排序
本文记录在 dotnet 7 下的 WPF 的一个破坏性改动.在 dotnet 7 下的 WPF 支持 DataGrid 在按下 F3 键的时候,自动按照当前所选列进行列自动排序.这将会让原本采用 F ...
- WPF 通过 Windows Template Studio 快速搭建项目框架和上手项目
本文对新手友好.在咱开始一个新项目的时候,可以利用 Windows Template Studio 快速搭建整个项目的框架.搭建出来的框架比较现代化,适合想要快速开发一个项目的大佬使用,也适合小白入门 ...
- 五:瑞芯微RV1109
瑞芯微RV1109是一款用于工控机或人工智能视觉应用的高性能机器视觉处理器SoC. 参考资料 http://www.neardi.com/news_22/434.html https://www.ro ...
- MSP 通过 Splashtop SOS 远程支持非托管设备
RMM 是 MSP 的绝佳工具.它们使 MSP 可以通过集中控制台来管理其所有客户计算机,通常使他们能够远程访问任何计算机以提供远程支持. 但是,这样做的一个很大限制是--并非所有客户设备都在 MSP ...
- 网络拓扑—WEB-IIS服务搭建
目录 WEB-IIS服务搭建 网络拓扑 配置网络 IIS PC 安装IIS服务 配置IIS服务(默认站点) PC机访问网页 配置IIS服务(新建站点) PC机访问网页 WEB-IIS服务搭建 网络拓扑 ...
- C语言:通讯录程序设计(多功能)
回顾我的代码shi 通讯录程序设计 主函数 遇到的困难 补充标注说明(一定要看) 效果展示截图 结语 程序源代码 通讯录程序设计 作者前言:该通讯录作品是我大一的C语言结课作业,代码像shi山一样,之 ...
- Bear and String Distance
传送锚点: codeforces.com Copy 4 26 bear output roar input 2 7 af output db input 3 1000 hey output -1 思路 ...
- 像阿里OSS一样的文件对像存储服务,容器实现 docker初探及minio测试
像阿里OSS一样的文件对像存储服务,容器实现 docker run -p 8000:9000 --name oss-minio -d -e "MINIO_ACCESS_KEY=AKIAIOS ...
- bashrc和profile区别
转载请注明出处: 作用与目的: .bashrc:这个文件主要用于配置和自定义用户的终端环境和行为.每次启动新的终端时,.bashrc文件都会被执行,加载用户设置的环境变量.别名.函数等.这使得用户能够 ...
- Hive 在工作中的调优总结
总结了一下在以往工作中,对于Hive SQL调优的一些实际应用,是日常积累的一些优化技巧,如有出入,欢迎在评论区留言探讨~ 一.EXPLAIN 查看执行计划 二.建表优化 2.1 分区 分区表基本操作 ...