【docker】应用部署,迁移与备份,Dockerfile
目录
1.应用部署
1.1 mysql部署
1. 在宿主机上不需要安装mysql了,直接拉取mysql镜像,运行成容器即可
2. 部署步骤
1. 创建文件夹
mkdir /root/mysqldocker ps
mkdir /root/mysql/conf.d
mkdir /root/mysql/data/
2. mysql配置文件,新建在mysql文件夹下
1. touch my.cnf
2. vim my.cnf
[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
3. 基于镜像运行成容器(端口映射,目录映射)
docker run -id --name=mysql3 -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
# 运行mysql 需要传入环境变量
MYSQL_ROOT_PASSWORD #root超级管理员的密码
4. 远程链接mysql ,创建库,创建表
5. 在容器中链接mysql,可以看到库和表
6. 删除容器
7. 创建一个新容器,数据还在[一定要做目录映射]
1.2 redis部署
1 拉取redis镜像
2 创建文件夹和文件
mkdir reids
mkdir reids/conf
mkdir reids/data
vim ./reids/conf/redis.conf
3 配置文件
bind 0.0.0.0
daemonize NO
protected-mode no
requirepass 123456
4 docker命令
# low一些,没有做目录映射
docker run -di --name=myredis -p 6379:6379 redis
# 咱们用这个
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
1.3 部署nginx
1 拉取nginx镜像
2 docker 命令
docker run -id --name=nginx -p 80:80 nginx
3 从win机器浏览器可以访问:10.0.0.205(自己的IP地址):80
4 今日容器内部,修改index /usr/share/nginx/html
5 修改index.html
vi vim都没有,安装发现yum也没有,它不是centos
apt-get update
apt-get install vim
6 访问,发现页面变了
2. 迁移与备份
2.1 容器做成镜像
# 把容器,打包成镜像--->容器中装了很多软件
-python 镜像,基于debain做的
-基于centos ,装python3.8解释器----》镜像---》放到网上给别人用
# 咱们案例,基于ngixn+vim+index改了的 做成镜像
-docker commit 427066d078c3 nginx_vim
# 基于自己做的镜像,运行成容器
docker run -id --name=xxx -p 8080:80 nginx_vim:latest
2.2 把镜像备份成压缩包
# 把镜像做成tar文件
docker save -o mynginx.tar nginx_vim
# 把压缩包load成镜像
docker load -i mynginx.tar
3. Dockerfile
3.1 介绍
Dockerfile是由一系列命令和参数构成的脚本,这些命令应用于基础镜像并最终创建一个新的镜像,文件名必须叫Dockerfile
1、对于开发人员:可以为开发团队提供一个完全一致的开发环境;
2、对于测试人员:可以直接拿开发时所构建的镜像或者通过Dockerfile文件构建一个新的镜像开始工作了;
3、对于运维人员:在部署时,可以实现应用的无缝移植。
镜像哪里来
1. 远程仓库下载的
2. 容器做的
3. xx.tar 解压出来的
4. 通过dockerfile构建
普通文件,文件中写了很多命令,根据这些命令创建出镜像来
常用命令
1. FROM image_name:tag 基于那个基础镜像来构建
2. MAAINTAINER 姓名 声明镜像的创建者
3. ENV key calue 设置环境变量
ENV DB_PASSWORD lqz123 运行容器 -e参数指定 -e DB_PASSWORD=xxxx
4. RUM command 是Dockerfile的核心部分(核心部分)
command linux命令
5. ADD 宿主机路径文件 容器路径文件 将宿主机的文件复制到容器内,如果是一个压缩文件,将会在复制后自动解压
6. COPY 宿主机路径文件 容器路径文件 将宿主机的文件复制到容器内
7. WORKDIR path_dir 设置工作目录 docker exec 进入到容器,在某个路径下
8. CMD 命令 运行容器默认执行的命令,它可以被替换
CMD:添加启动容器时需要执行的命令。多条只有最后一条生效。可以在启动容器时被覆盖和修改
3.2 简单案列基于centos出啊昂加一个镜像,里面带vim软件
Dockerfile
FROM centos:7
MAINTAINER aaa
WORKDIR /home
RUN yum install -y vim
RUN mkdir aaa
ADD ./xx.txt ./yy.txt
构建镜像
docker build -t='centos_aaa_vim' .
3.3 制作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容器即可(第三方依赖变了)--》重写构建镜像,运行容器
分类:
docker
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现