Docker系列第06部分:备份与迁移+dockerfile

简介: Dockerfile是由一系列命令和参数构成的脚本,这些命令应用于基础镜像并最终创建一个新的镜像。它们简化了从头到尾的流程并极大的简化了部署工作。Dockerfile从FROM命令开始,紧接着跟随者各种方法,命令和参数,其产出为一个新的可以用于创建容器的镜像.

1 备份与迁移


1.1 容器保存为镜像


docker commit pinyougou_nginx mynginx
# pinyougou_nginx是容器名称
# mynginx是新的镜像名称
# 此镜像的内容就是你当前容器的内容,接下来你可以用此镜像再次运行新的容器


1.2 镜像备份


docker  save -o mynginx.tar mynginx
# -o 输出到的文件
# 执行后,运行ls命令即可看到打成的tar包.


1.3 镜像恢复与迁移


首先先删除掉mynginx镜像,然后执行命令进行恢复


docker load -i mynginx.tar
# -i 输入的文件


执行后再次查看镜像,可以看到镜像已经恢复


再创建容器。


2 dockerfile


Dockerfile是由一系列命令和参数构成的脚本,这些命令应用于基础镜像并最终创建一个新的镜像。它们简化了从头到尾的流程并极大的简化了部署工作。Dockerfile从FROM命令开始,紧接着跟随者各种方法,命令和参数,其产出为一个新的可以用于创建容器的镜像.


如何写Dockerfile,Dockerfile 参考文档 | Deepzz's Blog

如何写Dockerfile,Dockerfile参考文档,唯爱与美食不可辜负也 :-D

https://deepzz.com/post/dockerfile-reference.html


7.1 dockerfile的demo


  • 在root下创建demo目录


mkdir demo
cd demo


  • 在demo 目录下创建 a文件


vim a


  • 在某~/demo下创建Dockerfile文件


vim Dockerfile


内容为:


# my dockerfile ljh
FROM centos
MAINTAINER ljh
WORKDIR /root/workdir
RUN touch te
ADD a b
ENV key1 "hello"
# 语法解释:
#  :代表注释
# FROM centos  : 代表依据基本的镜像来创建
# MAINTAINER ljh :代表就是作者是谁
# WORKDIR /root/workdir :代表就是创建容器时进入工作的目录是容器中的/root/workdir目录
# RUN touch te  :代表就是RUN 运行命令  运行一个创建空文件te
# COPY ["HI","."] :代表从宿主系统中复制HI 文件到容器系统中工作目录中的当前路径下
# ADD a b :代表从宿主机所在Dockerfile文件的目录下Copy 文件A 到容器中的b文件 b文件的目录为工作目录下。
# ENV key1 "hello" :定义linux中的环境变量。如下:  
# 定义一个:key value 
# 定义多个:key=value key2=value2


  • 创建自定义镜像


docker biuld -t mycentos .
# docker build : 表示通过Dockerfile文件来创建镜像
# -t mycentos 表示 给与镜像的名称和版本  为:mycentos:lasted (lasted可以不写)
# . 表示从当前目录下进行加载Dockerfile文件


bee586f6f95e4f859ec6eb03a196b87f.png


  • 查看是否打包镜像成功


0726c9f864db43698544bc5dcdd3d1b9.png


  • 测试创建容器:


docker run -di --name=mycentosheh mycustomcentos


  • 连接容器


[root@localhost demo]# docker exec -it mycentosheh /bin/bash


注意: 进入目录即为:/root/workdir


1812330cb4a4488faafe4399ebee6d2c.png


在目录下有 b文件和 te文件


22c9672ca20443cba2c6a9df0f2aba24.png


输入:echo $key1 查看环境变量的值结果


8b816bac591d4fa49dec95010c65fb02.png


3 springboot微服务部署


在微服的世界中,使用springboot来开发的微服务架构,使用dockerfile 来部署应用。


  • 在本地开发完成微服系统 打包,将其copy到linux系统中


b2f776c35ac64b8b8f4d8f3fb49c6af9.png


  • 创建dockefile文件上图:


#my dockerfile ljh
FROM java:8
MAINTAINER ljh
ADD demo-0.0.1-SNAPSHOT.jar app.jar
# ENTRYPOINT ["java","-jar","/app.jar"]  表示 执行命令: 整个命令都只能有一个ENTRYPOINT
ENTRYPOINT ["java","-jar","/app.jar"]
EXPOSE 8080


java -jar app.jar


EXPOSE 8080 发布端口为:8080


  • 构建镜像


docker build -t demoappimage .


  • 创建容器


docker run -di --name=myapp1 -p 8080:8080 


  • 效果


d6b77f9baaed4206b05ec74d5572c0c0.png

目录
相关文章
|
3月前
|
存储 安全 数据安全/隐私保护
【Docker 专栏】Docker 容器化应用的备份与恢复策略
【5月更文挑战第9天】本文探讨了Docker容器化应用的备份与恢复策略,强调了备份在数据保护、业务连续性和合规要求中的关键作用。内容涵盖备份的重要性、内容及方法,推荐了Docker自带工具和第三方工具如Portainer、Velero。制定了备份策略,包括频率、存储位置和保留期限,并详细阐述了恢复流程及注意事项。文章还提及案例分析和未来发展趋势,强调了随着技术发展,备份与恢复策略将持续演进,以应对数字化时代的挑战。
192 1
【Docker 专栏】Docker 容器化应用的备份与恢复策略
|
5天前
|
NoSQL Linux MongoDB
Docker 解析:使用 Dockerfile 自动构建镜像
Docker 解析:使用 Dockerfile 自动构建镜像
11 0
|
1月前
|
运维 数据安全/隐私保护 Docker
docker(五):DockerFile
docker(五):DockerFile
34 0
docker(五):DockerFile
|
2月前
|
持续交付 开发工具 git
阿里云云效产品使用问题之在云效代码域中gitlab使用docker安装的,迁移时遇到“获取企业信息失败”,是什么原因
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
2月前
|
Docker 容器
在 EAS 构建中使用其他 Docker 功能,如自定义 Dockerfile 或多阶段构建
在 EAS 构建中使用其他 Docker 功能,如自定义 Dockerfile 或多阶段构建
|
3月前
|
数据库 Docker 容器
【Docker 专栏】使用 Dockerfile 自动化构建 Docker 镜像
【5月更文挑战第8天】Dockerfile是构建Docker镜像的关键,它包含一系列指令,用于描述应用运行环境及所需软件包。通过自动化构建,能提高效率、保证可重复性并提升灵活性。确定基础镜像、安装依赖、设置环境后,执行Dockerfile生成镜像,用于应用程序部署。虽然需要熟悉Docker技术和应用细节,但其带来的益处使其成为现代软件开发和部署的重要工具。
120 1
【Docker 专栏】使用 Dockerfile 自动化构建 Docker 镜像
|
2月前
|
存储 数据管理 Linux
Linux - 记录问题:docker 迁移 更改镜像默认位置的注意事项
Linux - 记录问题:docker 迁移 更改镜像默认位置的注意事项
48 0
|
3月前
|
前端开发 Java Docker
【分享】记一次项目迁移(docker java | docker python)
该项目是一个前端Vue3和后端Python+Java的应用,原本部署在CentOS7服务器上通过宝塔面板管理。由于服务器即将到期,计划迁移到另一台使用OpenCloudOS和1Plane的服务器。在尝试构建Docker镜像时,首先为Java应用创建Dockerfile,成功构建并运行。对于Python应用,也创建了Dockerfile,并处理了依赖包的安装。在迁移过程中遇到Java项目加载验证码失败的问题,原因是缺少字体配置。通过在宿主机安装fontconfig并将相关字体文件复制到镜像中解决了问题。最后,前端Vue应用作为静态文件运行,如果使用反代理,需要进行相应配置。
63 1
|
2月前
|
缓存 Linux 开发工具
win10下docker desktop:使用dockerfile基于CentOS:8创建可以使用vim的镜像
win10下docker desktop:使用dockerfile基于CentOS:8创建可以使用vim的镜像
133 0
|
2月前
|
Cloud Native Java Docker
java一分钟之-Docker化Java应用:Dockerfile与镜像构建
【6月更文挑战第6天】本文探讨了Docker在Java应用部署中的重要性,强调了Dockerfile在保证环境一致性和提升部署效率上的作用。Dockerfile是自动化构建Docker镜像的文本文件,它的使用能实现标准化、可重复性和透明度。文章指出了编写Dockerfile时的常见问题,如指令误用、镜像体积过大和安全性不足,并提供了相应的解决策略。通过一个Spring Boot应用的实战示例,展示了如何编写Dockerfile和构建镜像。总之,掌握Dockerfile和镜像构建技巧对于优化Java应用的云原生部署至关重要。
81 0