0 背景
1.现场系统是linux内核,凝思6.0.80发行版
2.执行操作用的是xshell.
3.上传docker过程我用了navigator可视化工具了,也可以不用。可以用scp命令。
4.我已经在家里的服务器上用docker-24.0.7打包好了一份python项目,要在现场的凝思系统上部署。家里的服务器用的是Centos7。两边的系统我都用的是同一个版本的Docker.
一、给凝思6.0.80安装Docker
1.查看系统
cat /etc/os-release
2.Docker下载、上传
下载地址添加链接描述
https://download.docker.com/linux/static/stable/x86_64/
可自行选择最新版本。
我利用可视化工具navigator拖拽上传的
3.解压
/home/res6000/mw
tar -zxvf docker-24.0.7.tgz
注意版本和名字一定要写对,根据自己的情况来。
解压之后会有
4.将解压出来的docker文件复制到 /usr/bin/ 目录下
cp docker/* /usr/bin/
5.进入/etc/systemd/system/目录,并创建docker.service文件
cd /etc/systemd/system/
touch docker.service
6.打开docker.service文件,将一部分内容复制到里面
首先打开
vi docker.service
这里用到vim操作,点键盘A键进入可以输入insert模式,鼠标中键粘贴,退出编辑模式按Esc
一定要!!!!!
:wq
退出!!!,代表保存退出。回车,继续后续操作。
(也可以再vi docker.service查看一下是否保存好了,再按:q退出继续编辑)
需要复制粘贴的内容是
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd --selinux-enabled=false --insecure-registry=127.0.0.1
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 the docker process if it exits prematurely
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target
里面的内容不用修改,里面有一个--insecure-registry=127.0.0.1
不用修改,127.0.0.1代表指向自己的服务器。或者填写自己的服务器编码也行。
7.给docker.service文件添加最高执行权限
chmod 777 /etc/systemd/system/docker.service
8.重新加载配置文件(每次有修改docker.service文件时都要重新加载下)
systemctl daemon-reload
注意,如果报错[root@epri system]# systemctl daemon-reload -bash: systemctl: command not found
很可能是您使用的系统不是基于systemd的发行版,因此不支持systemctl命令。要确定您的系统是否基于systemd发行版,可以执行以下命令来检查系统使用的init系统:`ps -p 1 -o comm= 如果您在执行ps -p 1 -o comm=命令时看到的是init或upstart而不是systemd,那么您的系统可能使用的是传统的init系统而不是systemd。可能要采用别的处理方式。
`## 9.启动Docker
systemctl start docker
10.设置开机启动,如果服务器一直在运行,不需要这个。
systemctl enable docker.service
11.查看docker状态
systemctl status docker
如果出现绿色的aactive(running)代表安装成功。
二、执行在家里打包好的python镜像文件
(1)将本地autospliceimage.tar镜像传到服务器上
把它放到本地,传到现场服务器上。我用的是navigator
从本地D:\CloudPicture\experiment\ex\MultipleImgSplice\autospliceimage.tar用于服务器上镜像
拖拽到服务器/home/res6000/mw/autospliceimage.tar
(2)导入镜像
cd /home/res6000/mw
docker load -i autospliceimage.tar
3.查看已导入的镜像:
docker images
确认一下
4.确认输入输出文件夹
测试时不要忘记放输入文件!!!
1.在和镜像同样的目录下建立两个文件夹:input、output
2.input中有当日日期文件夹,文件夹下是需要拼接的图片
3.output文件夹中是空的
input里面一定要有**当日文件夹!!!!**代码里面要读当日文件夹下的图片
output文件夹中是空的
5.运行镜像
路径要和上面一致~
docker run -d --name mwwcontainer04251 -v /home/res6000/mw/input/:/app/input_images -v /home/res6000/mw/output/:/app/output_images mwwimage04231
需要修改的部分是两个路径分别是 /home/res6000/mw/input和/home/res6000/mw/output
要和服务器上路径保持一致
其中mwwimage04231为我的镜像名,mwwcontainer04251为我新命名的容器名,一个镜像可以对应很多容器,但每次要赋予不同的容器名称
检验是否正常输出
一定要稍微等一分钟,刷新!!!!
output里面一定要有这几项:
input里面是空的,代码处理之后会删除input中的图片!!