Docker离线安装及python算法部署详细介绍

算法部署时,常出现测试通过生产上环境各种问题的情况,很影响效率。

因此想采用docker的方式部署,市面上的安装都不是很顺利,因此本文总结各种安装方式,采用离线的方式安装,较为稳定且可行。

1、Docker离线安装
1.1下载docker安装包
官方地址:Index of linux/static/stable/x86_64/docker-19.03.9.tgz

1.2 解压缩
tar -zxvf docker-19.03.9.tgz

cp -p docker/* /usr/bin

1.3将docker注册为系统服务
① 在/usr/lib/systemd/system/目录下,创建docker.service文件
② 编辑docker.service文件

 vi /usr/lib/systemd/system/docker.service

[Unit]
Description=Docker Application Container Engine
Documentation=http://docs.docker.com
After=network.target docker.socket
[Service]
Type=notify
EnvironmentFile=-/run/flannel/docker
WorkingDirectory=/usr/local/bin
ExecStart=/usr/bin/dockerd \
-H tcp://0.0.0.0:4243 \
-H unix:///var/run/docker.sock \
--selinux-enabled=false \
--log-opt max-size=1g
ExecReload=/bin/kill -s HUP $MAINPID
# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
# Uncomment TasksMax if your systemd version supports it.
# Only systemd 226 and above support this version.
#TasksMax=infinity
TimeoutStartSec=0
# set delegate yes so that systemd does not reset the cgroups of docker containers
Delegate=yes
# kill only the docker process, not all processes in the cgroup
KillMode=process
Restart=on-failure
[Install]
WantedBy=multi-user.target

1.4重启生效
重启守护进程

# systemctl daemon-reload

# systemctl start docker

查看docker状态

# systemctl status docker

设置开机启动

#systemctl enable docker

查看docker 信息

 # docker version

2、封装python应用
以项目docker_test为例

2.1导出pip list下面的依赖包
pip freeze > requirements.txt

把导出的requirements.txt放在项目docker_test目录里

2.2编写Dockfile文件
在docker_test同目录下创建Dockfile文件,格式如下:

# 基于的基础镜像

FROM python:3.7

# 维护者信息

MAINTAINER name humz18

# 将docker_test目录下的代码添加到镜像中的code文件夹(两个目录参数中间有空格分开)

ADD ./lp_nlp /code/lp_nlp

# 设置code文件夹是工作目录

WORKDIR /code/lp_nlp

# 安装支持

RUN pip install --user -r requirements.txt -i Simple Index

EXPOSE 9013

#docker运行时即运行app.py文件
CMD ["python","webserver_nlp_interface_9013.py"]

2.3 制作镜像
 docker build -t imagename Dockerfilepath

# Dockerfilepath:Dockerfile 所在文件夹名称,当前名录为 “.”

docker build -t lp_nlp .

2.4运行镜像
docker run -t -i lp_nlp

2.5 build image 和 启动容器
①后台式启动方式

docker run -d -p 9013:9013 lp_nlp

②交互式启动方式

docker run -i -t -p 9013:9013 lp_nlp

③日志输出到本地(挂载方式)

docker run -d --privileged=true -v /本地日志路径:/容器日志路径 -p 9008:9008 registry.taikangcloud.com/icqip-docker-t/ocr_bill_structure:v1

3、设置docker泰康源镜像
3.1 进入daemon.json文件、修改镜像源
vim /etc/docker/daemon.json  

写入:

{
"registry-mirrors":["http://mirror.taikangcloud.com"],
"insecure-registries":["registry.it.taikang.com","registry.taikangcloud.com"]
}

vim /etc/default/docker
写入:

3.2 重启docker
systemctl restart docker

sudo service docker restart

4、登录harbor
docker login

申请docker hub的账号密码,以后镜像可上传管理。(类似github,不过是托管镜像)

5、Docker使用gpu
5.1安装NVIDIA-CONTAINER-RUNTIME

在Migration Notice | nvidia-container-runtime查看支持的操作系统和版本,并根据对应选项,添加源,因为我是centos7,所以添加方式为:

distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-container-runtime/$distribution/nvidia-container-runtime.repo | \
sudo tee /etc/yum.repos.d/nvidia-container-runtime.repo

然后直接yum install 就可以了

sudo yum install nvidia-container-runtime

进行测试,如果能成功出现显卡信息就可以了

docker run -it --rm --gpus all centos nvidia-smi

6、docker常用命令
1、docker中 启动所有的容器命令

docker start $(docker ps -a | awk '{ print $1}' | tail -n +2)

2、docker中 关闭所有的容器命令

docker stop $(docker ps -a | awk '{ print $1}' | tail -n +2)

3、docker中 删除所有的容器命令

docker rm $(docker ps -a | awk '{ print $1}' | tail -n +2)

4、docker中 删除所有的镜像

docker rmi $(docker images | awk '{print $3}' |tail -n +2)

5、停止所有的容器

docker stop $(docker ps -a -q)

6、删除所有的容器(只删除单个时把后面的变量改为container id即可)

docker rm $(docker ps -a -q)
 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值