【Docker】如何使用docker部署程序并移植(算法、接口)

原文作者:我辈李想
版权声明:文章原创,转载时请务必加上原文超链接、作者信息和本声明。



前言

我这里学的有限,docker部署程序就以算法、接口为例。移植涉及到2个服务器,我们把移植前服务器称为前服务器,移植后的服务器称为后服务器。

一、Docker的基本使用

1.安装Docker

# 卸载旧docker
sudo apt-get remove docker docker.io containerd runc
# 安装新docker
sudo apt update && sudo apt upgrade -y
sudo apt install docker docker.io
# docker信息
docker info

docker镜像操作

2.列出本地镜像

sudo docker images 

其中REPOSITORY:表示镜像的仓库源,TAG:镜像的标签,IMAGE ID:镜像ID,CREATED:镜像创建时间,SIZE:镜像大小。

3.获取镜像,创建本地ubuntu:13.10镜像

sudo docker pull ubuntu:13.10

4.查找镜像

sudo docker search httpd

5.删除本地镜像

sudo docker rmi hello-world

其中hello-world为本地镜像名字,可通过sudo docker images 查看。

6.创建自定义镜像

1.从已经创建的容器中更新镜像,并且提交这个镜像
2.使用 Dockerfile 指令来创建一个新的镜像

7.镜像标签

sudo docker tag 860c279d2fec runoob/centos:dev

docker容器操作

8.启动容器

命令行启动并进入容器

sudo docker run -it ubuntu /bin/bash

后端运行容器

docker run -itd --name ubuntu-test ubuntu /bin/bash

run具有很多参数,其中-d(–detach)参数不会进入容器,包括-h(–hostname)主机名、-p(–publish)端口映射、–name容器名称、-v(–volume)目录挂载等主要参数。–gpus all表示使用gpu计算。
可以参考如下示例:

sudo docker run --detach \
--hostname 202.182.104.229 \
--publish 443:443 --publish 80:80 --publish 9922:22 \
--name gitlab \
--restart always \
--volume /srv/gitlab/config:/etc/gitlab \
--volume /srv/gitlab/logs:/var/log/gitlab \
--volume /srv/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce:latest

9.查看所有容器

sudo docker ps -a

其中-a表示所有,其中CONTAINER ID:表示容器id,IMAGE:容器名字,COMMAND:命令,CREATED:创建时间,STATUS:运行状态,PORTS:端口,NAMES:名字。

10.停止容器

sudo docker stop <容器 ID>

11.重启容器

docker restart <容器 ID>

12.进入容器

docker attach <容器 ID>
docker exec -it <容器 ID> /bin/bash
docker exec -it <容器 name> /bin/bash

推荐大家使用 docker exec 命令,因为此退出容器终端,不会导致容器的停止。

13.删除容器

sudo docker rm -f <容器 ID>

二、镜像加速

在国内环境下,我们需要设置镜像加速,要不很多镜像都是timeout错误。这里使用的是阿里的镜像加速器。需要注册阿里云平台,设置镜像加速,链接:https://cr.console.aliyun.com/cn-beijing/instances/mirrors。只需要对应系统的shell命令,逐条执行即可.
其中registry-mirrors参数每个账户都不同。

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://5afmvkgl.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

在这里插入图片描述

三、docker容器更换软件源(linux源为阿里)

# 1.进入容器
docker exec -it <容器 ID> /bin/bash

# 命令行更换源
sed -i s@/deb.debian.org/@/mirrors.aliyun.com/@g /etc/apt/sources.list
sed -i s@/archive.ubuntu.com/@/mirrors.aliyun.com/@g /etc/apt/sources.list

在这里插入图片描述

四、部署jupyter+环境+算法

1.在本地创建一个新的文件夹,用于存储Jupyter的配置文件和数据

mkdir /home/user/jupyter_notebooks

2.在终端中输入以下命令拉取Jupyter镜像

docker search anaconda
docker pull continuumio/anaconda3

3.使用以下命令运行容器,将Jupyter服务映射到本地端口8888,并将本地文件夹映射到容器中以便访问数据文件和配置文件

docker run --restart=always -idt -p 8008:8008 --name=docker_anaconda  -v /home/user/jupyter_notebooks:/home/jupyter_book continuumio/anaconda3

其中,/home/user/jupyter_notebooks是你本地文件夹的绝对路径,/home是Jupyter容器中的工作目录,可以在容器中使用Jupyter notebook打开,进行文件操作。

4.运行以上命令后,终端会返回一个容器的ID,使用以下命令可以查看容器是否正常运行

docker ps

5.设置环境

# 进入容器
docker exec -it <容器 ID> /bin/bash
# 安装环境
pip install -r reque.txt
# 启动jupyter
jupyter notebook --port 8008 --ip 0.0.0.0 --allow-root

6.算法检验

http://localhost:8888

7.本地资料存储至容器

docker cp /usr/local/anaconda3/envs/pytorch/ docker_anaconda:/opt/conda/envs

8.修改jupyrt配置

# 1.进入容器
docker exec -it <容器 ID> /bin/bash
# 生成配置文件,默认位置:/root/.jupyter/jupyter_notebook_config.py
jupyter notebook --generate-config

# 启动ipython
ipython
# 键入如下命令
from notebook.auth import passwd
# 生成秘钥 密码:tianyi2023
passwd() 
# 退出Python,先保存秘钥
exit
# 2.退出容器
exit

# 将容器jupyter_notebook_config.py复制到宿主服务器,进行修改
sudo docker cp docker_anaconda:/root/.jupyter/jupyter_notebook_config.py jupyter_notebook_config.py

# sudo vim  jupyter_notebook_config.py
# jupyter_notebook_config.py 尾部追加内容
c.NotebookApp.notebook_dir ='/home/jupyter_book' # 默认打开位置
c.NotebookApp.ip='*'  # 星号代表任意ip,这个跟mysql的权限设置相似
c.NotebookApp.allow_root =True # 允许root运行
c.NotebookApp.allow_remote_access = True  # 允许远程登入
c.NotebookApp.open_browser = False    # 建议,默认不自动打开浏览器
c.NotebookApp.password = 'argon2:$argon2id$v=19$m=10240,t=10,p=8$7tpuYVkZ6Fmlwg0UqEEXZg$b73XgSIfxCjQEKcBcuBbaw'	# 输入生成的密钥
c.NotebookApp.port =8008            # 端口号冲突可以设置为9999


# 修改完将jupyter_notebook_config.py复制到容器的原位置
sudo docker cp jupyter_notebook_config.py docker_anaconda:/root/.jupyter/jupyter_notebook_config.py
# 3.再次进入容器
docker exec -it <容器 ID> /bin/bash
# 后台启动
nohup jupyter notebook --allow-root > jupyter.log 2>&1 &

五、镜像备份和移植

1.镜像备份到本地

docker commit -m="正式版" -a="李朋飞" 895d61c1f5ab water/conda:v1
docker tag 1a3ab3bd9547 water/conda:v1

其中895d61c1f5ab 是容器id, 1a3ab3bd9547是water/conda的镜像id

docker save -o MyWater.tar water/conda:v1

其中MyWater是我们的本地备份,可以下载,移植到其他服务器。

2.后服务器加载备份

sudo docker ps
sudo docker load --input MyWater.tar
docker run -d -p 8888:8888 -v /home/user/jupyter_notebooks:/home/jupyter_book 镜像id

3.镜像备份至镜像平台

这里国内常用的是阿里云镜像。具体使用请点击链接:

4.安装平台备份

这里国内常用的是阿里云镜像。具体使用请点击链接:
Docker保存,加载镜像及发布镜像到Docker Hub 阿里云

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: Docker是一种容器化技术,可以帮助用户在不同的操作系统上快速部署和运行应用程序。DeepStream是一种视频分析平台,借助GPU加速深度学习算法,可以进行智能视频分析和处理。 要在Docker部署DeepStream服务,可以按照以下步骤进行操作: 1. 首先,我们需要准备一个包含DeepStream服务的Docker镜像。可以从NVIDIA官方提供的Docker Hub仓库中获取DeepStream Docker镜像,也可以自己构建一个Docker镜像。 2. 在Docker中运行DeepStream服务之前,需要确保本地环境已经安装了Docker引擎。可以通过在终端中运行docker --version命令来检查Docker版本。 3. 在命令行中运行docker pull命令来下载DeepStream镜像。例如,可以运行docker pull nvcr.io/nvidia/deepstream:5.0-20.07-base命令来下载DeepStream 5.0版本。 4. 下载DeepStream镜像后,可以使用docker run命令创建一个DeepStream容器并启动DeepStream服务。例如,可以运行docker run --gpus all -it nvcr.io/nvidia/deepstream:5.0-20.07-base命令来启动DeepStream容器。 5. 在DeepStream容器中,可以通过运行deepstream-app命令来启动DeepStream应用程序。在运行deepstream-app命令之前,需要准备相应的DeepStream配置文件和模型。可以在容器中挂载相关文件夹,使其可在DeepStream应用程序使用。 总之,使用Docker部署DeepStream服务可以方便快捷地在不同的环境中运行DeepStream应用程序,提高应用部署和迁移的灵活性和效率。 ### 回答2: 要在Docker部署DeepStream服务,您需要执行以下步骤: 1. 安装Docker:首先,您需要在您的机器上安装Docker。您可以从Docker的官方网站下载并按照指示进行安装。 2. 下载DeepStream容器:DeepStream提供了已经配置好的Docker镜像。您可以在NVIDIA官方的Docker Hub上找到DeepStream的镜像。使用以下命令从Docker Hub上下载DeepStream镜像: ``` docker pull nvcr.io/nvidia/deepstream ``` 3. 运行DeepStream容器使用以下命令运行DeepStream容器: ``` docker run --gpus all -it -v <path-to-config-folder>:/root/config -p 8554:8554 -p 3000:3000 nvcr.io/nvidia/deepstream ``` 其中,`<path-to-config-folder>`是存储DeepStream配置文件的文件夹的路径。此命令会将配置文件夹挂载到容器中,并将DeepStream服务的端口映射到主机的8554和3000端口。 4. 配置DeepStream服务:在配置文件夹中,您可以编辑DeepStream的配置文件,例如`deepstream_app_config.yaml`和`streammux_config.txt`。根据您的需求进行相应的配置。 5. 运行DeepStream应用程序:在DeepStream容器中,您可以使用以下命令运行DeepStream应用程序: ``` deepstream-app -c /root/config/deepstream_app_config.yaml ``` 这将根据配置文件启动DeepStream应用程序并开始处理流数据。 通过上述步骤,您可以在Docker上成功部署和运行DeepStream服务。您可以通过访问主机的8554端口来查看DeepStream的视频流,并通过访问3000端口来获取DeepStream的分析结果。 ### 回答3: 首先,DeepStream是一个高性能的视频分析平台,能够实时处理视频流数据。而Docker是一个开源的容器化平台,可以轻松部署和管理应用程序。在Docker部署DeepStream服务可以提供更好的灵活性和可移植性。 要使用Docker部署DeepStream服务,首先需要安装Docker并确保Docker守护进程正在运行。接下来,我们需要创建一个Docker镜像。我们可以通过编写一个Dockerfile来定义镜像的构建过程。Dockerfile可以指定所需的基础镜像、安装DeepStream依赖项和配置环境变量。 在Dockerfile中,我们可以使用以下指令来安装DeepStream和其依赖项: 1. 使用FROM指令选择一个基础镜像,例如nvidia/cuda,以便支持深度学习的GPU加速。 2. 使用RUN指令执行必要的命令来安装DeepStream的依赖项,例如CUDA和CUDNN。 3. 使用COPY指令将DeepStream安装包复制到镜像中。 4. 使用RUN指令执行DeepStream的安装命令。 5. 使用CMD或ENTRYPOINT指令设置容器启动时要执行的命令,例如运行DeepStream服务。 一旦Dockerfile完成,我们可以使用docker build命令构建镜像。命令的语法如下: ``` docker build -t deepstream-image . ``` 这个命令将基于Dockerfile创建一个名为deepstream-image的镜像。 完成镜像构建后,我们可以使用docker run命令来运行DeepStream容器。命令的语法如下: ``` docker run --gpus all -it deepstream-image ``` 这个命令将创建一个DeepStream容器并启动其服务。我们可以使用适当的参数配置DeepStream服务,例如指定输入的视频源、选择要应用的分析模型等。 使用Docker部署DeepStream服务有许多好处。首先,它使部署变得更加简单和可重复。我们可以轻松地在不同的环境中部署相同的DeepStream服务。其次,Docker提供了隔离和资源管理,确保DeepStream服务与其他容器相互独立,不会互相干扰。此外,利用Docker的镜像版本控制,我们可以轻松地升级和回滚DeepStream服务。 总结而言,使用Docker部署DeepStream服务可以提供更好的可移植性和灵活性,同时简化了部署和管理过程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我辈李想

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值