Docker应用部署迁移备份DockerFile

文章标题

  • 一、应用部署
    • 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 	# 不做关系映射

Docker应用部署迁移备份DockerFile_第1张图片

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

Docker应用部署迁移备份DockerFile_第2张图片

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”]

Docker应用部署迁移备份DockerFile_第3张图片

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容器即可(第三方依赖变了)--> 重写构建镜像,运行容器

你可能感兴趣的:(Docker,docker,数据库,java,python,DockerFile)