接上一篇:docker实例入门(上)
https://www.iteye.com/blog/songdi5403-2477645
继续以nginx镜像为例介绍docker的一些基本操作
7. 编写Dockerfile文件创建自己的镜像
Dockerfile 文件用于指示如何创建你的镜像。格式由一行行命令语句组成,并且支持以 # 开头的注释行。Dockerfile 分为四部分:基础镜像信息、维护者信息、镜像操作指令和容器启动时执行指令
docker文件的编写比较复杂,本文只以一个例子让大家体验dockerfile文件的作用
dockerfile有以下常用指令:
FROM指令
指明所基于的镜像名称
之前说过docker是分层,相当于一层文件以另一层为基础创建,我们实际编写时也要
以来已存在的一层或多层的基础镜像,不重复造轮子
格式为 FROM <image>或FROM <image>:<tag>
MAINTAINER
指定维护者信息,让别人知道这个镜像是谁创建的,类似于git仓库创建时要指定用户名和邮箱
格式为
MAINTAINER <name>
RUN
执行命令并创建新的镜像层,通常用于安装软件包
每运行一条 RUN 指令,镜像添加新的一层,并提交
格式为
RUN <command> 或 RUN ["executable", "param1", "param2"]
ADD
格式为 ADD <src> <dest>。
该命令将复制指定的 <src> 到容器中的 <dest>。 其中 <src> 可以是Dockerfile所在目录的一个相对路径;也可以是一个 URL;还可以是一个 tar 文件(自动解压为目录)
例子:以nginx为基础镜像,将当前目录下所有文件添加到nginx容器的html目录中
创建好dockerfile文件后,就可以用docker build命令运行它来创建自己的镜像
8.docker build
命令用于使用 Dockerfile 创建镜像
常用参数:
-t: 镜像的名字及标签,通常 name:tag 或者 name 格式,不写tag就是latest(最新版本)
-f :指定要使用的Dockerfile路径
1)在dockerfile文件所在目录创建一个html文件another.html,随便编辑点啥保存退出
vi another.html
2)docker build -t 镜像名 .
使用当前路径的dockerfile文件创建镜像,创建完成后使用docker images查看
3)使用该镜像启动一个新的容器(docker run)
访问之前build时构造到该容器的文件
可以看到,nginx的首页已被替换成我们自己的页面,nginx的基础功能仍然复用基础镜像。实际的工作中通常也是这样,以已存在的一个或多个镜像为基础构建新的镜像,再分发给团队成员使用。
9. docker stop 容器
停止一个运行中的容器并用docker ps查看
例子中命令后跟着的是要停止容器id的前几位用于定位唯一容器
例子中命令后跟着的是要停止容器id的前几位用于定位唯一容器
10. docker rm 容器
删除一个或多个容器
使用docker ps -a 查看所有容器(包括停止的),发现之前stop的容器仍然存在,只是exited了
docker rm删除容器,再用docker ps -a 查看,发现确实删除了
11.docker rmi 镜像
删除本地一个或多少镜像
注意,如果还有容器正在使用该镜像运行,则不能删除该镜像
可以增加-f选型强制删除,但是不推荐,类似于外键约束,可能会造成不一致的问题。正确的做法是先把使用该镜像的容器停止,删除,然后再删除对应镜像
可以看到 ,同构建时一样,删除镜像时也是逐层删除的
12.docker save > 文件
将指定镜像保存成 tar 归档文件。> 表示输出重定向
镜像构建好了(不管是用dockerfile从头构建镜像还是通过修改别人镜像的容器commit成新的镜像),可以用docker save命令导出为归档文件,分发给团队成员使用,使大家可以在完备,一致的环境下开发,测试和部署
例子:
1)将一个镜像导出到tar文件中,可以发给别人使用
2)删除容器和镜像
可以看到,现在本地已没有myimg1这个镜像,我们访问其之前映射的端口也不再能访问
3)使用之前save的tar文件还原镜像,参见下面的docker load命令
13.docker load<文件
导入之前使用 docker save 命令导出的镜像tar文件到本地,用于还原镜像
<表示输入重定向
用恢复的镜像运行一个nginx容器,还是映射到100端口
应用恢复
附录1:提供一些扩展学习内容,请大家根据我们提供的文档链接和网络自行扩展提高
扩展1:自行查阅 save export load import命令的区别
扩展2:自行在docker hub或网易云(docker仓库,不是云音乐)上注册,将本地镜像上传到远程仓库上
扩展3:自己去pull tomcat,mysql等镜像,并run
扩展4:将一个web应用打包成docker镜像(自己百度,非常多文章)
附录2:
使用docker进行实际工作场景描述:
1.专业运维会编写基础镜像的dockerfile文件,save->tar
2.开发人员拿到tar后,通过load-》还原成基础镜像
3. 开发人员完成开发后,编写自己的dockerfile文件,以基础镜像为基础构建自己的镜像
4.运行自己的dockerfile文件(build),构建自己web应用的镜像
5. save自己的镜像-》tar,发给测试人员去还原并测试,发给运维人员去部署
以上就是我们的docker实例入门,介绍了docker的基本概念和作用,docker仓库/镜像/容器三大组件,并以nginx应用的一些简单操作为例介绍了docker常用操作场景和命令。限于篇幅分为上下两篇文章
操作过程基本都有截图,大家可结合我们的截图和建议的命令手册自己进行实验,只有自己动了手才能真正理解概念,学会实际使用。
相关推荐
最后,文章列举了一些Docker的应用实例,包括基于Docker的Web应用部署、CI/CD自动化流程和微服务架构等。通过本文的学习,读者可以快速掌握Docker的基本使用和应用实践技能,为日后的项目开发和运维工作提供有力的...
docker从入门到精通,详细教程,适用于从零开始学习docker技术的人,里面包含了详细的命令是用及参数的应用实例,通俗易懂,包教包会包分配,详细的volume解释应用和虚拟网络知识与docker-compose的命令应用及参数的...
Docker入门与实战详细笔记,全部命令及实例,详细的记录,方便查阅。优秀的格式,可作为手册供查阅。来自于Docker入门与实战一书的阅读笔记。
主要介绍了Docker Swarm 入门实例详解的相关内容,小编觉得十分不错,在这里给大家分享下,需要的朋友可以参考。
docker超详细基础教程 Docker的介绍 ...创建Redis实例并启动 访问Redis服务 进入容器 检查Redis版本 登录Redis 安装Ngnix代理 拉取镜像 创建数据卷 查看目录 启动Nginx服务 访问Nginx服务
Docker 入门到实战 本资源摘要信息涵盖了 Docker 的基本概念、架构、应用场景、优点、架构组件、与虚拟机的区别等方面的知识点。 Docker 简介 Docker 是一个开源的应用容器引擎,基于 Go 语言并遵从 Apache2.0 ...
Docker 入门指南 Docker 是一种容器技术,能够实现操作系统虚拟化,让您在资源受到隔离的情况下运行多个应用程序。下面是 Docker 的基本概念、架构、组件、安装和使用等相关知识点: 1. Docker 的优势: Docker ...
从Docker到Kubernetes之技术实战,从Docker到Kubernetes案例,详细笔记。可以让初学者充分认识从Docker到Kubernetes魅力
Docker 容器技术入门概述 Docker 容器技术是当前非常流行的一种虚拟化技术,用于实现轻量级的容器虚拟化。它可以在宿主机操作系统中运行多个容器,每个容器都可以独立运行不同的操作系统和应用程序。 Docker 容器...
Docker 容器技术入门概述 Docker 是什么? ---------------- Docker 是一种容器技术,它可以实现操作系统虚拟化,让您在资源受到隔离的进程中运行应用程序及其依赖关系。 Docker 容器技术可以让您轻松打包应用程序...
当下最火的docker技术,分享给大家进行学习,里面包括源码调用实例、以及文档图说明,基础命令等,并且全都是中文的,很详细,入门首选哦~
2.通过实例全面讲解了Dockerfile指令 3.深度解析了build cache机制、网络通信过程与通信原理。 4.全面且讲解了目前最流行的三种Docker管理平台及CIG监控平台的搭建、配置及使用。 5.深度讲解了docker distribution、...
这种架构模式下,服务发现是中心组件,它允许服务在运行时互相查找和通信,这对于构建一个灵活、可扩展的系统至关重要。 当我们深入微服务架构时,智能路由也是不能忽视的组成部分。智能路由能够帮助系统根据请求的...
Docker是一个开源的应用容器引擎,它利用操作系统级别的虚拟化技术来创建和管理轻量级的、可移植的软件容器。...书籍:市场上也有关于Docker的书籍,如《Docker实战》、《Docker技术入门与实战》等,这
构建Docker Doodles 可以使用原始docker docker build或新的BuildKit应用程序进行docker build 。 夜间构建以及Docker Engine 19.03版本中都有新的... 使用buildx,首先需要创建一个跨平台builder实例,其实例如下:
"云原生-docker操作文档" 这篇操作文档主要介绍了云原生和Docker相关的知识点,涵盖了Docker的历史、基础概念、核心原理、应用...课程内容包括Docker快速入门、Docker核心原理、Docker高级应用、Docker的运维管理等。
Docker入门介绍,通过实例和场景,介绍Docker的应用。
通过Docker可以轻松地部署Redis实例,并通过Docker Compose等工具管理和运行多个容器。 对于Redis集群,它允许多个Redis实例一起工作,从而提高数据的可用性和系统处理大量数据的能力。搭建Redis集群前,需要为每个...