Docker应用部署迁移备份DockerFile

news2025/2/2 8:43:40

文章标题

  • 一、应用部署
    • 1)MySQL部署
    • 2)Redis部署
    • 3)Nginx部署
  • 二、迁移与备份
    • 1)容器做成镜像
    • 2)把镜像被分成压缩包
  • 三、DockerFile
    • 1)基于Centos创建镜像自带Vim软件
    • 2)制作Django项目镜像

一、应用部署

1)MySQL部署

1. docker pull mysql:5.7		# 拉取mysql
2. mkdir /root/mysql			# 创建文件夹数据分离
3. mkdir /root/mysql/conf.d
4. mkdir /root/msyql/data/
5.touch my.cnf					# 创建好文件 写入配置
6.docker run -id --name=mysql -p 3306:3306 -v /root/mysql/conf.d:/etc/mysql/conf.d 
	-v /root/mysql/data/:/var/lib/mysql -v /root/mysql/my.cnf:/etc/mysql/my.cnf 
	-e MYSQL_ROOT_PASSWORD=123456 mysql:5.7		# 基于镜像运行成容器 端口映射3306 目录映射

"""
	[mysqld]
	user=mysql
	character-set-server=utf8
	default_authentication_plugin=mysql_native_password
	secure_file_priv=/var/lib/mysql
	expire_logs_days=7
	sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
	max_connections=1000
	[client]
	default-character-set=utf8
	[mysql]
	default-character-set=utf8

	这个时候删除容器 数据还在 只需要再创建一个新的容器 做好目录映射就可以继续使用了 
"""

2)Redis部署

1.docker pull redis 	# 拉取redis镜像
2.mkdir reids
3.mkdir redis/conf
4.mkdir redis/data
5.mkdir redis/conf/redis.conf
6.vim ./redis/conf/redis.conf	# 配置文件录入
7.docker run -id -p 6379:6379 --name redis_6379 -v /root/reids/conf/redis.conf:/etc/redis/redis.conf 
	-v /root/reids/data:/data redis  redis-server /etc/redis/redis.conf --appendonly yes

# docker run -id --name=myredis -p 6379:6379 redis 	# 不做关系映射

在这里插入图片描述

3)Nginx部署

1.docker pull nginx 	# 拉取nginx镜像
2. docker run -id --name=nginx -p 80:80 nginx
3. 从win机器浏览器可以访问:10.0.0.205:80
4. 今日容器内部,修改index    /usr/share/nginx/html
5. 修改index.html
	vi、vim、yum都没有因为不是Centos系统
	apt-get update
	apt-get install vim

二、迁移与备份

1)容器做成镜像

docker commit 427066d078c3 nginx_vim					# 做成镜像
docker run -id --name=xxx -p 8080:80 nginx_vim:latest	# 运行成容器

2)把镜像被分成压缩包

docker save -o mynginx.tar nginx_vim	# 把镜像做成tar文件
docker load -i mynginx.tar				# 把压缩包load成镜像

三、DockerFile

Dockerfile其实就是根据特定的语法格式撰写出来的一个普通的文本文件
利用docker build命令依次执行在Dockerfile中定义的一系列命令,最终生成一个新的镜像(定制镜像)文件名必须叫Dockerfile。

镜像从哪里来?

1. 远程仓库pull
2. 容器
3. 解压
4. 通过DockerFile构建

DockerFile 构建特征

1.DockerFile必须具备一个FROM命令来进行构建
2.每一个Dockerfile命令都会构建一层镜像(本质上是每一层都会启动一个容器,执行完命令后,将容器进行提交后,产生新的镜像层)
3.通过查看下载下来的镜像,发现历史层信息的层ID是missing,其实是因为原本的层id只存在于构建镜像的宿主机上,一旦转移镜像后,历史层消息中将只保留最新一层的ID

在这里插入图片描述

DockerFile命令描述

FROM: 指定基础镜像
RUN: 构建镜像过程中需要执行的命令。可以有多条。docker build
CMD: 添加启动容器时需要执行的命令。多条只有最后一条生效。可以在启动容器时被覆盖和修改。
ENTRYPOINT:同CMD,但这个一定会被执行,不会被覆盖修改。
:为镜像添加对应的数据。
MLABELAINTAINER:表明镜像的作者。将被遗弃,被LABEL代替。
EXPOSE:设置对外暴露的端口。
ENV: 设置执行命令时的环境变量,并且在构建完成后,仍然生效
ARG: 设置只在构建过程中使用的环境变量,构建完成后,将消失
ADD: 将本地文件或目录拷贝到镜像的文件系统中。能解压特定格式文件,能将URL作为要拷贝的文件
COPY:将本地文件或目录拷贝到镜像的文件系统中。
VOLUME:添加数据卷
USER:指定以哪个用户的名义执行RUN, CMD 和ENTRYPOINT等命令
WORKDIR:设置工作目录
ONBUILD:如果制作的镜像被另一个Dockerfile使用,将在那里被执行Docekrfile命令
STOPSIGNAL:设置容器退出时发出的关闭信号。
HEALTHCHECK:设置容器状态检查。
SHELL:更改执行shell命令的程序。Linux的默认shell是[/bin/sh”,-c”],Windows的是[“cmd”,/S”,/C”]

在这里插入图片描述

1)基于Centos创建镜像自带Vim软件

FROM centos:7
MAINTAINER lqz
WORKDIR /home
RUN yum install -y vim
RUN mkdir lqz
ADD ./xx.txt ./yy.txt

构成镜像

docker build -t='centos_lqz_vim' 

2)制作Django项目镜像

	-1 books项目准备好
    -2 在项目路径下编写Dockerfile
        FROM python:3.8
        MAINTAINER lqz
        WORKDIR /soft
        COPY ./requirements.txt /soft/requirements.txt
        RUN pip install -r requirements.txt -i https://pypi.doubanio.com/simple
        CMD ["python","manage.py","runserver","0.0.0.0:8080"]
    -3 把books代码提交到git
    -4 部署项目的机器,clone 项目
    	git clone https://gitee.com/liuqingzheng/books.git
    -5 cd books 文件夹下,执行构建镜像命令
    	docker build -t='django_books' .
    -6 有个镜像django_books,运行成容器
		docker run -id --name=books -v /root/books:/soft -p 8080:8080 books_django:latest
    -7 win操作系统的浏览器中访问虚拟机地址,就可以访问项目了
	-8 继续开发项目,改了代码,提交到git
    -9 部署项目的机器,拉去最新代码
    -10 重启docker容器即可(第三方依赖变了)--> 重写构建镜像,运行容器

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/104115.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

计算机毕设Python+Vue学生学科竞赛管理系统(程序+LW+部署)

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

【第十三章 MySQL管理(mysqladmin,mysqlbinlog,mysqlshow,mysqldump,mysqlimport/source)】

第十三章 MySQL管理(mysqladmin,mysqlbinlog,mysqlshow,mysqldump,mysqlimport/source) 1.系统数据库: Mysql数据库安装完成后,自带了以下四个数据库,具体作用如下: 2.mysql: 该mysql不是指mys…

计算机毕设Python+Vue学院校友信息管理系统的(程序+LW+部署)

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

Promise(二) 关键问题+async+await

目录 1.几个关键问题 2. async函数 3. await表达式 4.async与await实践结合 5.async与await实践结合——发送Ajax请求获取信息 1.几个关键问题 在promise封装之前做准备 <script>let p new Promise((resolve, reject) > {//三种方式promise状态最开始是pending/…

【LeetCode】1760. 袋子里最少数目的球

袋子里最少数目的球 给你一个整数数组 nums &#xff0c;其中 nums[i] 表示第 i 个袋子里球的数目。同时给你一个整数 maxOperations 。 你可以进行如下操作至多 maxOperations 次&#xff1a; 选择任意一个袋子&#xff0c;并将袋子里的球分到 2 个新的袋子中&#xff0c;每…

媒体查询。

媒体查询( Media Query )是CSS3新语法 使用media查询&#xff0c;可以针对不同的媒体类型定义不同的样式 media 可以针对不同的屏幕尺寸设置不同的样式 当你重置浏览器大小的过程中&#xff0c;页面也会根据浏览的宽度和高度重新渲染页面 目前针对很多苹果手机、Android手机&am…

【算法】【字符串模块】字符串数组中两个字符之间的最短距离以及对hashcode以及equals的理解

目录前言问题介绍解决方案代码编写java语言版本c语言版本c语言版本思考感悟写在最后前言 当前所有算法都使用测试用例运行过&#xff0c;但是不保证100%的测试用例&#xff0c;如果存在问题务必联系批评指正~ 在此感谢左大神让我对算法有了新的感悟认识&#xff01; 问题介绍 …

来聊一聊|ConcurrentModificationException异常的解决

一. 前言 最近耀哥的一个学生&#xff0c;在使用使用ArrayList的subList的时候&#xff0c;发生了ConcurrentModificationException的异常。耀哥觉得这个现象非常具有代表性&#xff0c;估计有不少同学都会在同样的问题上犯迷糊&#xff0c;所以今天耀哥特意把这个问题记录下来…

设备台账管理系统

开发工具(eclipse/idea/vscode等)&#xff1a; 数据库(sqlite/mysql/sqlserver等)&#xff1a; 功能模块(请用文字描述&#xff0c;至少200字)&#xff1a; 模块划分&#xff1a;公告类型、公告信息、员工信息、仓库信息、设备类型、设备信息、供应商信息、采购信息、设备调拨、…

8个Spring事务失效的场景,你碰到过几种?

前言 作为Java开发工程师&#xff0c;相信大家对Spring种事务的使用并不陌生。但是你可能只是停留在基础的使用层面上&#xff0c;在遇到一些比较特殊的场景&#xff0c;事务可能没有生效&#xff0c;直接在生产上暴露了&#xff0c;这可能就会导致比较严重的生产事故。今天&a…

基于Android7 的msm8953芯片的nfc调试

目录 报错日志 NFC芯片重要的5个引脚 时序图分析 报错日志 01-01 19:05:22.570 0000 2341 2532 D NxpFwDnld: phDnldNfc_InitImgInfo:SUCCESS 01-01 19:05:22.570 0000 2341 2532 D NxpFwDnld: Processing Normal Sequence.. 01-01 19:05:22.570 0000 2341 2532 D NxpFwD…

干货|PCB电路板的组成、设计、工艺、流程及元器摆放和布线原则

大家对PCB电路板电路这个词很熟&#xff0c;有的了解PCB电路板的组成&#xff0c;有的了解PCB电路板的设计步骤&#xff0c;有的了解PCB电路板的制作工艺......但是对整个PCB电路板的组成、设计、工艺、流程及元器摆放和布线原则&#xff0c;及后期的注意事项没有一个综合的了解…

Spring 中 ConfigurationClassPostProcessor 类扫描解析之 @ComponentScan 解析

ConfigurationClassPostProcessor 简单概述 Spring 中类的解析是非常重要的&#xff0c;因为工程中有很多类&#xff0c;并且被一些注解修饰&#xff0c;比如&#xff1a;Component、Bean、Import、PropertySource、ImportSource、Scope 等。 你在类或者方法上标注这些注解&a…

Tensorflow1 搭建Cuda11

前言 Tensorflow1中默认支持cuda10及以下的&#xff0c;最高的版本Tensorflow1.15默认使用cuda10&#xff1b;但是一些高性能的显卡&#xff0c;比如A100、3090等&#xff0c;它们只支持Cuda11的&#xff0c;这就不太友善了&#xff0c;毕竟不少项目依赖Tensorflow1搭建的。 …

linux基础学习-系统信息相关命令以及一些其他命令

主要是为了方便远程终端维护服务器时&#xff0c;查看服务器上当前的 系统日期和时间/磁盘空间占用情况/程序执行命令时间和日期 磁盘信息 -h&#xff1a;以人性化的方式显示文件大小进程信息 进程通俗地说就是当前正在执行的一个程序 ps默认只会显示当前用户通过终端启动的…

使用 openpyxl 在 Excel 电子表格中自动执行日常任务

花费数小时处理 Excel 中平凡的重复性任务。使用 Python 和 openpyxl 探索自动化。 像许多从事各种业务职能的人一样,我几乎每天都使用 Excel 来制作图表和分析。然而,其中一些图表需求相当平凡,涉及使用新的原始数据集创建新的工作表,该数据集需要以某种可预测的形式进行处…

采购管理基础知识:采购方法、模式与数据的作用

采购是任何企业的一个关键部分&#xff0c;是从外部来源获得货物和服务的过程。采购的目标是为企业获得尽可能好的价值。 采购流程可以通过使用各种工具进行优化。最重要的工具是采购管理软件。这种软件可以帮助企业跟踪他们的采购过程&#xff0c;并确保它们是有效的。 采购…

javaweb当中mysql要掌握的知识点(简单基础入门)

目录 1.mysql的数据模型 A.关系型数据库 B.mysql的客户端和数据库间的关系 C.数据库当中不同文件控制表的相关数据 2.使用注释 A.使用井号#加上要注释的文字 3.DDL---操作数据库 A.基本操作 B.创建表 C.修改表 D.给表添加数据 E.基础查询 F.排序查询语法 G.分页查询 4.…

linux下的环境变量

环境变量查看环境变量方法环境变量的组织方式通过代码如何获取环境变量 查看环境变量方法 环境变量的组织方式通过代码如何获取环境变量查看环境变量方法 环境变量的组织方式 通过代码如何获取环境变量 查看环境变量方法 ./常见的环境变量. 1️⃣ PATH:指定命令的搜索路径 2…

有哪些好用的建筑工程项目管理软件?

工程项目管理是建筑企业经营管理的核心业务&#xff0c;任何一家施工企业、任何一个工程管理团队&#xff0c; 无论是建立初创型企业&#xff0c;还是小公司开始进行业务扩张时&#xff0c;工程项目管理都至关重要。 针对行业痛点&#xff0c;推荐试试这款系统&#xff1a;ht…