• 系列其余内容

    1. docker疾速创立轻量级的可移植的容器✓
    2. docker&flask疾速构建服务接口
    3. docker&uwsgi高性能WSGI服务器生产部署必备
    4. docker&gunicorn高性能WSGI服务器生产部署必备
    5. docker&nginx&gunicorn实现负载平衡
    6. docker&ngxtop并实时解析nginx日志
    7. docker&supervisor监控你的服务
    8. docker&pyinstaller两步法构建小体积容器
    9. locust对你的服务做高并发测试
    10. postman热门的API调试工具
    11. docker+flask+gunicorn+nginx+pyinstaller+supervisor搭建一个轻量级满足高并发性能的服务

docker装置

  • 本教程是基于redhat linux服务器的
  • 介绍

    • docker为应用程序提供了隔离的运行空间:
    • 镜像作为根底,一个镜像能够创立多个容器,不便服务的疾速部署和迁徙;
    • 每个容器内都蕴含一个独享的残缺用户环境空间,并且一个容器内的变动不会影响其余容器的运行环境;

在线装置

  • 阿里云装置docker

    curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

  • 启动服务

    # 先切换到root用户, 顺次执行以下命令systemctl enable docker # 开机主动启动dockersystemctl start docker # 启动dockersystemctl restart docker # 重启dokcer

离线装置

  • 关上网页抉择对应的docker版本
https://download.docker.com/linux/static/stable/x86_64/
  • 上传到服务器(咱们抉择的版本是docker-rootless-extras-20.10.5.tgz)
tar -xvf docker-20.10.5.tgzcp docker/* /usr/bin/dockerd &docker -v

删除docker

  • 查问以后零碎装置了哪些docker包

    yum list installed | grep dockeryum remove containerd.io.x86_64 docker-ce.x86_64 docker-ce-cli.x86_64 docker-ce-rootless-extras.x86_64docker -v

构建镜像

  • 应用开源镜像

    docker pull alpine # 轻量级,但无奈执行python打包的exe文件docker pull debian:buster-slim # 体积也比拟小。能够执行python打包的exe文件

  • 构建你的第一个镜像

    具体的服务构建能够建下篇内容#docker&flask疾速构建服务接口#。

    • 验证flask服务的有效性
    # flask_test.py为咱们结构的flask服务python3 flask_test.py即可启动服务wget -O apirsult.txt "http://127.0.0.1:2222/test?name=xiaoming&pwd=123

  • 依Dockerfile文件build集体Docker镜像及服务的有效性
%%writefile DockerfileFROM python/3.8WORKDIR /home/myfirstapi/RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtimeCOPY . .RUN pip install -r requirements.txt -q -i https://pypi.tuna.tsinghua.edu.cn/simple && \rm -rf /var/cache/apk/*expose 2222CMD ["python3", "flask_test.py"]# docker构建镜像并启动服务docker build -t test/api:1.0 . docker run -d -p 2222:2222 test/api:1.0 wget -O apirsult.txt "http://127.0.0.1:2222/test?name=xiaoming&pwd=123"

docker常用命令

  • 根本应用,能够利用docker构建容器了

    • 容器的根本利用,波及到镜像及容器构建,容器查看相干内容。
# 构建名称为test/api,版本为2.0的镜像docker build -t test/api:2.0 . # 通过镜像test/api创立一个后盾运行的容器,且映射端口4050docker run -d -p 4050:4050 test/api:2.0 # 进入容器外部交互式命令空间的两种形式docker run -it test/api:2.0 /bin/bash docker container exec -it container-id /bin/bash# 查看并进行容器docker psdocker stop ontainer-id# 查看日志docker logs -f --tail 100 container-idor vim /var/lib/docker/containers/容器ID/容器ID-json.log# 查看端口docker port container-id
  • 溜溜的,玩转docker了能够

    • 波及到容器迁徙,批改及数据卷相干内容
# 与容器中文件交互docker cp container-id:/root/test.txt /root/docker cp /root/ container-id:/root/test.txt# 查看镜像中的文件docker exec container-id ls -lthdocker exec container-id cat file.py# 查看容器的过程状况docker top container-iddocker stats container-id# 保留批改的容器为镜像docker commit -a "my_name" -m "install xxx" container-id image_name# 保留镜像docker save -o xxx.tar 镜像名称# 加载镜像名docker load --input test.tar   # 批改镜像名称docker tag [镜像id] [新镜像名称]:[新镜像标签]# 数据卷-使服务器和容器内对应的文件同步更新docker run -d -p 4001:4000 --name web -v /home/linux:/home/docker/ test/api:1.0
  • 掀桌了了,疾速删除所有镜像及容器

    • 疾速进行,删除所有的容器,镜像
# 查看镜像概览docker system df# 删除所有docker中所有未应用的数据docker system prune -a# 进行容器内的所有过程docker pause container-id# 删除全副容器docker kill $(docker ps -a -q)# 删除所有容器docker rm $(docker ps -a -q)# 删除所有镜像docker rmi $(docker images -q)