赞
踩
算法部署时,常出现测试通过生产上环境各种问题的情况,很影响效率。
因此想采用docker的方式部署,市面上的安装都不是很顺利,因此本文总结各种安装方式,采用离线的方式安装,较为稳定且可行。
官方地址:Index of linux/static/stable/x86_64/docker-19.03.9.tgz
tar -zxvf docker-19.03.9.tgz
cp -p docker/* /usr/bin
① 在/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
重启守护进程
# systemctl daemon-reload
# systemctl start docker
查看docker状态
# systemctl status docker
设置开机启动
#systemctl enable docker
查看docker 信息
# docker version
以项目docker_test为例
pip freeze > requirements.txt
把导出的requirements.txt放在项目docker_test目录里
在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"]
docker build -t imagename Dockerfilepath
# Dockerfilepath:Dockerfile 所在文件夹名称,当前名录为 “.”
docker build -t lp_nlp .
docker run -t -i lp_nlp
①后台式启动方式
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
vim /etc/docker/daemon.json
写入:
{
"registry-mirrors":["http://mirror.taikangcloud.com"],
"insecure-registries":["registry.it.taikang.com","registry.taikangcloud.com"]
}
vim /etc/default/docker
写入:
systemctl restart docker
或
sudo service docker restart
docker login
申请docker hub的账号密码,以后镜像可上传管理。(类似github,不过是托管镜像)
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
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)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。