docker安装使用 + docker部署:flask + gunicorn
官方的一键安装方式:
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
启动Docker的命令:
sudo systemctl start docker
通过运行hello-world镜像来验证是否正确安装了Docker Engine-Community。
// 拉取镜像 sudo docker pull hello-world // 执行hello-world sudo docker run hello-world
如果执行之后,控制台显示如下信息,则说明Docker安装和启动成功:
[root@iZ8vb8pfb2awsz4qy7vm7qZ ~]# docker run hello-world Hello from Docker! This message shows that your installation appears to be working correctly.
docker部署应用:
test_main.py:
from flask import Flask # 安装依赖 # pip3 install -U flask app = Flask(__name__) @app.route('/') def index(): return "测试容器部署!" if __name__ == '__main__': app.run(host='0.0.0.0', port=8888) # 浏览器访问测试 # http://127.0.0.1:8888/
run_gunicorn.py:
下面options 是gunicorn配置项
from test_main import app,是把test_main 启动文件中的app获取过来
from gevent import monkey monkey.patch_all() from gunicorn.app.base import BaseApplication from test_main import app class StandaloneApplication(BaseApplication): def __init__(self, app, options=None): self.options = options or {} self.application = app super().__init__() def load_config(self): config = {key: value for key, value in self.options.items() if key in self.cfg.settings and value is not None} for key, value in config.items(): self.cfg.set(key.lower(), value) def load(self): return self.application if __name__ == '__main__': options = { # 'bind': '0.0.0.0:8888', # 'workers': 4, # 'worker_class': 'gevent' # 预加载资源 "preload_app" : True, # 绑定 ip + 端口 这个地方的ip和端口要和 flask文件一致 这样就能按照这个ip和端口访问到 "bind" : "0.0.0.0:8888", # 进程数 开多少个应用 "workers" : 3, # 线程数 = 进程数 * 2 "threads" : 6, #设置守护进程,将进程交给supervisor管理 他可以守护 执行的py文件,挂了能自动重启 "daemon" : 'true', # 等待队列最大长度,超过这个长度的链接将被拒绝连接 "backlog" : 2048, # 工作模式--协程 "worker_class" : "gevent", # 最大客户客户端并发数量 "worker_connections" : 1200 } StandaloneApplication(app, options).run()
Dockerfile:
# # Dockerfile FROM centos:7.9.2009 RUN yum makecache fast; RUN yum install python3-devel python3-pip -y RUN pip3 install --upgrade pip RUN pip3 install flask==2.0.3 RUN pip3 install gunicorn==21.2.0 RUN pip3 install gevent==22.10.2 COPY test_main.py run_gunicorn.py /opt WORKDIR /opt EXPOSE 8888 CMD ["python3","run_gunicorn.py"]
首先要构建镜像:-t是镜像的名字
docker build -t my_flask_app .
启动镜像: -d 标志告诉Docker将容器作为后台服务在后台运行
docker run -d -p 8888:8888 my_flask_app
查看镜像:
docker ps
防火墙要打开8888 此时可以打开网址
打包镜像与加载镜像:
docker images
在哪个路径就会打包到哪里:my_flask_app:latest是镜像
docker save -o my_flask_app.tar my_flask_app:latest
可以先把现有的删除,做测试:
docker rmi my_flask_app
加载容器的方法
docker load -i my_flask_app.tar
启动容器:
docker run -d -p 8888:8888 my_flask_app
可以进入容器查看和安装
-
使用以下命令进入容器:
退出容器:exit
删除全部没使用的容器,释放资源:
docker container prune
删除所有镜像:
docker rmi $(docker images -a -q)
停止运行应用:
-
停止容器:docker stop 容器ID 删除容器:docker rm container_id
强制删除镜像 docker rmi -f image_id
容器无法启动,查看报错:docker logs CONTAINER_ID
Docker其他常见命令
安装完成Docker之后,这里汇总列一下常见的Docker操作命令:
- 搜索仓库镜像:docker search 镜像名
- 拉取镜像:docker pull 镜像名
- 查看正在运行的容器:docker ps
- 查看所有容器:docker ps -a
- 删除容器:docker rm container_id
- 查看镜像:docker images
- 删除镜像:docker rmi image_id / 强制删除镜像 docker rmi -f image_id
- 启动(停止的)容器:docker start 容器ID
- 停止容器:docker stop 容器ID
- 重启容器:docker restart 容器ID
- 启动(新)容器:docker run -it ubuntu /bin/bash
- 进入容器:
docker attach 容器ID或docker exec -it 容器ID /bin/bash,推荐使用后者。
更多的命令可以通过docker help命令来查看。
https://blog.csdn.net/weixin_43715214/article/details/125951281
保存、导入镜像
docker save 是保存docker的镜像到本地
docker load 是把本地镜像加载到docker,然后,docker就可以启动这个镜像了
浙公网安备 33010602011771号