当前位置: 首页 > news >正文

容器化部署项目05

一、工作原理

镜像:容器的模板,包括容器运行时所需的数据
容器:运行中的进程,依赖镜像运行,镜像的具现化
镜像你可以把它看成Python中的类,而容器可以看做是类的实例化对象。
一个类可以有多个对象,同理一个镜像可以有多个容器

docker引擎是一个c/s结构的应用
Server是一个常驻进程
RESTAPI实现了client和server间的交互协议
CLI实现容器和镜像的管理,用户通过命令行对其操作
在这里插入图片描述
脚本自动安装

curl -sSL https://get.docker.com/>get-docker.shsh get-docker.sh --mirror Aliyun
docker--version # 查看版本Docker version 20.10.6.build370c289
systemctl enable docker  # 设置开机启动# 设置镜像源
vim /etc/docker/daemon.json
{"registry-mirrors":["https://docker.mirrors.ustc.edu.cn","https://registry.docker-cn.com","https://hub-mirror.c.163.com","https://mirror.ccs.tencentyun.com","https://reg-mirror.qiniu.com"]
}
# 重载
systemctl daemon-reload
# 启动docker
systemctl start docker

卸载docker

sudo yum remove docker-ce docker-ce-cli containerd.io
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd

下载指定版本

curl https://releases.rancher.com/install-docker/18.09.sh | sh

二、容器操作

"""
# 从镜像仓库拉取镜像
docker pull 镜像:Tag
# 删除镜像,前提删除对应容器
docker rmi 镜像ID或镜像名
存储的镜像目录:/var/lib/docker/image# 启动容器:docker run <options> 镜像:tag commands
-d指定容器运行后台
-i用于控制台交互
-t支持终端登录,通常和-i参数一起使用
-p映射容器端口,用法:-p宿主机端口:容器端口
-v挂载容器存储卷,用法:-v宿主机路径:容器路径
-e设置容器的环境变量用于容器内的应用程序进行相关配置,用法-e环境变量名=变量值
--name=“containername”指定容器的名称
--rm 退出容器时删除容器,与--restart冲突
--restart=“always”停止容器时是否自动重启,与--rm冲突
例:docker run -it -p 3307:3306 -e MYSQL_ROOT_PASSWORD=devops mysql:5.7# 查看容器:docker ps [-qa]
ps是进程状态的意思,docker ps指的是容器的状态查询
-a all查看全部容器,包括没运行的容器
-q 只查看容器的标识# 停止容器:docker stop 容器id
停止所有容器:
docker stop $(docker ps -qa)# 删除容器:docker rm 容器id
删除所有容器:
docker rm $(docker ps -qa)# 查看容器的日志:docker logs -f 容器标识
-f 以滚动的方式查看容器最后几行
--tail=100# 进入容器内部:docker exec -it 00 bash
exec 执行的意思
-it 交互式运行容器
bash linux操作系统的默认界面shell
"""

三、部署项目

"""
1、复制html目录:cp -rf software/autotpsite/dist html
创建nginx容器:docker run -itd -p 80:80 --name=mynginx --rm nginx
复制conf文件到容器:docker cp mynginx:/etc/nginx conf
启动nginx容器:docker run --name mynginx -v "$PWD/html":/usr/share/nginx/html -v "$PWD/conf":/etc/nginx -p 80:80 -itd nginx2、拉取镜像并运行:docker pull python:3.8
docker run -itd -v /root/software/autotpsite:/opt --name autotpenv python:3.8
进入python容器下载依赖库:docker exec -it 4f bash
pip install -r requirements.txt -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple some-package
测试一下:python manage.py runserver
安装uwsgi:pip install uwsgi -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple some-package
启动:uwsgi uwsgi.ini或者
创建部署脚本auto_deploy.sh
cd opt/ && pip install -r requirements.txt -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple --trusted-host mirrors.tuna.tsinghua.edu.cn && pip install uwsgi -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple --trusted-host mirrors.tuna.tsinghua.edu.cn && uwsgi uwsgi.ini && tail -f > /dev/null
tail -f > /dev/null是阻塞进程,不让sh命令停止
加入8081端口映射,重启python容器:
docker run -itd -v /root/software/autotpsite:/opt -p 8081:8081 --name autotpenv2 python:3.8 sh /opt/auto_deploy.sh3、修改nginx conf配置文件并重启nginx:
vim /root/conf/conf.d/default.conf
location /api {proxy_pass  http://8.130.12.186:8081;}查看容器网络,使用容器IP
docker network ls
docker network inspect bridge
找到没有映射的容器IP
修改nginx conf配置文件并重启nginx:
vim /root/conf/conf.d/default.conf
location /api {proxy_pass  http://172.17.0.4:8081;}
docker restart mynginx停止原容器:docker stop autotpenv2
"""

文章转载自:

http://RHTM9Qlg.pmptm.cn
http://gKamhPCR.pmptm.cn
http://wr8TYQxc.pmptm.cn
http://jY7mWFSB.pmptm.cn
http://roRlrNNQ.pmptm.cn
http://m3UBBr6q.pmptm.cn
http://uTtvix8W.pmptm.cn
http://JwUwWEjA.pmptm.cn
http://L66B0FPy.pmptm.cn
http://PsO4eAIq.pmptm.cn
http://HrMsppoD.pmptm.cn
http://jZeRkoCL.pmptm.cn
http://keMuVSHk.pmptm.cn
http://L5XMtGvc.pmptm.cn
http://TKysDyyQ.pmptm.cn
http://xy5G3A7e.pmptm.cn
http://JIo85taX.pmptm.cn
http://80mil5VS.pmptm.cn
http://qrQIaEID.pmptm.cn
http://ifVgEo4N.pmptm.cn
http://NSILECJ3.pmptm.cn
http://rkvNIWgC.pmptm.cn
http://4Wiy9aTf.pmptm.cn
http://Kq4JVbd1.pmptm.cn
http://P2JkAXER.pmptm.cn
http://vI3nlJ6c.pmptm.cn
http://2mPlsqNx.pmptm.cn
http://hdPiN6jG.pmptm.cn
http://amy5u6NF.pmptm.cn
http://XOWhBQC5.pmptm.cn
http://www.dtcms.com/a/386447.html

相关文章:

  • AI如何深度驱动数据资产入表业务开展-一线经验
  • Chromium 138 编译指南 macOS 篇:Xcode 与开发工具安装配置(二)
  • 网络.1 UDP
  • 在 Mac 环境安装全局默认版本 Python
  • 小迪安全v2023学习笔记(八十三讲)—— 组件安全JacksonFastJsonXStreamCVE复现
  • 鲁能大师显卡跑分计算规则,与算力对应关系?
  • 边缘智能的“隐形引擎”——TinyML 模型在 ARM Cortex-M 系列上的极致量化与加速实战
  • kernel32.dll如何修复?科普kernel32.dll缺失的故障问题的多种解决方法
  • git推送远程仓库
  • 「日拱一码」091 机器学习——集成学习
  • MTK Linux Charger驱动分析(五)- adapter_class.c
  • HarmonyOS 5.0应用开发——V2装饰器@once的使用
  • Day25_【深度学习(3)—PyTorch使用(5)—张量形状操作】
  • 微服务分布式事务解决方案梳理
  • 告别“长明灯”——塔能科技地下车库照明改造的极致节能
  • vue 3 阿里云视频播放器 如何让用户自己给视频添加节点
  • LinkedList 底层实现与 ArrayList 对比分析
  • 滚珠花键在半导体制造设备中承担怎样的核心功能?
  • 服装制造企业痛点解决方案:EFISH-SBC-RK3588 柔性化吊挂调度方案
  • 10cm钢板矫平机:工业制造中的“整形医生”
  • html表单登录模式代码
  • QUIC 协议域名封堵:核心原理、关键技术与实现路径(C/C++代码实现)
  • 8 基于机器学习进行遥感影像的地物分类-以随机森林为例
  • Qt读写SQLite示例
  • Jmeter性能测试之阶梯式场景、波浪式场景、服务器监控
  • 黄昏时刻复古胶片风格人像风光摄影后期Lr调色教程,手机滤镜PS+Lightroom预设下载!
  • Django ORM多对多关系实战指南
  • 【从零开始java学习|第十七篇】面向对象进阶
  • Three.js 开发实战教程(一):环境搭建与第一个 3D 场景
  • 旅游小程序的功能优势