以前基本上是在ubuntu上实现docker部署应用,最近新接了个项目,要求全采用国产操作系统。于是选择了跟linxu比较友好的统信国产操作系统。
我们装的是服务器版本的1050d-AMD64,下载链接如下:统信UOS生态社区 - 打造操作系统创新生态
系统安装指导可参考:统信操作系统安装_统信系统安装_weixin_47016368的博客-CSDN博客
按F11进入选盘,从这里开始看起即可。
系统装好后我们要装显卡驱动:我们用的是两张英伟达T4卡,下载链接如下:
官方驱动 | NVIDIA
参数选择如下:
在驱动所在的路径下直接
sudo bash ./XXX.run
然后一路上OK,确定即可。这里表扬下服务器版本的系统,装好直接可用,不用重启。
服务器上有贴纸:
这个192.168.200.16是管理口的IP,业务口的IP需要自己设置。服务器一共三个网口,单独的是管理口,两个在一起的才是业务口,想连上网络要用业务口。因为我们装的是服务器版本,没有桌面的。只有命令行操作页面,所以有显示器的话完全可以直接接上显示器,鼠标键盘操作。如果通过管理口连接操作,需修改自己IP为192.168.200.1X(与默认同网段),ping192.168.200.16能ping通后,通过浏览器访问:192.168.200.16,输入账号密码均为ADMIN,然后即可登录管理后台
这里查询ip a 即可看业务口IP地址:
这里容易出个小问题,一开始厂家给我们设置的是自动获取IP地址,但是你用ip a和ifconfig eno2 都显示网络已连上,但是查不到IP地址的。这里可以通过nmtui进入网络设置
这里是键盘操作。把eno2编辑为我们需要的ip即可,注意设置自动连接,否则下次重启服务器还是不采用我们设置的ip。这里应该是有个bug的。
这里是空格键。
到这里我们终于把服务器eno2网口IP设置为10.168.1.143.这样可以通过ssh操作服务器。
参考链接:使用二进制方式安装Docker-腾讯云开发者社区-腾讯云
长期使用安装工具进行安装docker,今天用二进制方式手动安装一下docker环境。
二进制包下载地址:https://download.docker.com/linux/static/stable/x86_64/
#解压
tar xf docker-20.10.9.tgz (按你实际下载的版本号修改)
#拷贝二进制文件
cp docker/* /usr/bin/
#创建containerd的service文件,并且启动
cat >/etc/systemd/system/containerd.service <
[Unit]
Description=containerd container runtime
Documentation=https://containerd.io
After=network.target local-fs.target
[Service]
ExecStartPre=-/sbin/modprobe overlay
ExecStart=/usr/bin/containerd
Type=notify
Delegate=yes
KillMode=process
Restart=always
RestartSec=5
LimitNPROC=infinity
LimitCORE=infinity
LimitNOFILE=1048576
TasksMax=infinity
OOMScoreAdjust=-999
[Install]
WantedBy=multi-user.target
EOF
复制代码
systemctl enable --now containerd.service
准备docker的service文件
#准备docker的service文件
cat > /etc/systemd/system/docker.service <
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service containerd.service
Wants=network-online.target
Requires=docker.socket containerd.service
[Service]
Type=notify
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
Restart=always
StartLimitBurst=3
StartLimitInterval=60s
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TasksMax=infinity
Delegate=yes
KillMode=process
OOMScoreAdjust=-500
[Install]
WantedBy=multi-user.target
EOF
#准备docker的socket文件
cat > /etc/systemd/system/docker.socket <
[Unit]
Description=Docker Socket for the API
[Socket]
ListenStream=/var/run/docker.sock
SocketMode=0660
SocketUser=root
SocketGroup=docker
[Install]
WantedBy=sockets.target
EOF
复制代码
启动验证
#创建docker组
groupadd docker
#启动docker
systemctl enable --now docker.socket && systemctl enable --now docker.service
#验证
docker info
复制代码
创建docker配置文件
cat >/etc/docker/daemon.json <
{
"exec-opts": ["native.cgroupdriver=systemd"],
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn",
"http://hub-mirror.c.163.com"
],
"max-concurrent-downloads": 10,
"log-driver": "json-file",
"log-level": "warn",
"log-opts": {
"max-size": "10m",
"max-file": "3"
},
"data-root": "/var/lib/docker"
}
EOF
复制代码
systemctl restart docker
输入docker ps -a已经可以查到。
docker在安装run的时候遇到不能用gpu资源的报错解决:
安装Nvidia-docker2,让容器运行的时候用上GPU资源
参考链接:【nvidia-docker】nvidia-docker安装及报错解决_docker nvidia_单线程zz的博客-CSDN博客
安装源命令
distribution=$(. /etc/os-release;echo $ID$VERSION_ID) && curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg && curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
此处会报错:gpg: 找不到有效的 OpenPGP数据
可能原因:不能访问 https://nvidia.github.io/libnvidia-container/gpgkey
解决:打开此网址,会自动下载 gpgkey 文件,之后 cd 到下载路径下运行
sudo apt-key add gpgkey
成功后会输出 OK
再次运行上面安装源命令,依然报错,忽略,实际已经OK
sudo apt-get update
sudo apt-get install -y nvidia-docker2
这时候已经可以正常安装。
到这里可以开始正常运行docker
拉好镜像放到目录下:
(1)解压获取镜像:
sudo docker load < rstdetect_v1.9.3.autorun.tar
(2)安装:
sudo docker run --shm-size=16G --runtime=nvidia -itd -p 19008:8080 -p 16379:16379 rstdetect:v1.9.3.autorun
如果要对端口进行修改,加-p修改第一个8080
如下图,把端口改为19008
说明:itd是后台说明。已经设置自启动,并把RstDetect放到容器里面,否则还要映射-v
-v就是指路径映射的,宿主机的路径映射到docker里的路径,如果没有路径映射,你进入docker之后,就看不到宿主机上的镜像了
如果要映射位置加 -v /mnt:/mnt
参考:Linux 系统禁止内核自动更新_linux关闭自动更新_丶看我会发光的博客-CSDN博客
查看当前使用的内核
uname -a uname -r
查看安装了哪些内核
sudo dpkg --get-selections |grep linux-image
切换内核
#5.15.0-56是当前内核 5.13.0-30是想用的内核
sudo sed -i 's/5.15.0-56/5.13.0-30/g' /boot/grub/grub.cfg
删除多余内核
sudo apt-get remove linux-image-unsigned-5.15.0-56-generic
禁止系统内核自动更新
sudo apt-mark hold linux-image-5.13.0-30-generic sudo apt-mark hold linux-modules-extra-5.13.0-30-generic
出现原因以及解决办法
今天在使用linux终端命令的时候出现了这么一句话:sudo: 无法解析主机 :xxxxx
原因:修改了主机的ubuntu设备名称,后面没有配置好hosts文件,导致linux无法解析到您的主机地址
sudo: 无法解析主机:xxxxxx
解决方案:我在网上也查了一下,发现这个问题很简单,就是配置一下hosts文件就可以解决,具体操作如下:
sudo vim /etc/hosts
把下面的数字后面的xxxx修改成你现在的设备名称保存就可以了。
127.0.1.1 xxxx
sudo apt-get install yum
cd /home/rst/.ssh/known_hosts
把known_hosts改名做备份即可。
mv known_hosts known_hosts_old