1. 准备一台纯净的服务器
镜像:CentOS 7.9 64位
CPU & 内存:2核2G
系统盘:60GB
峰值带宽:30Mbps
流量包:600GB / 600GB
2. 安装Docker
2.1 卸载旧的版本
$ sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine
2.2 安装 Docker Engine-Community
在新主机上首次安装 Docker Engine-Community 之前,需要设置 Docker 仓库。之后,您可以从仓库安装和更新 Docker。
$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2
使用以下命令来设置稳定的仓库。
$ sudo yum-config-manager \--add-repo \https://download.docker.com/linux/centos/docker-ce.repo
安装 Docker Engine-Community
$ sudo yum install docker-ce docker-ce-cli containerd.io
启动 Docker
$ sudo systemctl start docker
通过运行 hello-world 映像来验证是否正确安装了 Docker Engine-Community 。
$ sudo docker run hello-world
安装成功!
3. docker 部署一个flask项目
需求:基于docker创建在ubuntu18.04系统上运行Flask网站
流程:
- 在centos7.9+安装docker
- 基于docker
- 获取基础镜像 ubuntu18.04
- 基于基础镜像自定义镜像【ubuntu+python环境+代码】
- 基于镜像创建容器+运行
- 获取镜像
docker search ubuntu
docker pull ubuntu:18.04
- 查看镜像
docker images
- 构建自定义镜像
在docker宿主机centos7.9创建2个文件:Dockerfile、app.py
#关Dockerfile
# Base images 基础镜像
FROM ubuntu:18.04#MAINTAINER 维护者信息
maintainer wzybmw888@163.com#RUN 执行以下命令
RUN apt update
RUN apt install python3 python3-pip -y
RUN pip3 install flask
RUN mkdir -p /data/www#拷贝文件至工作目录
COPY app.py /data/www/app.py#工作目录
WORKDIR /data/www/#EXPOSE映射端口
EXPOSE 80#容器启动时执行命令
CMD ["python3","app.py"]
app.py
from flask import Flaskapp = Flask(__name__)@app.route("/index")
def index():return "欢迎光临红浪漫"if __name__ =="__main__":app.run(host="0.0.0.0",port=8000)
命令构建自定义镜像(模板)
docker build -t wupeiqi/web1:1.0 . -f Dockerfile
基于镜像创建容器+运行
docker run -p 80:8000 -d --name v123 wupeiqi/web1:1.0
-p 表示外部端口80访问内部端口8000, -d表示后台运行
- 补充
docker ps -a 列出所有创建的容器
docker ps 列出所有运行的容器
docker stop xx1 xx2 停止正在运行的容器,xx1可以是容器id也可以是name
docker rm xx1 xx2 删除容器
- Dockerfile指令
删除停止运行的容器
docker rm $(docker ps -qa)
4. Docker运行mysql服务
原始视频链接 https://www.bilibili.com/video/BV1wQ4y1Y7SE?p=16&spm_id_from=pageDriver&vd_source=7ac19d5113271a9a076e045912769b5e
下载mysql8.x
docker pull mysql:8.0.22
1启动mysql 开放端口映射(3306),使用-e设置root用户密码,后台运行-d,指定名称–name,总是运行
docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d --name mysql01 --restart=always mysql:8.0.22
新开一个窗口
- 持久化宿主机
-v /root/data:/var/lib/mysql
docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d --name mysql01 --restart=always -v /root/data:/var/lib/mysql mysql:8.0.22
5. Docker运行redis服务
docker pull redis:5.0.12
docker run -p 6379:6379 -d redis:5.0.12
docker exec -it 70e bash
启动redis 映射端口(6379) 后台启动-d 指定名称–name 总是启动 --restart=always
docker run -p 6379:6379 -d --name redis01 --restart=always redis:5.0.12
redis支持内存数据持久化:
1.rdb持久化: 快照 Redis服务器将某一时刻数据以快照文件形式写入到磁盘
2.aof持久化: redis服务器将所有redis客户端的写操作以命今方式记录到日志文件中 AOF更加安全 everysec
3.docker 启动redis 映射端口(6379) 后台启动-d 指定名–ame 总是启动 --restart=alnays 运行redis如何开启持久化
注意: 只要开启了持久化,将持久化文件生成容器中/data/目录中
docker run --name redis01 -d -p 6379:6379 --restart=always redis:5.0.12 redis-server --appendonly yes
4.docker启动redis 开放口 后台启动 指定名 总是启动 开启持化 映射数据文件外部
docker run --name redis01 -d -p 6379:6379 --restart=always -v /root/redisdata:/data redis:5.0.12 redis-server --appendonly yes
6. Docker 配置Nginx服务
https://www.jianshu.com/p/f2c6ad35fbb0
7. Docker Compose
sudo curl -L https://github.com/docker/compose/releases/download/1.25.5/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-composesudo chmod +x /usr/local/bin/docker-compose
#启动项目
docker-compose
【-f docker-compose.yml的路径】
【-d 】(后台启动)up#关闭用docker-compose启动的所有容器
docker-compose
【-f docker-compose.yml的路径】
down
docker-compose文件模板
#docker-compose的版本
version: "3.8"
#一组容器
services:#容器(自定义),默认生成的容器名为:项目名(docker-compose.yml所在目录的目录名)_容器_序号。container1:#镜像image: image1#通过Dockerfile构建镜像然后运行build: /dir/of/Dockerfile#容器名container_name: container-name #端口映射(可多个) 宿主主机端口:容器端口 ports:- 80:80#数据卷(可多个) 宿主主机文件(必须已存在):容器文件volumes:- /path/in/host:/path/in/container#环境变量(可多个)environment:- var=value#覆盖容器启动时执行的命令command: new-command#先启动这些,再启动本身.depends_on:- 服务1