文章标题
- 一、应用部署
- 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容器即可(第三方依赖变了)--> 重写构建镜像,运行容器