【Docker】部署环境

2023-05-16

@[toc] 目录

本次任务概要

  • 1、 编写dockerfile 然后创建镜像
  • 2、运行容器测试
  • 3、镜像打包及解包
  • 4、docker 设置环境变量

任务流程具体操作说明

0、虚拟机环境及初始环境配置

初始方案

工作中需要将环境部署到麒麟操作系统上,需要在该操作系统部署相同的环境,以备后续程序可以迁移到新电脑上。 
初始方案是,在新操作系统上配置一个和原电脑同名的用户名,相同的目录,进入相同的目录配置相同版本的python,及虚拟环境。 
具体步骤如下
- 1、在可以上网的虚拟机中,安装好麒麟操作系统,联网安装好 pip、pip3、python3 等。
[https://www.cnblogs.com/pipci/p/16173352.html](https://www.cnblogs.com/pipci/p/16173352.html)

为了下载速度更快,换源
在pip 命令末尾加上 '-i 源地址'
[清华源](https://www.csdn.net/tags/Mtjagg0sOTc1MjgtYmxvZwO0O0OO0O0O.html)

- 2、新建用户 如:admin,切换到该用户登录操作系统
// 切换到用户 admin
su admin
// 
- 3、在该操作系统下配置虚拟环境 并部署

// 安装虚拟环境工具 virtualenv 
 pip3 install virtualenv
// virtualenv 虚拟环境目录创建
virtualenv /home/admin/admin_env --python=python3
// 激活
source /home/admin/admin_jenv/scripts/activate
// 在该虚拟环境下安装相关库,如
pip3 install arrow -i 清华源地址

1、编写dockerfile 然后创建镜像

下面为dockerfile.core 的目录

#FROM    aadebuger/pythonflask
from python:3.6
Add src/main/python /code

run pip install iso8601  -i https://pypi.douban.com/simple
run pip install pingpp  -i https://pypi.douban.com/simple
run pip install flask  -i  https://pypi.douban.com/simple
run pip install pymongo -i  https://pypi.douban.com/simple
run pip install mongoengine -i  https://pypi.douban.com/simple
run pip install flask_restful -i  https://pypi.douban.com/simple
run pip install passlib  -i  https://pypi.douban.com/simple
run pip install qiniu -i https://pypi.douban.com/simple
run pip install passlib -i https://pypi.douban.com/simple
run pip install pandas -i https://pypi.douban.com/simple
run pip install requests -i https://pypi.douban.com/simple
run pip install redis -i https://pypi.douban.com/simple
run pip install apscheduler -i https://pypi.douban.com/simple
run pip install websockets -i https://pypi.douban.com/simple
run pip install aiohttp -i https://pypi.douban.com/simple
run pip install jupyter -i https://pypi.douban.com/simple
run pip install aioredis -i https://pypi.douban.com/simple
EXPOSE 5000
workdir /code
CMD ["python", "jetcloud/jetcloudrest.py","core"]

上面程序中的 pip 可以依据安装的环境替换为 pip3
EXPOSE 为暴露的端口, 部署的demo程序后续可以通过命令行测试

//命令行使用docker创建镜像
docker build -t den -f Dockerfile.core .

在运行该命令的过程中遇到了如下问题:
1、网络连接不畅通,导致每一个安装包都Retry Retry 直至找不到对应包。
解决方法链接暂时找不到了,复制Ipv4 连接失败的错误码可找到解决办法,然后搜索相关错误码即可找到解决方法,主要是 修改一下ipv4的配置端口号 = 1 ,然后重启一下,再次执行docker build … 命令即可。

2、期间可能因为网络不畅通再次出现安装对应包失败的情况,重复执行几次 docker build ,直到最后执行完成时为 successfully 的报告即可。

3、安装好之后需要进入下一步容器测试,但可能因为demo程序中的一些引用的头文件依赖库太旧而找不到,需要将不再使用的依赖库头文件注释掉,然后重新执行 docker build 程序。

2、运行容器测试

docker 创建好镜像之后,运行容器会默认执行dockerfile.core 末尾的[CMD] 代码段之后的命令,如果该命令为demo程序的启动命令,则基于该镜像创建容器之后,会启动该demo程序。

这一部分可以参考的博客文章

//docker run 镜像名, 加入参数 -d 后台运行
docker run den
//后台运行启动容器  
docker run -d den

//查看创建的容器列表,包括已经停止的
docker ps -a 

//查看正在运行的容器列表
docker ps 

//查看容器的日志 , 最后一个参数为容器的id 
docker logs 4d3

//删除容器  
docker stop 容器名/容器ID

//修改相关配置文件

vi 文件名, i 插入,x删除,r替换,:w!强制退出保存。Ctrl+C 退出文本编辑器。 

//检查配置端口
[启动后暴露端口](https://www.csdn.net/tags/Ntzagg3sMTc4NS1ibG9n.html)
启动容器的时候通过参数指定

# 暴露特定端口到主机的特定端口

docker run -p 80:80

# 暴露容器的所有端口(exposed 端口)到主机的随机端口

docker run -P

# 添加dockerfile中expose 的端口

docker run -expose


wget http://localhost:端口号

想要测试一个接口
http://localhost:8785/testJob

//显示连接成功即可了。

3、镜像打包及解包

通过上面的demo程序的镜像程序已经测试通过了,说明各个数据包也安装好了,现在只需要配置一个没有demo程序,只有安装好的数据包的镜像,重新写一个dockerfile.core 文件,将与demo程序有关的部分删去,仅仅保留run pip3 install 的部分, 作为基础镜像,后面需要运行自己的业务程序,则以基础镜像为父镜像,写一个新的xxxfile.core文件,在该文件中引用父镜像的core文件,在头部添加"FROM dockerfile.core", 然后加入对应应用程序需要暴露的端口和,应用程序启动需要的命令,及应用程序需要的安装包即可。

镜像打包有多种方式,这次只需要用到比较简单的,直接将镜像打包即可。

使用 save 和 load
1,查看本机的容器
这两个命令是通过镜像来保存、加载镜像文件的。首先我们使用 docker images 命令查看本机所有的镜像。

2,保存镜像
(1)下面使用 docker save 命令根据 ID 将镜像保存成一个文件。

docker save 0fdf2b4c26d3 > hangge_server.tar
(2)我们还可以同时将多个 image 打包成一个文件,比如下面将镜像库中的 postgres 和 mongo 打包:

docker save -o images.tar postgres:9.6 mongo:3.4
3,载入镜像
使用 docker load 命令则可将这个镜像文件载入进来。

docker load < hangge_server.tar

4、Docker 设置环境变量

//ENV key value
//ENV key1=value1 key2=value

ENV CONFIG /usr/local.config

ENV PYTHON_VERSION 3.5.4

ENV VERSION=1.0 DEBUG=on \
	NAME="Happy feet"

在dockerfile.core 中使用

$NODE_VERSION
$PYTHON_VERSION

在docker run 命令中 设置环境变量


 - [ ] List item

//docker run --env <key>=<value> <IMAGE-ID>
docker run -e  VAR1=value1 --env VAR2=value2 ubuntu

docker run --env  VAR1=value1 --env VAR2=value2 ubuntu


使用文件作为环境变量:


docker run --env-file .env ubuntu

// 其中 .env 文件如下
//
VAR1=value1
VAR2=value2
USER

查看环境变量:

docker inspect <CONTAINER-NAME> OR <CONTAINER-ID>

参考资料

  • docker 配置环境变量
  • 1
  • 2
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【Docker】部署环境 的相关文章

随机推荐

  • UCOSIII中的消息传递

    文章目录 序言什么是消息队列消息队列相关函数OSQCreate OSQPend OSQPost 消息队列实验总结 序言 前面我们介绍了信号量 xff0c 通过信号量我们能够解决优先级反转 xff0c 资源共享冲突等问题 xff0c 但是我们
  • Qt之可视化QSS生成器(初探)

    简述 QSS是Qt的样式表 xff0c 类似于CSS xff0c 目前主要支持CSS2 写代码调样式非常不直观 xff0c 因此需要一个所见即所得的可视化样式生成器 xff0c 网上有很多CSS样式生成器 xff0c 最适合网页开发人员的1
  • 【秒懂音视频开发】26_RTMP服务器搭建

    流媒体 基本概念 流媒体 xff08 Streaming media xff09 xff0c 也叫做 xff1a 流式媒体 是指将一连串的多媒体数据压缩后 xff0c 经过互联网分段发送数据 xff0c 在互联网上即时传输影音以供观赏的一种
  • 论文笔记之PPDM(Parallel Point Detection and Matching for Real-time Human-Object Interaction Detection)

    分为两分支 xff0c 一个用于点 xff08 人 物 交互三个点 xff09 检测 xff0c 一个用于点匹配 xff0c 达到了实时的效果 CVPR2020接收 论文地址 xff1a https arxiv org pdf 1912 1
  • FFmpeg入门 - rtmp推流

    FFmpeg入门 视频播放 音视频开发老马的博客 CSDN博客介绍了怎样用ffmpeg去播放视频 里面用于打开视频流的avformat open input函数除了打开本地视频之外 实际上也能打开rtmp协议的远程视频 实现拉流 demo
  • C/C++音视频高级开发 FFmpeg编程入门

    1 播放器框架 1 1常用音视频术语 容器 xff0f 文件 xff08 Conainer File xff09 xff1a 即特定格式的多媒体文件 xff0c 比如mp4 flv mkv等 媒体流 xff08 Stream xff09 x
  • 在vs code中调试编译有多个.c或.cpp文件的项目,报错undefined reference to “xxx“(cJSON小项目为例)

    项目下载链接 xff1a https sourceforge net projects cjson 项目主要文件 xff1a cJSON c cJSON h test c 问题点 xff1a 有完整的头文件但编译时找不到 xff0c 一直报
  • LSTM网络中各层解读

    构建深度神经网络最关键的部分之一是 当数据流经不同的层时 xff0c 要对其有一个清晰的视图 xff0c 这些层经历了维度的变化 形状的改变 扁平化和重新塑造 结构顺序 每层解读 xff1a 把单词变为tokens xff1b embedd
  • Pytorch安装过程中遇到的失败

    conda 进入虚拟环境 xff1a 1 conda 命令行安装 conda install pytorch torchvision cudatoolkit 61 10 2 c pytorch 但出现以下错误 错误原因 xff1a 1 问题
  • RuntimeError: Cannot initialize CUDA without ATen_cuda library.

    RuntimeError Cannot initialize CUDA without ATen cuda library PyTorch splits its backend into two shared libraries a CPU
  • CUDA安装成功后配置环境变量

    图森未来 2021届 提前批 岗位 图森未来 自动驾驶2021届 提前批 内推 xff1a 投递方式 配置环境变量 xff08 安装成功时 xff0c 有提示的相应地址 xff09 官方上面是直接输入 但是我觉着在 etc profile
  • pytorch gpu不可用 原因核查

    首先检查pytorch cuda 显卡驱动 之间的对应关系 查看pytorch对应的cuda版本 打开终端输入 xff1a python 输入命令 xff1a import torch 再输入 xff1a print torch versi
  • Pytorch CUDA Cudnn python nvidiam 对应关系

    微信公众号 xff1a 目标检测与跟踪基础前沿 目标跟踪基础与智能前沿 1 这里pytorch和cudatoolkit版本对应关系 xff1a https pytorch org get started previous versions
  • 目标跟踪环境配置(四):OTB配置安装 (从下载到绘图)

    目标跟踪基础与智能前沿 点击上方链接 xff0c 微信关注回复下方安装包对应的关键词 xff0c 获得对应的百度云下载链接 论文原文 1 xff09 Online Object Tracking A Benchmark 1 下载OTB数据集
  • 人体姿态估计综述(Monocular Human Pose Estimation: A Survey of Deep Learning-based Methods)

    1 总述 1 1 应用 电影和动画虚拟现实人机交互视频监控医疗救助自动驾驶运动动作分析 1 2 挑战 人体姿势估计所面临的挑战主要体现在三个方面 xff1a 灵活的身体构造表示复杂的关节间关节和高自由度肢体 xff0c 这可能会导致自我闭塞
  • 深度学习: Epoch 是什么?

    文章目录 神经网络的训练梯度下降法 Epochbatchsizeiterations 神经网络的训练 梯度下降法 学习率 xff1a 步长更大 61 学习率更高 误差函数不断减小 如果训练数据过多 xff0c 无法一次性将所有数据送入计算
  • 四轴飞行器的设计与开发过程

    文章目录 一 系统组成模块1 上位机 xff08 PC xff09 2 遥控器系统3 飞行器机体系统3 1 接收遥控器无线数据 xff0c 并发送飞行数据到遥控器无线通信模块 Nordic NRF24L013 2 采集传感器数据并进行姿态解
  • ADTrack: Target-Aware Dual Filter Learning for Real-Time Anti-Dark UAV Tracking

    文章目录 摘要IntroductionRelated WorkMethodExperimentCONCLUSION 摘要 基于先验相关滤波 xff08 CF xff09 的无人机 xff08 UAV xff09 跟踪方法主要集中在白天的跟踪
  • 【UBUNTU】- 修改操作系统时间

    MFC 将DWORD类型转换成CString strTemp span class token punctuation span span class token function Format span span class token
  • 【Docker】部署环境

    64 toc 目录 本次任务概要 1 编写dockerfile 然后创建镜像2 运行容器测试3 镜像打包及解包4 docker 设置环境变量 任务流程具体操作说明 0 虚拟机环境及初始环境配置 初始方案 工作中需要将环境部署到麒麟操作系统上