云端网站建设,php7 wordpress速度,中国设计素材网,wordpress 搭建可视化1 使用docker的原因
一致性和可移植性#xff1a;Docker 容器可以在任何支持 Docker 的环境中运行#xff0c;无论是开发者的笔记本电脑、测试服务器还是生产环境。这确保了应用在不同环境中的行为一致#xff0c;减少了“在我的机器上可以运行”的问题。
隔离性#xff…1 使用docker的原因
一致性和可移植性Docker 容器可以在任何支持 Docker 的环境中运行无论是开发者的笔记本电脑、测试服务器还是生产环境。这确保了应用在不同环境中的行为一致减少了“在我的机器上可以运行”的问题。
隔离性每个 Docker 容器都是独立的拥有自己的文件系统、网络接口和进程空间。这使得不同应用之间不会互相干扰提高了系统的稳定性和安全性。
资源效率Docker 容器共享宿主机的操作系统内核因此它们比虚拟机更轻量启动速度更快占用的资源更少。这使得在相同的硬件资源下可以运行更多的应用实例。
快速部署和扩展Docker 容器可以快速启动和停止这使得应用的部署和扩展变得非常容易。通过 Docker Compose 或 Kubernetes 等工具可以轻松管理多个容器和服务。
2 docker与docker-compose的关系
Docker 用于管理单个容器而 Docker Compose 用于管理多容器应用。
使用 Docker Compose 需要三个步骤
用 Dockerfile 定义应用环境。在 docker-compose.yml 文件中定义应用服务。运行 docker-compose up 命令来启动和运行应用。
环境准备
ubuntu 22.04 LTS(腾讯云),python 3.10 文件目录结构是这样的
project/
├── app/
│ ├─ __init__.py
│ ├── app.py
│ └── requirements.txt
├── docker-compose.yml
└── Dockerfile其中app.py的内容如下
from app import app# 使用内存存储来替代 Redis
cache {}def get_hit_count():# 检查 hits 键是否存在如果不存在则初始化为 0if hits not in cache:cache[hits] 0# 增加计数cache[hits] 1return cache[hits]app.route(/)
def hello():count get_hit_count()return fHello World! I have been seen {count} times.\n# 只有直接运行此文件时才执行
if __name__ __main__:app.run(host0.0.0.0, port5000, debugTrue)init.py的代码如下
from flask import Flaskapp Flask(__name__)# 导入路由
from app.app import * 以下是创建一个基本的Python服务Dockerfile的步骤
选择基础镜像通常我们会选择官方提供的Python镜像作为基础。设置工作目录使用WORKDIR指令设置容器内的工作目录。复制文件使用COPY指令将本地文件复制到容器中。安装依赖使用RUN pip install -r requirements.txt安装Python依赖。暴露端口使用EXPOSE指令指定应用运行时需要暴露的端口。定义启动命令使用CMD或ENTRYPOINT指令定义容器启动时执行的命令。 其中我的Dockerfile是这样的
# syntaxdocker/dockerfile:1
FROM python:3.10-slim
WORKDIR /app
COPY app/requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
ENV FLASK_APPapp
ENV FLASK_ENVdevelopment
EXPOSE 5000
CMD [flask, run, --host0.0.0.0]我的docker-compose.yml是这样的
version: 3.10
services:web:build: .ports:- 5000:5000volumes:- .:/appenvironment:- FLASK_APPapp.py- FLASK_ENVdevelopment
如果Dockerfile和docker-compose不会写可以找官网上的例子进行仿写。 备注Dockerfile 是一个文本文件它没有文件扩展名。它就是名为 “Dockerfile” 的文件注意 D 是大写的。这里Dockerfile是约定俗成的当然也可以改名字但是需要加参数-f 然后在腾讯云上输入sudo docker-compose up 然后等待一段时间会出现 这时候你的服务就部署成功了访问http://ip:5000就可以看到web已经成功执行。 对于有些第一次访问不成功的可以在安全组里放出5000端口 然后刷新网页就可以访问了。 一些常用的docker 命令 列出所有容器包括停止的 docker ps -a列出正在运行的容器 docker ps启动一个已停止的容器 docker start my_container停止一个正在运行的容器 docker stop my_container删除一个容器 docker rm my_container进入一个正在运行的容器 docker exec -it my_container /bin/bash查看容器的日志 docker logs my_container镜像操作 列出所有镜像 docker images拉取一个镜像 docker pull nginx删除一个镜像 docker rmi nginx构建一个镜像 docker build -t my_image:latest .-t my_image:latest指定镜像名称和标签.Dockerfile 所在的目录 查看镜像的历史记录 docker history my_image:latest网络操作 列出所有网络 docker network ls创建一个新的网络 docker network create my_network删除一个网络 docker network rm my_network查看网络的详细信息 docker network inspect my_network卷操作 列出所有卷 docker volume ls创建一个新的卷 docker volume create my_volume删除一个卷 docker volume rm my_volume查看卷的详细信息 docker volume inspect my_volume系统操作 清理未使用的资源 docker system prune删除所有未被使用的容器、网络、卷和镜像。加上 -a 或 --all 选项可以删除所有资源包括正在使用的docker system prune -a查看 Docker 信息 docker info查看 Docker 版本 docker version其他常用命令 查看 Docker 帮助文档 docker --help查看某个 Docker 命令的帮助文档 docker run --help